私はHaskellの学習を始めましたが、リストのデカルト積がどのように機能するかを理解するのに問題があります
ここに想定されるコードがあります
cprod = foldr f [[ ]]
where f xs yss = foldr g [ ] xs
where g x zss = foldr h zss yss
where h ys uss = (x : ys) : uss
正確に得られないのは、私が理解している変数名を置き換えた最後の関数です
mycart = foldr f [[]]
where f currentresult listelem = foldr g [] currentresult
where g currentresultonstep currentresultelem = foldr h currentresultelem listelem
where h currentresultelemonstep onelistelem = (currentresultonstep:currentreslteleemonstep):onelistelem
最後の文字列はこのようなものであるべきではありませんか?
where h currentresultelemonstep onelistelem = (onelistelem:currentresultelemonstep):currentresultonstep
現在の結果の要素の先頭にリストの要素を追加しようとすると?