Есть ли в Scala оператор, похожий на оператор $ Haskell? - PullRequest
12 голосов
/ 15 сентября 2010

Есть ли у Scala оператор, аналогичный Haskell's $?

-- | Application operator.  This operator is redundant, since ordinary
-- application @(f x)@ means the same as @(f '$' x)@. However, '$' has
-- low, right-associative binding precedence, so it sometimes allows
-- parentheses to be omitted; for example:
--
-- >     f $ g $ h x  =  f (g (h x))
--
-- It is also useful in higher-order situations, such as @'map' ('$' 0) xs@,
-- or @'Data.List.zipWith' ('$') fs xs@.
{-# INLINE ($) #-}
($)                     :: (a -> b) -> a -> b
f $ x                   =  f x

1 Ответ

18 голосов
/ 15 сентября 2010

Да, написано "apply"

fn apply arg

Для этого нет стандартного оператора пунктуации, но было бы достаточно просто добавить оператор через pimping библиотеки.

  class RichFunction[-A,+B](fn: Function1[A, B]){ def $(a:A):B = fn(a)}
  implicit def function2RichFunction[-A,+B](t: Function1[A, B]) = new RichFunction[A, B](t)

InВ общем, хотя код Scala гораздо плотнее, чем Java, он не такой плотный, как на Haskell.Таким образом, создание операторов типа «$» и «.» Приносит меньшую отдачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...