嗨,我是 Haskell 初学者,我真的迷路了。这是我的任务,它要求我使用更高的订单功能执行以下操作
Main> mySort (<) [1,5,3,6,4,1,3,3,2]
[1,1,2,3,3,3,4,5,6]
Main> mySort (>) [1,5,3,6,4,1,3,3,2]
[6,5,4,3,3,3,2,1,1]
Main> mySort longerWord [“Hello”, “The”, “a”, “Daniel”, “Declarative”]
[“Declarative”, “Daniel”, “Hello”, “The”, “a”]
首先,我想我应该做一个函数来区分它是 < , > 还是 longWord
checkConditionStr::String->Int
checkConditionStr str
|str=="(<)" =1
|str=="(>)" =2
|str=="longerWord" =3
但该示例没有引号(即 mysort (<) not my sort"(<)" 所以这是我的第一个问题。我写了这个函数但它没有编译。否则是更长的Word
checkCondition::Ordering->Int
checkCondition ord
|ord==(<) =1
|ord==(>) =2
|otherwise =2
其次,我仍然难以理解高阶函数。这有意义吗?
mySort::(String->Int)->[a]->[a]
mySort i list
|i==1 map (sortBy compare) list
|i==2 map (sortBy(flip compare)) list