ブックマーク / qiita.com/hiruberuto (8)

  • ElmとPureScript、どっちを選べばいいんだよ - Qiita

    (※アイキャッチ画像は、この記事に関係あるようで関係ないウサギ対ウナギ画像です) アドベントカレンダー『Elm2』の昨日の記事は、ababさんの『Elmで副作用を扱う仕組みCmdがとっても良い理由』でした。副作用のある部分とない部分を分離する「純粋」な言語は、作用を扱うのが面倒くさい言語だと思われがちですが、実は作用を扱うのがとても上手なんですよね。ElmのCmdは、Haskellみたいにモナモナせずにシンプルに作用を扱う方法としてElmがたどり着いた、ひとつの解答であります。 さて、ElmPureScript は、どちらも AltJS にして Haskell の直系の子孫であり、そしてどちらも正格評価でありレコード型のような機能を取り込んでいるなど、共通点の多い言語たちでもあります。このどちらを選べばいいのか、迷っている人もいるのではないでしょうか。そんな方のために、それぞれの特徴

    ElmとPureScript、どっちを選べばいいんだよ - Qiita
    bouzuya
    bouzuya 2018/12/05
  • RowToListであそぼう!(苦悶) - Qiita

    全世界70億人のPureScripterのみなさん、お疲れさまです。PureScriptで今一番熱い話題といえばRowToListですが、PureScript v0.12ではいろんなライブラリにこのRowToListを使って各種のインスタンスが追加で定義されました。たとえば、値を文字列にして標準出力をする関数logShowは、今まではlogShow { x : 10.0, y : 20.0 }みたいに直接オブジェクトを渡すことはできなかったのですが、このRowToListのお陰でそれができるようになりました。そんなのElmとかでもできるやんけと思ったElmerの方もいらっしゃるとは思いますが、PureScriptのそれは型チェックが厳格に効いていて、logShow { x : 10.0, y : pure }みたいにプロパティにShowでない型を含むようなオブジェクトを渡そうとしても、ちゃ

    RowToListであそぼう!(苦悶) - Qiita
    bouzuya
    bouzuya 2018/07/15
  • 【翻訳】なぜPureScriptを使うべきなのか - Qiita

    この記事はPhil Freeman, "Why You Should Use PureScript"の邦訳です。この記事の原著者のフィルさんは、PureScriptのオリジナルの作者さんでもあります。原著はCC BY-NC-SA 3.0でライセンスされており、その許諾に従って私が勝手に翻訳・公開するものです。もし翻訳された内容に誤りなどがあれば、修正しますので私までご連絡ください。また、わりとざっくりした記事なので、HaskellやPureScriptについて知識がないとわかりにくい部分もあるかもしれませんが、ご了承ください。これは私の夏休みの自由研究です。みなさんも夏休みの自由研究にPureScriptはいかがでしょうか。 なぜPureScriptを使うべきか 優れた抽象 PureScriptは『型クラス』を持ち、私たちはこれを使ってとても再利用性の高いコードを書いています。PureSc

    【翻訳】なぜPureScriptを使うべきなのか - Qiita
    bouzuya
    bouzuya 2017/08/17
  • 純粋関数型JavaScriptのつくりかた - Qiita

    言語全体が参照透明な式1で構成される言語を純粋関数型プログラミング言語(Purely Functional Programming Language)と言いますが、プログラミング言語から副作用のある式をすべて除去し、その代わりにアクションとかIOモナドと呼ばれる仕掛けを追加すると、その言語を純粋関数型に変えることができます。このあいだふとした思いつきでJavaScriptを純粋関数型にしてみたんですが、そのままストレージの奥で腐らせるのはもったいないのでAurorScriptと名づけて記事にして飾っておきます。アクションの仕掛け全体は10行くらいで書けるので簡単です。 純粋関数型を理解するには、自分でアクションのような仕組みを作ってみるのがとてもいい勉強になります。だって、「副作用のない式のみで副作用を表現する」とか説明しても「……はぁ? けっきょく副作用あるの? ないの?」とかっていう反

    純粋関数型JavaScriptのつくりかた - Qiita
    bouzuya
    bouzuya 2017/05/25
  • 『先にヘッダを送信してから、そのあとでレスポンスボディを送信しなくてはならない』ことをコンパイル時に検証する - Qiita

    『先にヘッダを送信してから、そのあとでレスポンスボディを送信しなくてはならない』ことをコンパイル時に検証するJavaScriptNode.jspurescripthyper const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.write('Hello World\n'); res.end(); }); server.listen(port, hostname, () => { console.log(`Server running at http:/

    『先にヘッダを送信してから、そのあとでレスポンスボディを送信しなくてはならない』ことをコンパイル時に検証する - Qiita
    bouzuya
    bouzuya 2017/04/23
  • rollup-plugin-pursでPureScriptのモジュールを結合する(インライン化、デッドコード排除) - Qiita

    rollup-plugin-pursでPureScriptのモジュールを結合する(インライン化、デッドコード排除)purescriptrollup.js 現状のPureScriptでは、コンパイル後のモジュールを結合するのに browserifyやwebpackを使って通常のCommonjsモジュールとして結合する方法(でかい) psc-bundleを使って結合する方法(デッドコード削除が効くので、こっちのほうが断然結合後のファイルサイズが小さい。ただしかなり遅いし、PureScriptから出力されたCommonjsモジュールしか結合できないので、それ以外のCommonJSモジュールを結合するにはさらにwebpackなどをキメる必要がある) の2種類があります。ここで、新たにrollupのプラグインrollup-plugin-pursを使う方法が加わったようです。特徴としては、 psc-b

    rollup-plugin-pursでPureScriptのモジュールを結合する(インライン化、デッドコード排除) - Qiita
    bouzuya
    bouzuya 2017/02/05
  • ミーリマシンで遊ぼう - Qiita

    にわかにReduxミーリ・マシン説が浮上したので、ミーリ・マシンが実用上どのように役立つのかを調べるため、ミーリ・マシンについてもう少し詳しくお勉強することにしました。 ミーリ・マシンの定義 何か抽象的なものを学ぶときは、最初に定義をさらっと眺めておくといいです。もちろん定義を眺めたからといってすぐに理解できるわけがないのですが、ぼんやりと手掛かりが得られることもよくあります。ウィキペディアから拝借: 定義:ミーリ・マシンとは、 $\rm (S, Σ, Λ, T, G, s)$ をいう。ここで、 状態の有限集合 $\rm S$ 入力文字列の有限集合 $\rm Σ$ 出力文字列の有限集合 $\rm Λ$ 遷移関数 $\rm T : S × Σ → S$ 出力関数 $\rm G : S × Σ → Λ$ 開始状態 $\rm s ∈ S$ (´・ω・`)? よくわかりませんが、何か入力したら内部

    ミーリマシンで遊ぼう - Qiita
    bouzuya
    bouzuya 2017/01/23
  • 関数型言語のウソとホント - Qiita

    追記 こんな記事を読むより、まともな関数型プログラミング言語を使ってまともに関数型プログラミングを学ぶほうが、関数型プログラミングについてよほど正確な理解を得られます。少しでも関数型プログラミングに興味のある人は、まずは真面目なHaskellの教科書やすごいHを読んだり、やさしいHaskell入門を読んだりしながら、実際に関数型プログラミングのコードを書いてみることをお勧めします。 繰り返しますが、この記事はあんまり読む必要はないです。関数型プログラミングを理解するには実際に自分でコードを書いてみるのが一番です。関数型プログラミングあるいは関数型プログラミング言語を理解するもっとも確実な方法は、Haskellをあなたのマシンにインストールして何かまとまったアプリケーションを書いてみることです。Haskellでアプリケーションが書けたら、自分は関数型プログラミングを理解しているし使えると胸

    関数型言語のウソとホント - Qiita
    bouzuya
    bouzuya 2015/01/06
    どうでもいいけど、アイコンがちょりーす
  • 1