以下の関数は、セット(リスト)のパワーセットを返します。F#Powerset関数
let rec powerset = function
| [] -> [[]]
| x::xs -> List.collect (fun sub -> [sub; x::sub]) (powerset xs)
私はなぜそれが動作するのか分かりません。私は再帰を理解する。私はList.collectの動作も理解しています。私はpowersetのインスタンスが[[]]を返すまで再帰が続くことを知っています。しかし、私はそのポイントの後に返された値をトレースしようとし、私は決して完全なパワーセットを取得しません。
大きな説明!今私はそれの背後にある理由を理解しています。どうもありがとう。 – topstarterrhp