Haskellの矢印の記号「->」の読み方
Haskellの勉強メモ。
(p.120) 関数の型
->という矢印のような表現が型の部分に出てきました。
関数の型はこのように「何かの型->何かの型」という型で表され、「矢印の元の型の値を受け取って、矢印の先の型の値になる」関数であることを意味します。
で、この「->」という矢印の記号をHaskellでは何と呼ぶのか?記号の読み方が説明されていなかったので調べてみました。
他のプログラミング言語だと「->」という記号には「アロー演算子」などという名前が付けてあります。
Haskellでも「->」という記号は「アロー演算子」と呼ぶのでしょうか?
このキーワードで検索しても、よく分かりませんでした。
このキーワードで検索したら、以下のような情報が出てきました。
-> -> 型コンストラクタ。カインド
他にもいろんな記号が紹介されていました。たくさんありますね!
記号 | 読み方(意味、例) |
---|---|
! | アレーのインデクス。(!) :: Ix i => Array i e -> i -> e |
! | 正格(strict)フラグ。foo !x -> foo strict x。とか |
!! | リストのインデクス。(!!) :: [a] -> Int -> a |
$ | カッコのかわり ($) :: (a -> b) -> a -> b |
$! | カッコのかわりの正格バージョン。$!以降が先に評価される |
&& | 論理積。(&&) :: Bool -> Bool -> Bool |
() | カッコ。ユニット型。() :: () |
* | 掛け算。(*) :: Num a => a -> a -> a |
*, #, ?, ??, ~ | カインド。型制約 |
>, <>, <* | アプリカティブ。Applicative f => f a -> f b -> f b、f (a -> b) -> f a -> f b、f a -> f b -> f a |
++ | concat。(++) :: [a] -> [a] -> [a] |
, | カンマ。タプル型コンストラクタ。(,) :: a -> b -> (a, b) |
-> | 型コンストラクタ。カインド |
. | ピリオド。パイプ。関数の合成。(.) :: (b -> c) -> (a -> b) -> a -> c |
/ | 割り算。(/) :: Fractional a => a -> a -> a |
/= | 論理否定。(/=) :: Eq a => a -> a -> Bool |
: | コロン。コンス。リスト型コンストラクタ。(:) :: a -> [a] -> [a] |
:: | (の)タイプ(は) |
:{, :} | ghci上で複数行 |
< | 小なり。Ord a => a -> a -> Bool |
<$, <$> | ファンクタ。(f)map。Functor f => a -> f b -> f a、 (a -> b) -> f a -> f b |
<- | 束縛、バインド(IOアクション) |
<= | 小なりイコール。Ord a => a -> a -> Bool |
<> | mappend。(<>) :: Monoid m => m -> m -> m |
== | イコール。(==) :: Eq a => a -> a -> Bool |
=> | 型制約。Ord a => a、とか。 |
> | 大なり。Ord a => a -> a -> Bool |
>-> | ストリームとしてつなぐ。Pipe |
>= | 大なりイコール。Ord a => a -> a -> Bool |
>>, >>=, =<<, >=> | モナド。バインド。Monad m => m a -> m b -> m b、m a -> (a -> m b) -> m b、(a -> m b) -> m a -> m b,(a -> m b) -> (b -> m c) -> a -> m c |
@ | as。アズパターン。ll@(l:ls)とか。 |
[ ] | 空リスト。[ ] :: [t] |
\ | ラムダlambda。(\x -> x ^2) 3 -> 9 |
& | 空文字列"" -> 文字列パース用 |
_ | ワイルドカードパターン。 |
| | ガードの区切り。内包表記list comprehensionの区切り |
|| | 論理和。(||) :: Bool -> Bool -> Bool |
~ | 反駁不可能パターン。レイジーパターン。irrefutable pattners, lazy patterns |
{ } | レコード構文、記法(フィールドに名前をつける)ときの大カッコ。 |
^ | 累乗。(^) :: (Integral b, Num a) => a -> b -> a |
% | 有理数。有理数割り算。(%) :: Integral a => a -> a -> Ratio a |
Haskellの「->」という記号は、「型コンストラクタ」「カインド」という仕組みと関係してるみたいです。
この情報を手掛かりとして、もう1回検索してみます。
Haskell "->" 型コンストラクタ - Google 検索
うーん、いまいちよく分かりません。
他にも、こんな情報もありました。
(->) is often called the "function arrow" or "function type constructor", and while it does have some special syntax, there's not that much special about it.
(Googl翻訳)
( - >)はしばしば "function arrow"や "function type constructor"と呼ばれ、特別な構文はありますがそれほど特別なことはありません。
- function arrow → 関数アロー
- function type constructor → 関数型コンストラクタ―
こんな日本語になるのでしょうか?
仕方ないので、しばらくは「->」を「矢印」という名前で呼んでおきます。
Haskellの記号には矢印っぽいのがたくさんあるので、これだと言葉だけでは何を指しているのか?曖昧だけど、仕方ないですね。
「->」の情報
前回勉強した「:t」「:k」「:i」コマンドで「->」の情報を調べてみます。
こんなのが出ました。(意味不明w)
Haskellの「->」という記号の正確な名称、読み方が分かったら、追記しておきたいと思います。
とりあえず、ここでは気になったことのメモとして残しておきます。
[増補改訂]関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus)
- 作者: 大川徳之
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る