其目的是根据元组的第二个元素对元组(名称)列表进行排序。
module Learn where
import Data.List
names = [("Ian", "Curtis"),("Bernard","Sumner"),("Peter","Hook"),("Stephen","Morris")]
compareLastNames name1 name2 = if lastName1>lastName2
then GT else if lastName1<lastName2 then LT else EQ where lastName1=snd name1 lastName2=snd name2然后我会打电话给
sortBy compareLastNames namesGHCI不想吞下这个文件,并在"=“上发誓。找不到enter image description here的原因
发布于 2020-03-29 09:11:14
您需要在定义函数时使用适当的空格:
compareLastNames name1 name2 = if lastName1>lastName2then GT else if lastName1<lastName2 then LT else EQ
where
lastName1=snd name1
lastName2=snd name2不过,使用模式匹配来定义这要简单得多,因为避免了对snd的显式调用。
compareLastNames (_, lastName1) (_, lastName2) = if lastName1 > lastName2 then GT else if lastName1<lastName2 then LT else EQ您还可以使用前奏中的compare函数:
compareLastNames (_, lastName1) (_, lastName2) = compare lastName1 lastName2或Data.Ord.comparing
import Data.Ord
compareLastNames name1 name2 = comparing snd name1 name2
-- compareLastNames = comparing sndhttps://stackoverflow.com/questions/60908984
复制相似问题