generated at
PureScriptの型



String
JavaScriptのruntimeのstring型と対応する


Number
jsの実行時のnumber型と対応する
Boolean
jsの実行時のbooleean型と対応する


Int
psとしてのint
実行時にはNumberになる #??


Char



Unit
唯一つのinhabitantを持つ

Void
inhabitantを一つも持たない


()
fieldが0個のrowを表す






コレクション系
Array
配列を表す
JavaScriptのArrayに相当する
kindは *->* で、 Array Int の様に指定する
[1,2,3] Array Int の糖衣構文
monad #??
(..) という関数があるが、hsと微妙に異なる
a = 1..5 で、 a=[1,2,3,4,5] となる
a = [1..5] ではなくmrsekut
rangeの別名
Sequence
Arrayの再実装みたいなやつ
基本的にはArrayを使うべきで、要素数が1000を超えるぐらい大きくなったり、パフォーマンスの原因がArrayだとわかったならSequenceを使うことを検討すると良い ref
SeqとArray間の変換はどっち向きでも O(n) かかる
FFIなどでJSのArrayとやり取りする場合は、Arrayを使うほうが良い
List
リストを表す
関数型チックな処理は得意だが、ランダムアクセスは不得意
hsみたいにListを引数に取る関数の定義はこんなノリで書く
purs(hs)
go Nil acc = Nothing go (x : Nil) acc = Just { revInit: acc, last: x } go (x : xs) acc = go xs (x : acc)
ほぼ同じだが、 [] の糖衣構文がないため、 : で書く必要がある
monad #??
(..) という関数があるが、hsと微妙に異なる
a = 1..3 で、 a=(1:2:3:Nil) となる
rangeの別名



Row, Record



Effect


Type-Holesが使える
型を書いておいて、未実装の部分を ?hoge のようなsyntaxで定義しておく
するとコンパイルエラーで、型が適合する関数を提案してくれる
ブラウザを使ってPursuitから検索してもいいが同じことがIDE上で行える
VSCodeなら cmd-. とか
purs(hs)
arrayToList :: forall a. Array a -> List a arrayToList = ?whatGoesHere