PureScript楽しい

ブログ再開した

自分の存在をネットに残しておくことは実利があるのでやっていこうと思った。 過去に書いたものはもういいやと思って記事にしてない。

PureScript楽しい

今年はPureScriptにめっちゃハマっていて、というか言語自体が大好きになるのが初めてでとても楽しめている。 かなり好きになったので、開発するための下地を整えようと思って、基盤となるいろいろなパッケージをつくってる。 なにが気に入ってるかというと、パズル的な要素が楽しいってのもあるし、なにより、泥酔していても型パズルさえとけば、動作担保が結構できるというのが気に入っている。(なお、この記事も泥酔状態で書いている)

なんでPureScript始めたのか

急にHaskellやりたくなって、Haskellをやりはじめて、結構面白いなーと思った。 書き始める前は「頭がいい人間がマウンティングするための言語」というとても悪い印象だったが、 実際は頭の悪い人間の向けの言語に感じている。数学の知識が必要だなんだとよく言われるが「とりあえず書いていく」分には全く必要ない。(ただ高みに登るためには数学の知識は必要なのかもしれませんがしりません。)

ただ、やはり最初はキャッチアップが大変な感じはしますが、Servant(というWAFがあるのですが)を使って書き、Servantがやっていることを理解することにフォーカスするとよく使う仕組みや面白変態機能の一部をいっぺんに学べた感じがします。

また、ざっくり言ってしまえば、言語の大枠の仕組み自体は限られた仕組みとその延長線上でできていると感じること(機能が少ないと言いたいわけではない)と、 賢いコンパイラに細かいことをわかりやすく細かいエラーメッセージで怒られることによって、頭の悪い人間向けに感じているような気がしています。 そして、雰囲気で型合わせしてるだけで大体きっちり動くのがすごい。

そして、上のようにしてHaskellを楽しんだあと、フロントエンドは似たような言語を使ってみようかと思って、勢いのあるElmを書き始めた。 Elmでは型クラスやモナド、自動導出など、初学者がつまづくような仕組みは徹底して排除されていて、これはこれでよかったなとは思う。 しかし、JSONデコーダー書いていて、Haskellだったら自動導出であっさりかけるのになーと思ってしまい、別のものに移る決意をした。また、私はElm Architectureにいくらかの合わせたくない部分があったという要因もある。

ちなみにElmをディスっているわけではなく、私は別のものが良かったというだけで、Elmの割り切り方は好感をもっています。 んで、何使うかなーという段階で、GHCJSは時期尚早だという話を何かで見て、 知り合いのHaskellerに聞いたら、今だったらHaskellerはPureScriptのほうが使ってんじゃないの?という話を聞いてPureScriptを始めた。

なんでハマったのか

私は仕事でRuby、JS、Coffee、Objective-C、Swift、JavaC#あたりを経験していて(もちろん習熟度は言語によって差がある)、クラスベースの言語には飽きていたし、クラスベースの仕組みがいるのか?という疑問がありモヤモヤしていた。そんなところで、なんとなくHaskellから手を出し始めていた。 HaskellもElmも楽しかったが、私にとってPureScriptが都合が良かったのが、PureScriptにはElmと比べて十分な機能があり、AltJSなのでNode(つまりJS)でFFI書く土壌があったということである。 これを両方満たしていたので、十分な抽象化機能があり不満もほぼ出ず、外部とのやりとりはFFI(JS)でなんとかできたので、ゆとりにとってとてもやりやすかった。 そして、上にも書いたが、とにかく雰囲気で型合わせしてればいいのが最高で、酔っ払ってウェーイしてる状態で書いていても動く快感がある。(すべてのコードがこれで済むと言いたいわけではない) また、PureScriptを始めた当初からさらに機能が強化され、型レベル計算のような面白い機能も使いやすくなり、どんどん面白くなっていったのも一つの要因かもしれない。

一方で

やはり最初の学習コストは高く、とくにPureScriptの拡張可能作用は、最初はコンパイルすらなかなか通せなかった。しかし、はじめてプログラミング言語勉強したときと比べてどうかというと学習コストが高いと言えないので概念が違いすぎて貯金で済ませられないというだけな気がしています。 また、これからはIOがメインのネイティブエフェクトになるようです。

最後に

これはマンセー記事ではなくただの小学生並みの感想記事です。 周りにPureScriptフレンズがおらず、ずっと我流で書いていて寂しい。友達が欲しい。