首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哈斯克尔无法与名单相匹配

哈斯克尔无法与名单相匹配
EN

Stack Overflow用户
提问于 2015-06-20 06:36:53
回答 1查看 71关注 0票数 0

我想尝试一些haskell,从99个haskell问题开始,目前我被困在13:一个列表的游程编码(虽然我的问题更一般)

代码语言:javascript
复制
--datatype
data En a = Multiple (Int, a) | Single a | Empty
    deriving (Show)

--helper
getnum :: (Eq a9) => [a9] -> Int
getnum [] = 0
getnum (x:xs)
    | x == head xs = 1 + getnum xs
    | otherwise = 1

encodeDirect :: [a] -> [En a]
endoceDirect xxs@(x:xs)
    | getnum xxs == 1 = Single x : encodeDirect xs
    | otherwise = Multiple ((getnum xxs), x) : encodeDirect (drop (getnum xxs) xxs)
encodeDirect _ = [Empty]

这应该会给出最终为空的解决方案,但是当我用ghci的任何类型的list/string调用encodeDirect时,它就会直接掉下来,我得到的就是空的。

为什么xxs@(x:xs)不匹配任何列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-20 07:46:21

它至少会给您一个关于函数endoceDirect的警告,这当然与encodeDirect无关。

顺便说一句,“万无一失”的案子通常是个坏主意,

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30951067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档