タグ

ブックマーク / osiire.hatenablog.com (4)

  • 関数型言語はGUIが苦手? - osiire’s blog

    副作用を極力排除しようとするfunctionalな方向性の言語においては、GUIのような副作用の塊は扱えないという直観を持っている人も多いことでしょう。確かにfunctionalな言語でunit型を返す関数ばかり扱っていると、"普通に手続きを書いているのと何が違うの?嬉しくない!"という結論になるのは至極当然の事と思います。 でも、副作用を持つ部分と純粋関数の部分を切り分けて考えれば、意外とGUIの世界でもfunctionalなスタイルでプログラムが書けるのです。わかりやすい所でいうと、例えば、データベースを扱うプログラムも副作用の塊のように見えますよね?でも、SQL文を作成する部分は文字列を扱う純粋関数ですし、取得したデータがnullじゃないか、有効かどうかを判断しながら処理する部分もpureです。そうやってどんどん切り分けていくと、最終的にかなりpureになります。しかもpureになる

    関数型言語はGUIが苦手? - osiire’s blog
    ryskosn
    ryskosn 2015/03/10
  • 多相バリアントを使いこなそう(1) - osiire’s blog

    以前OCamlは学習コストが低いといいましたが、私のOCaml学習の中で唯一多相バリアントだけはその意味を理解するのに時間がかかりました。ただ、分かってみると単純な話で、誰かが噛み砕いて説明してくれれば回り道しなくてもよかったのではないかと悔やまれます。また、多相バリアントについて集中的に解説しているWebページもあまりないので、ここで解説してみようと思います。 多相バリアントの基 「多相」バリアントというくらいですから、多相バリアントは多相的なバリアントなのです。普通のバリアントは多相になりません。例えば普通のバリアント型、 # type card = Joker | Num of int;; type card = Joker | Num of int # type in_data = Str of string | Num of int;; type in_data = Str o

    多相バリアントを使いこなそう(1) - osiire’s blog
  • OCamlの開発環境の作り方 2012年暮れ版 - osiire’s blog

    この記事はLL/MLアドベントカレンダーの記事です。 一時期停滞していたOCamlの開発環境は最近進化してきています。2012年暮れ時点における知見をまとめてみましょう。なお、これらの進化はOCaml開発チームはもとより、OCamlPro, @camlspotter氏、@m2ym氏の多大な貢献によるものです。 OPAM OPAMはGODI,OASISと同様OCaml専用のパッケージマネージャーです。従来システムに比べて使いやすさが格段にアップしています。現時点ではパッケージマネージャとしてOPAM一択で問題ないでしょう。 http://opam.ocamlpro.com/ (aptやyumに似た)単純で使いやすいコマンドラインインターフェイス。 ビルドシステム非依存でOPAM化が簡単。 デフォルトリポジトリがgithub上にありPRできる。 ダウンロード&インストール: $ wget ht

    OCamlの開発環境の作り方 2012年暮れ版 - osiire’s blog
  • OCamlの開発環境の作り方(2014年夏版) - osiire’s blog

    OCaml 4.02.0が出ましたね。PCを新しくしたついでにemacs 24系でOCaml環境を作った時のメモを置いておきます。 $ apt-get install opam $ opam init $ opam update $ opam switch 4.02.0 $ eval `opam config env` $ opam install omake ocp-index ocp-indent $ apt-get install auto-complete-el $ cat .emacs.d/ocaml.el (if window-system (require 'caml-font)) (setq auto-mode-alist (cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist)) (autoload 'caml-mode

    OCamlの開発環境の作り方(2014年夏版) - osiire’s blog
  • 1