【发布时间】:2013-06-06 15:42:15
【问题描述】:
我是 Haskell 的新手。
我有这段代码(我对九十九个 Haskell 问题的其中一个练习的解决方案)
data Structure a = Single a | Multiple (a, Int) deriving (Show)
encodeM ::(Eq a)=> [a]->[Structure a]
encodeM l = map(\x -> (let size = length x
--h = head x
in if size>1 then Multiple ( head x, size) else Single (head x)
)
) $ group l
当我取消注释“-h = head x”时,我得到:“输入 `=' 上的解析错误”
但是
xxx l= let size = length l
h = head l
in size
工作正常,为什么当我在 lambda 中使用带有多个语句的“let”时它无法编译?
我试图用 where 替换 let
encodeM2 ::(Eq a)=> [a]->[Structure a]
encodeM2 l = map(\x->if si>1 then Multiple ( head x, si) else Single (head x)
where si = length x)
但它也不能编译,有什么问题?
【问题讨论】:
标签: haskell