2024-05「ルイボスティー」.
ルイボスティー
ツイートまとめ定期
関数型言語の実装: Structural Sub-typingの実装
TypeScriptも採用する Structural Sub-typing を実装したいです。 TypeScriptの型メモ #型システム - Qiita
やる気が再燃したので実装を進めていました。
-
関数呼び出しをした時に環境を作らないと7になってしまう
- Environmentを持ち回るようにして評価の度にclone()した
(let f (fn x (fn y (+ x y))))
((f 1) ((f 2) 3))
# (f 1) == (fn y (+ 1 y))
# ((f 2) 3) == 5
# 6
- レコード型を作り, 型推論・型チェックを作りました #7
github.com/wakame-tech/...
おおー良い感じに型推論と型チェックされるようになった💯
— か (@w4k4.me) May 16, 2024 at 0:00
[image or embed]
- type alias
- getter関数
^.
と getter type[]
も作りました- 型は
^.: (r: t, k: atom) -> ([] t k)
- 本当は
t
はrecord
のsubtypeですがgenericsが使えないので表現できません
- 本当は
(type t : ([] (record (a : int)) :a))
とか型宣言できてしまうので, 型の評価をしなければなりません- 型検査時に
([] (record (a : int)) :a)
を評価してint
にしてt
を登録します
- 型検査時に
- 型は
# getter type
(type t : (record
(x : int)
(y : bool)
))
(let a : t (record
(x : 1)
(y : true)
))
(let x2 : ([] t :x) ([] a :x))
# getter
(type t : int)
(type s : (record (a : t)))
(let x : s (record (a : 1)))
(^. x :a)
- ラムダ式で複数引数取れるようにして、
->
を中置するようにしました. commit- 元の表記:
(-> int (-> int int)))
- 今の表記:
(int int) -> int)
- 見やすいですね
- 元の表記:
- case式を実装しました
(条件 => 式)
を羅列します, 式の型は全て同じにならないといけません- ついでに論理演算子も作りました
(let x 1)
(case
((& (== (% x 3) 0) (== (% x 5) 0)) => :fizzbuzz)
((== (% x 3) 0) => :fizz)
((== (% x 5) 0) => :buzz)
(true => :other)
)
- 文字列型とか
map
とかrange
関数も作り, FizzBuzzが書けるようになりました
(let fizzbuzz
(fn (x : int)
(case
((& (== (% x 3) 0) (== (% x 5) 0)) => 'fizzbuzz')
((== (% x 3) 0) => 'fizz')
((== (% x 5) 0) => 'buzz')
(true => (to_string x))
)
)
)
(map dbg (map fizzbuzz (range 1 30)))
生活
- 新大久保のおしゃなレンタルルームでマーダーミステリーをしていました
- クライナーを差し入れました
チームラボ
- 社の新卒研修中にチームラボに行くイベントがあり, 新卒研修に携わった関係で同行しましたな
- みんなプロジェクターの話とか制御の話とかLiDARの話をしていて楽しかったです
- こういう空間でDJイベントあったら絶対楽しい
娯楽
- 「JAPAN JAM 2024」
GWはJJ行ってました pic.twitter.com/74eHdzh7Q4
— かまちょ🌖🍀🍢 (@kmch000) May 13, 2024
- 「KING SUPER LIVE 2024 Day1」
キンスパ Day1行ってました pic.twitter.com/PV3RLtZh86
— かまちょ🌖🍀🍢 (@kmch000) May 13, 2024
- ガールズバンドクライを観始めました
- MOGRA COUNTDOWN PARTY 23/24アーカイブ観ました https://www.twitch.tv/mogra/video/2018821061
始まっております
— 原口沙輔 (@sasuke_maschine) December 31, 2023
僕は00:50〜
恐らく破壊みたいな感じになります
来れない方、twitchもございますhttps://t.co/i3oImF6jYC https://t.co/WTasl3uqSA
- 学マスはじめました