私は99 Haskell ProblemsのHaskellコードを変換してPurescriptを学習しようとしていますが、すぐに解決方法を知っている状況になっていますが、単純にtoo ugly™。ここで問題10,11,12のハスケルコードです。基本的には、いくつかのRLEエンコードとデコード機能:私はすぐに学んだことをPurescriptのIdiomatic Haskell RLE
-- Problem 10
rle :: Eq α => [α] -> [(Int, α)]
rle [] = []
rle (x:xs) = let (h, t) = span (== x) xs
in (length h + 1, x) : rle t
-- Problem 11
data RleItem α = Pair Int α | Single α deriving (Show)
encode :: Eq α => [α] -> [RleItem α]
encode = map unpack . rle
where unpack (1, x) = Single x
unpack (y, x) = Pair y x
-- Problem 12
decode :: [RleItem α] -> [α]
decode = concatMap unroll
where unroll (Pair y x) = replicate y x
unroll (Single x) = [x]
:
は- 何
[]
速記ありません。 - タプルは
(,)
です。 - 明示的に
forall
で多型関数を数量化する必要があります。 cons (:)
と一致するパターンは、Array
タイプではありません。- ...
ので、ここで質問です:Purescriptで上記溶液を書くための最も慣用的な方法は何ですか?