関数プログラミングを勉強してみる
Haskellの環境整備
Macだとインストーラが存在するため、パッケージをダウンロードして実行するだけ。
Haskell Platform 2011.4.0.0 64bit.pkg
インストール後にバージョンを確認
$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 7.0.4
$ cabal -V
cabal-install version 0.10.2
using version 1.10.2.0 of the Cabal library
念のためアップデート
$ sudo cabal update
対話環境の起動
$ ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude>
関数の型
::を使って表す
isDigit :: Char -> Bool
isDigit c = c >= '0' && c <= '9'
複数に引数
makeString :: Char -> Int -> [Char]
makeString c 0 = []
makeString c n = c : makeString c (n - 1)
型変換
length :: [a] -> Int
型変数は小文字で書く
リスト
* リストの先頭に加える
* 二項演算子(:)を使う
* > let xs =['b', 'o', 'a']
* > let ys = 'a' : xs
* > ys
* "aboa"
* リストから先頭要素を取り出す
* head
* > head ys
* 'a'
* リストから先頭要素を取り除いた残り
* tail
* > tail yx
* "boa"
木構造とハッシュ
型の定義
列挙型
* data Bool = False | True
* data Ordering = LT | EQ | GT
* 右側の値を構成子と呼ぶ(False, True, Lt, EQ, GT)
型変数を取る型
* data Maybe a = Nothing | Just a
構造体
* data Pair = MkPair Int Char
* 構造体 Pair は、型IntとCharを格納する型で、構成子はMkPair
再起型
* data Tree = Leaf | Node Tree Int Tree
* LeafとNodeが構成子、Nodeの右にあるTreeとIntは型
関数一覧
* putStrLn 標準出力
* zip 二つのリストをペアリストにする
* map 第一引数に関数を、第二引数にリストを受け取り、各リストに関数を適用する
* foldl リストの要素を1つの値に集約する
* 第一引数に演算子、第二引数に初期値、第三引数にリス
関数の引数はカンマではなく、スペースで区切る
登録:
コメントの投稿 (Atom)
ReactNativeでAndroid対応する話
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
perlにおいて例外を発生するやり方は、普通、warnとかdieとかですが、コール元の情報が表示されないため、例外が発生して事が分かっても、どのように呼ばれて例外が発生したのか分かりづらい事が多々あります。(たぶん) そんなこんなで、より解析しやすいcarp/croakをちょっと...
-
Fastlaneを使ってデバイスの登録を行い、Provisioning Profileへの追加、Xcodeの更新を行う デバイスの追加 register_devicesで追加 https://docs.fastlane.tools/actions/#register...
-
UILabelの高さ取得に気をつけること 1. xibやstoryboradの指定したFontと、プログラムで指定しているフォントは同じかどうか 2. viewDidLoad時ではまだviewのサイズが決まっていない ロジック NSString func...
0 件のコメント:
コメントを投稿