特别是一个字符串.所以它会采取["so", "what", "and", "so", "for" "so"]并返回["so", "so", "so"].我的问题是我的函数返回一个与输入的列表相同的列表.
这是所有相关的代码:
lookAhead :: [String] -> String
lookAhead [] = []
lookAhead (c:cs) = c
groupFirst :: [String] -> [String]
groupFirst [] = []
groupFirst (x:xs)
| lookAhead xs == x = x : (groupFirst ((lookAhead xs):(tail xs)))
| lookAhead xs /= x = x : (groupFirst xs)
| lookAhead xs == [] = x : []
Run Code Online (Sandbox Code Playgroud)
小智 6
trail作为头元素 - 等式 - 谓词filter:
trail :: Eq a => [a] -> [a]
trail [] = []
trail (x : xs) = x : filter (== x) xs
Run Code Online (Sandbox Code Playgroud)
trailBy使用Schwartzian变换和memoization:
trailBy :: Eq b => (a -> b) -> [a] -> [a]
trailBy _ [] = []
trailBy f (x1 : xs) = let x1f = f x1
in x1 : filter (\ x -> f x == x1f) xs
Run Code Online (Sandbox Code Playgroud)
trail = trailBy id,在哪里id x = x,Haskell的身份功能.
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |