ドット(.)
とドル記号の違いは何ですか($)
?
私の理解では、どちらも括弧を使用する必要がないようにするための構文上の糖衣です。
ベストアンサー1
この$
演算子は括弧を避けるためのものです。この演算子の後に来るものは、前に来るものより優先されます。
たとえば、次のような行があるとします。
putStrLn (show (1 + 1))
これらの括弧を削除したい場合は、次の行のいずれかでも同じ効果が得られます。
putStrLn (show $ 1 + 1)
putStrLn $ show (1 + 1)
putStrLn $ show $ 1 + 1
演算子の主な目的.
は括弧を避けることではなく、関数を連結することです。これにより、右側に表示されるものの出力を左側に表示されるものの入力に結び付けることができます。これにより、通常は括弧の数が少なくなりますが、動作が異なります。
同じ例に戻ります。
putStrLn (show (1 + 1))
(1 + 1)
入力がないため、.
演算子と一緒に使用することはできません。show
を受け取っInt
て を返すことができますString
。putStrLn
を受け取りString
、 を返すことができますIO ()
。
show
次のように連鎖することができますputStrLn
:
(putStrLn . show) (1 + 1)
括弧が多すぎる場合は、次の演算子を使用して括弧を削除します$
。
putStrLn . show $ 1 + 1