Haskellで惨敗
Haskellで組み合わせ探索を書いたら途中で分けわからんくなった
なんか出来てる気がするが超遅い、かといって早くする方法がさっぱりわからなかったりする
手続き型言語でやり直したらすぐ出来た(・ω・;)
でも悔しいのでVBでfoldlとfoldrを書いてみた
キモーイ、たぶんVBじゃぁ使わないな
'<Extension> Public Shared Function FoldLeft(Of T, R)(xs As IEnumerable(Of T), f As Func(Of R, T, R), acc As R) As R Dim xxs = xs.GetEnumerator Do While xxs.MoveNext Dim v = xxs.Current acc = f(acc, v) Loop Return acc End Function '<Extension> Public Shared Function FoldRight(Of T, R)(xs As IEnumerable(Of T), f As Func(Of R, T, R), acc As R) As R Dim xf As Func(Of IEnumerator(Of T), R) = Function(a As IEnumerator(Of T)) As R If a.MoveNext Then Dim v = a.Current Return f(xf(a), v) Else Return acc End If End Function Return xf(xs.GetEnumerator) End Function