私はこの機能を持っている:Haskellでの文字列連結を簡略化するには?
myF :: String -> String
myF arg1 = "const" ++ arg1
は、それを単純化する方法はありますか?私はそれがオペレータ "と関係しているかもしれないと思う。私はここでそれをどのように適用するかを理解できません。
私はこの機能を持っている:Haskellでの文字列連結を簡略化するには?
myF :: String -> String
myF arg1 = "const" ++ arg1
は、それを単純化する方法はありますか?私はそれがオペレータ "と関係しているかもしれないと思う。私はここでそれをどのように適用するかを理解できません。
カリー化の魔法:
myF :: String -> String
myF = (++) "const"
または(@jamshidhで述べたように)
myF :: String -> String
myF = ("const" ++)
説明我々は(++)関数は二つの引数を取ると言う
実際にはHaskellのすべての関数は引数を1つしか取っていません。 (++)関数のシグネチャを見てみましょう:
(++) :: String -> String -> String
我々は記述することができます(++)、またはそのような演技として「連結」機能:
「1つの文字列とリターンを取ります我々は
myF = (++) "const"
を言うときに我々は(++)関数に最初の文字列を適用した結果の機能を割り当てている別の文字列に を連結(合流)2つの文字列を取り、その文字列を返す関数」
myF
に機能します。これは"部分的なアプリケーション"として知られています。
myF arg = "const" ++ arg
我々が原因で部分的に適用される「連結から「引数」を省くことができます。私たちはこのような関数の末尾に引数を含める必要はありませんが、これはまだ完全に罰金です
お知らせ"我々はもう一つの文字列引数を期待していることをすでに知っている。
もちろん、あなたはもちろん、直接( "const" ++) – jamshidh
@jamshidhとしてコードに直接使用することができます!答えにそれを加えた、ありがとう。 –