【发布时间】:2018-03-22 09:00:28
【问题描述】:
所以我正在尝试创建一个函数,该函数接受单词列表并在新列表中返回字谜。这是我目前所拥有的:
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
where
lesser = filter (< p) xs
greater = filter (>= p) xs
sub(a,[]) = []
sub(a,b:c) = if a == b then c else b:(sub(a,c))
sublist([],a) = a
sublist(a:b,c) = sublist(b,sub(a,c))
anagram a b = quicksort (a) == quicksort (b)
find a,[] = nil
find (a, b:c) = if anagram a b then b:(find(a,c)) else find(a,c)
listana [] = nil
listana (a:c) = list:(listana(sublist(list,a:c)))
where list = a:(find(a,c))
我很确定我的查找功能有问题。 哦,我是 Haskell 的新手,所以请放轻松。
【问题讨论】:
-
尝试向您的函数添加显式类型签名。 GHC 的错误消息应该(希望)帮助您找到代码的问题。此外,在 Haskell 中,您可以编写一个带有 2 个参数 (
f :: (a, b) -> c) 的函数作为柯里化函数 (f :: a -> b -> c)
标签: sorting haskell recursion tail-recursion anagram