这个表达:

sort words "fire water earth fire"

--- 给出了这个错误 ---
Couldn't match expected type `[a]'
against inferred type `GHC.Base.String -> [GHC.Base.String]'

有人可以向我解释这里发生了什么以及如何优雅地表达 sort.words 吗?

最佳答案

你要这个:

sort (words "fire water earth fire")

当你做
sort words "fire water earth fire"

它实际上在做
(sort words) "fire water earth fire"
sort 需要一个列表( [a] ),但你给它 words ,它是一个函数接受一个字符串并返回一个字符串列表( String -> [String] ),因此错误消息(它不能将 String -> [String] 视为任何列表)。

你也可以这样做:
sort $ words "fire water earth fire"

这相当于第一个版本,可能看起来更整洁。

关于haskell - sort.words 的新手,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8858059/

10-10 23:25