このステートメントをインタプリタで実行します
foldr (\x (a, b) -> if x == '_' then (a+1, [((div a 3), (mod a 3))] ++ b) else (a, b)) (0, []) "_______OX"
私は出力が
(7,[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2.0)])
ただし、出力は
(7,[(2,0),(1,2),(1,1),(1,0),(0,2),(0,1),(0,0)])
私は何を間違っているのですか。私の知る限り、foldrはリストの最後の要素から始まり、私のラムダ関数はそれをアキュムレーターリストの先頭に追加します。したがって、最初の要素として(0,0)を取得する必要があります。しかし、それは反対で、私は困惑しています。:(
また、小さな質問-このような質問にタグを割り当てるにはどうすればよいですか?