Haskell'de F # 'ın ileri boru operatörü ( |>
) ile ( & ) arasında olması gerektiğini düşünüyorum .
// pipe operator example in haskell
factorial :: (Eq a, Num a) => a -> a
factorial x =
case x of
1 -> 1
_ -> x * factorial (x-1)
// terminal
ghic >> 5 & factorial & show
( &
) Operatörünü beğenmezseniz, F # veya Elixir gibi özelleştirebilirsiniz:
(|>) :: a -> (a -> b) -> b
(|>) x f = f x
infixl 1 |>
ghci>> 5 |> factorial |> show
Neden infixl 1 |>
? Data-Function (&) belgesine bakın
infixl = infix + sol çağrışım
infixr = infix + doğru ilişkilendirilebilirlik
(.)
( .
) işlev bileşimi anlamına gelir. Matematikte (fg) (x) = f (g (x)) anlamına gelir .
foo = negate . (*3)
// ouput -3
ghci>> foo 1
// ouput -15
ghci>> foo 5
eşittir
// (1)
foo x = negate (x * 3)
veya
// (2)
foo x = negate $ x * 3
( $
) operatörü ayrıca Data-Function ($) içinde tanımlanır .
( .
) Hight Order Function
veya oluşturmak için kullanılır closure in js
. Örneğe bakın:
// (1) use lamda expression to create a Hight Order Function
ghci> map (\x -> negate (abs x)) [5,-3,-6,7,-3,2,-19,24]
[-5,-3,-6,-7,-3,-2,-19,-24]
// (2) use . operator to create a Hight Order Function
ghci> map (negate . abs) [5,-3,-6,7,-3,2,-19,24]
[-5,-3,-6,-7,-3,-2,-19,-24]
Vay canına, Daha az (kod) daha iyidir.
Karşılaştır |>
ve.
ghci> 5 |> factorial |> show
// equals
ghci> (show . factorial) 5
// equals
ghci> show . factorial $ 5
Bu arasındaki farklıdır left —> right
ve right —> left
. ⊙﹏⊙ |||
İnsanlaştırma
|>
ve &
daha iyi.
Çünkü
ghci> sum (replicate 5 (max 6.7 8.9))
// equals
ghci> 8.9 & max 6.7 & replicate 5 & sum
// equals
ghci> 8.9 |> max 6.7 |> replicate 5 |> sum
// equals
ghci> (sum . replicate 5 . max 6.7) 8.9
// equals
ghci> sum . replicate 5 . max 6.7 $ 8.9
Nesne yönelimli dilde işlevsel programlama nasıl yapılır?
lütfen http://reactivex.io/ adresini ziyaret edin
Bilişim Destek :
- Java: RxJava
- JavaScript: RxJS
- C #: Rx.NET
- C # (Birlik): UniRx
- Scala: RxScala
- Clojure: RxClojure
- C ++: RxCpp
- Lua: RxLua
- Yakut: Rx.rb
- Python: RxPY
- Git: RxGo
- Harika: RxGroovy
- JRuby: RxJRuby
- Kotlin: RxKotlin
- Swift: RxSwift
- PHP: RxPHP
- İksir: reaksif
- Dart: RxDart
&
Haskell'in olduğunu belirtir|>
. Bu ipin derinliklerine gömüldü ve keşfetmem birkaç günümü aldı. Kodunuzu takip etmek için doğal olarak soldan sağa okuduğunuz için çok kullanıyorum.