В эти дни я изучаю Haskell, и у меня появилась идея использовать функцию, такую как метод ООП.
Сначала определите оператор, как показано ниже:
(//) :: a -> (a -> b) -> b
x // f = f x
Как видите, этот оператор меняет порядок функции f
, а аргумент x
затем применяет его. Например, equals
может быть определено как:
equals :: Eq a => a -> a -> Bool
equals = \x -> \y -> x == y
comparison = (1 + 2) // equals 3 -- True
Теперь вот мой вопрос. Это хороший подход с использованием функции Haskell, такой как метод ООП? Это означает, что инверсия функции и (первый) аргумент хороши или нет.
UPDATE
Здесь регистр обратного удара (`
) недоступен.
data Person = Person { name :: String }
myself = Person "leafriend"
тогда
> name myself
"leafriend"
> myself // name
"lefirend"
> myself `name`
ERROR - Syntax error in expression (unexpected end of input)