cod*_*dde 2 lambda haskell either
我正在尝试执行以下操作:
processRights :: [Either a Int] -> Int
processRights xs = map (\Right x -> x, \Left x -> 0) xs
Run Code Online (Sandbox Code Playgroud)
所以,xs是 a [Either a Int],我希望生成一个相同长度的映射列表,其中每个 int 都有相同的 int,否则为 0。
我怎样才能做到这一点?
您可以使用either,id和const函数:
processRights :: [Either a Int] -> [Int]
processRights = map $ either (const 0) id
Run Code Online (Sandbox Code Playgroud)
either为any 运行第一个函数Left,为any 运行第二个函数Right。
id返回其参数。
const忽略它的第二个参数并返回它的第一个参数,它的预期用途是让egconst 0成为一个忽略它的参数并只返回0的函数。