小编THK*_*THK的帖子

F#算法中出现意外的NullReferenceException

我正在尝试使用F#在Richard Bird的功能算法设计珍珠中重写一些Haskell算法,并且遇到了我不理解的NullReferenceException.

Haskell算法:

unmerges       :: [a] -> [([a], [a])]
unmerges [x,y]  = [([x], [y]), ([y], [x])]
unmerges (x:xs) = [([x], xs), (xs, [x])] ++
                   concatMap (add x) (unmerges xs)
                   where add x (ys, zs) = [(x:ys, zs), (ys, x:zs)]
Run Code Online (Sandbox Code Playgroud)

...按预期工作:

*Main> unmerges [1,2]
[([1],[2]),([2],[1])]
*Main> unmerges [1,2,3]
[([1],[2,3]),([2,3],[1]),([1,2],[3]),([2],[1,3]),([1,3],[2]),([3],[1,2])]
Run Code Online (Sandbox Code Playgroud)

我的F#版本:

let concatMap f m = List.map (fun x -> f x) m |> List.concat

let rec unmerges (ints: 'a list) : ('a list * 'a list) list = 
    match …
Run Code Online (Sandbox Code Playgroud)

algorithm mono f# haskell functional-programming

9
推荐指数
1
解决办法
317
查看次数

标签 统计

algorithm ×1

f# ×1

functional-programming ×1

haskell ×1

mono ×1