最短のコードを優先するreglementationがあるため、非常に短いコードを作成しようとしました。リストを同じ順序で昇順リストと降順リストの新しいリストに変換する関数を作成する必要があります。たとえば、次のようになります。[1,6,2,1,7,3,2,8,4]
、になります[[1,6],[2,1],[7],[3,2],[8],[4]]
だから私は次のことをしようとしました:
func :: Ord a => [a] -> [[a]]
func xs = f1 d [a]
f1 [] ys = [c]
f1 xs ys | a >= b = d `f1` a:ys
| otherwise = c: d `f2` [a]
f2 [] ys = [c]
f2 xs ys | a < b = d `f2` a:ys
| otherwise = c : d `f1` [a]
where a = head xs
b = head ys
c = reverse ys
d = tail xs
しかし、私は得る
parse error on input '='
にline "b = head ys"
。
whereブロックで複数の関数を定義することは可能だと思いましたか?
他のくぼみは、多くのようなエラーを作成しました
not in scope 'a'
not in scope 'b'
not in scope 'c'
not in scope 'd'
また
parse error on input 'b'
いくつかのトークンを保存する/コードを短くするために、そのようにする必要があります。