Typed Racket が微妙に型安全じゃないのが不満なんで、ライブラリ書いた。まだ `cadr` とかに対応してないんで、そこら辺は徐々に対応する。`/` は諦めてる。`quotient` と `modulo` はゼロ除算を弾けるんで弾いた方いいっしょとか思ってる。
https://git.tojo.tokyo/more-type-safe.git/tree/more-type-safe.rkt
Typed Racket が微妙に型安全じゃないのが不満なんで、ライブラリ書いた。まだ `cadr` とかに対応してないんで、そこら辺は徐々に対応する。`/` は諦めてる。`quotient` と `modulo` はゼロ除算を弾けるんで弾いた方いいっしょとか思ってる。
https://git.tojo.tokyo/more-type-safe.git/tree/more-type-safe.rkt
`(car '())` が許されるのやめて欲しいと本気で思う。こういうライブラリを書かなくてもいいんだったら書きたくないんだけど……。
これ Racket の Slack で質問した方がいいかもしれない……。明日やるか。
Racket の Slack で Typed Racket の手続きってもっと安全にできるよね?既に安全にした手続きのライブラリとかってありませんか?
とかいう質問をしてきた。めっちゃ緊張している。英語が母国語だったらどれだけ楽だったか。
そして、簡潔に説明しすぎて誰も理解してくれない可能性があって怖い。
理想は`#lang typed/racket/safe` みたいにできることなんだよなー。
日本語だったらいくらでも Typed Racket の `car‘ に `(All (a) (-> (Listof a) a)` が存在することのデメリットを語り尽せるんだけど……。
やはり自分で作るしかない可能性はあるんだけど、これくらいのことは既に考えた人がいるという方向にかけたい。
私が始めてこれに気づいて提案しているとかありえないでしょ。
だって、`car` から (All (a) (-> (Listof a) a)` を取りのぞくだけで、list が null? の場合とそうでない場合の場合分けを忘れた場合に動的に死ぬ自己を型レベルで予防できるんやで?
これ絶対いるでしょ。Haskell とかにある safe ライブラリとは次元が違うレベルで必要だと思うんだよなー。
s/自己/事故/
やはり言語の壁は厚く心理的安全性が低い。
ただたんに私が神経質すぎるという結論で終わりそうな気がしてならない。
実は潜在的に Typed Racket は他の強い静的型付き言語よりも凄いところがあるっていうのは実は Typed Racket 界隈でも知られてないのかもしれない。だとしたら結構な発見をしている可能性があるんだけど、さすがにそんなわけないんだよな。
Racket の文化に従って GitHub でコードを公開することにした。そんな流され方してええんかって感じはするけど。
tojoqk/more-type-safehttps://github.com/tojoqk/more-type-safe
まぎらわしいし、git.tojo.tokyo の方は消します……。
これでもしも Safe Typed Racket 的なのが認知されて広まって Typed Racket スゲーって流れが社会に生まれて Typed Racket 祭りになったら最高なんだけど……。
なんか失礼な喋りかたしちゃってるかもしれなくてすごく不安なんだよな。これだから英語はつらい……。
返信がなかなかなくて不安だけど冷静になろう。そうタイムゾーンが違うのだ。専門家な人はいま寝てる時間かもしれないのだ。無駄に不安を作りだすのはやめるのだ。
専門家っぽい人の現地時間は 02:00 頃だったわ。私の心に平穏が訪ずれた。あー、海外の人とのやりとりになれてないないとこうなる。Slack の現地時間確認機能マジでありがたい。
そろそろアクティブになったかと思ったら向こうは 06:00 みたい。足し算に失敗してる。
senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.
All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.