このような関数を定義できます
method1 :: Int -> Int -> Int
method1 a b = a + b
main = print $ 1 `method1` 2
関数を呼び出すたびに `` を使用したくないが、中置式で使用したい場合はどうすればよいですか?
method1 :: Int -> Int -> Int
method1 a b = a + b
main = print $ 1 method1 2
このような関数を定義できます
method1 :: Int -> Int -> Int
method1 a b = a + b
main = print $ 1 `method1` 2
関数を呼び出すたびに `` を使用したくないが、中置式で使用したい場合はどうすればよいですか?
method1 :: Int -> Int -> Int
method1 a b = a + b
main = print $ 1 method1 2
簡単に言えば、できません。a b c
if b
is潜在的に中置の恐ろしいあいまいさを想像してみてください。ただし、これを行うオペレーターを定義できます。これらのいずれかが機能します
a |+| b = method1
(|+|) a b = method1 a b
(|+|) = method1
それで
a |+| b === a `method1` b === method1 a b
Haskell の中置演算子に使用できる文字は限られています。
:|!@#$%^&*-+./<>?\~
一般的なライブラリである lens には、長い名前の同義語として機能する多数の演算子があります。それはかなり一般的です。ただし、判断を下してください。そうしないと、Haskell よりも多くの perl を使用することになります :)
これには、CPP マクロを使用する、卑劣で厄介な「解決策」があります。例えば:
{-# LANGUAGE CPP #-}
#define method1 `themethod`
module Main where
themethod x y = x + y
someValue = 3 method1 4
これはコンパイルされ、ghci ではsomeValue
7 になります。ただし、これを行わないでください...