読者です 読者をやめる 読者になる 読者になる

はわわーっ

はわわわわっ

arrow 使ってみる

Haskell の Arrow の使い方とか。といっても、よくわかってないので Control.Arrow の関数をいくつか使ってみるだけ。Arrow は今のところ、タプルに関数を作用させる時に便利になるくらいのイメージ。

まず、first と second。

first :: Arrow a => a b c -> a (b, d) (c, d)
second :: Arrow a => a b c -> a (d, b) (d, c)

それぞれ、受け取った関数をタプルの最初の要素と次の要素に作用させる。

import Control.Arrow

main :: IO ()
main = do
  print $ first (+3) (1, 2)
  print $ second (+3) (1, 2)
(4,2)
(1,5)

次に (***)。

(***) :: Arrow a => a b c -> a b' c' -> a (b, b') (c, c')

関数を2つ受け取ってタプルの1番目、2番目に作用する。

import Control.Arrow

main :: IO ()
main = do
  print $ (+3) *** (*10) $ (1, 2)
(4,20)

あと、(&&&)。

(&&&) :: Arrow a => a b c -> a b c' -> a b (c, c')

関数を2つ受け取ってある値に適用したものをタプルの要素にする。

import Control.Arrow

main :: IO ()
main = do
  print $ (+3) &&& (*10) $ 2
(5,20)