Okada Hiroshi の blog

typo が多いです

Haskell 勉強記録 14 日目

今日は 第7章:型や型クラスを自分で作ろう 再帰的なデータ構造 の途中 (位置 3305/11175) まで読み進めました。

記号文字だけを使って関数に名前をつけると、自動的に中置き関数になります。

とあったので、記号文字って具体的に何が使えるんだろうと思って

2 Lexical Structure を見てみると、

Operator symbols are formed from one or more symbol characters, as defined above (演算子シンボルは上記の一文字以上のシンボルキャラクターより構成される。)

と書いてあって、さらに

symbol   → ascSymbol | uniSymbol⟨special | _ | " | '⟩
ascSymbol   → ! | # | $ | % | & | ⋆ | + | . | / | < | = | > | ? | @ | \ | ^ | | | - | ~ | :
uniSymbol   → any Unicode symbol or punctuation

と定義されているので、Unicode のシンボルでも動くかなと思って。

infixr 5 △
(△) :: (Integral a) => a -> a -> a
m △ 0 = m
m △ n 
    | n > m     = n △ m 
    | otherwise = n △ (m `mod` n)

とか書いてみると動作しました。実用上があまり意味が無いけど、∫とかΣとかも使えると、 例示用の関数を作るのには良いかもしれません。

今日は新しく出てきた関数はありませんでした。

「すごいHaskellたのしく学ぼう!」を読んでいて出てきた関数のメモ · GitHub