我正在尝试编写一个Haskell函数,它接受一个字符串列表,比较列表中的所有字符串,并输出一个长度最长的字符串列表.我想在没有任何预定义函数或导入的情况下执行此操作,我想尝试以递归方式计算出来.例如:
longeststrings["meow","cats","dog","woof"] -> ["meow","cats","woof"]
Run Code Online (Sandbox Code Playgroud)
我知道这是一个愚蠢的例子,但我认为这证明了这一点.
我想做点什么
longeststrings:: [string] -> [string]
longeststrings [] = []
longeststrings [x:xs] = if (x > xs) x:longeststrings[xs]
Run Code Online (Sandbox Code Playgroud)
但我不知道如何只从列表中取出最大的字符串,或删除最小的字符串.我将不胜感激任何帮助.
我想创建一个函数,从int的列表返回每个第三个int而不使用任何预定义的函数.例如,everyThird [1,2,3,4,5] --> [1,4]
everyThird:: [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
我可以继续使用tail迭代列表并每隔三次调用追加到一个新列表吗?我是Haskell的新手并且对所有这些感到非常困惑