0
たとえば、テーブルtab = [(1,11), (2,22), (3,33)]
と2つの機能があります。最初のものは、テーブルとIntegerをパラメータとして取り、Integerをテーブルの値で置き換えます。 Integerがテーブル上にあると仮定しましょう。Haskellで明示的なパラメータなしで関数を書くことは可能ですか?
replace :: [(Int, Int)] -> Int -> Int
replace t i = snd $ head [x | x <- t, fst x == i]
第二の機能は、テーブルの値で、リストから1, 2, 3
の出現をすべて置き換えます。
replaceAll :: [(Int, Int)] -> [Int] -> [Int]
まず私が得た:
replaceAll = \tab lst -> foldl(\acc x -> acC++ [replace tab x]) [] lst
その後、
replaceAll = \tab -> foldl(\acc x -> acC++ [replace tab x]) []
は、ラムダ関数せずにこれを書くための方法はありますか? 編集:折り畳み機能を使用する必要はありません。
あなたは本当にそのコードのポイントフリーバージョン(http://pointfree.io/): 'replaceAll = flip foldl([])を望んでいません。フリップ((。)。(++))。フリップフリップ([])。 ((::))。置き換える – Zeta