タグ

OCamlに関するrydotのブックマーク (71)

  • 「コンピュータを操る」

    「コンピュータを操る」 浅井 健一 著、 「コンピュータを操る」 プログラミングを通して「情報科学的なものの考え方」を学ぶ サイエンス社、 2020 年 2 月 出版、 Computer and Web Sciences Library 2 各章で作られるゲーム 4章: 白いゲーム画面が出る。 5章: 背景画像と自転車の画像が表示される。 6章: 自転車が左に動く。(ユーザはまだ何もできない。) 7章: 自転車を矢印キーによって動かせるようになる。 8章: 自転車が動けるのは道路上のみになる。 9章: 自転車に積んでいる牛乳、ヨーグルトの量が表示されるようになる。 10章: 一番、左上の配送先に牛乳を届けると数が変化する。 自宅に戻ると牛乳の数が 9 に戻る。 11章: 各配送先に牛乳、ヨーグルトを届けられるようになる。 プログラミング環境 全部で 5.3M ほどあります。 回線が細いと読

    rydot
    rydot 2019/11/10
  • JavaScriptをOCamlから生成するトランスパイラ「BuckleScript 1.0」、米ブルームバーグがオープンソースで公開。TypeScriptよりタイプセーフかつ効率的で高速と

    JavaScriptをOCamlから生成するトランスパイラ「BuckleScript 1.0」、米ブルームバーグがオープンソースで公開。TypeScriptよりタイプセーフかつ効率的で高速と 金融情報などの提供を行っている米ブルームバーグは、OCamlのコードからJavaScriptのコードを生成するトランスパイラ「BuckleScript 1.0」をオープンソースで公開しました。 BuckleScriptはTypeScriptやBabelJSなどからインスパイヤを得て開発されたと説明されていますが、最大の特徴はTypeScriptなどが独自の構文を備えているのに対し、BuckleScriptは既存の言語であるOCamlを採用しているところです。 OCamlはオブジェクト指向型と関数型の両方の特長を備え、特に海外では金融系システムの開発でよく使われているプログラミング言語です。 Buckl

    JavaScriptをOCamlから生成するトランスパイラ「BuckleScript 1.0」、米ブルームバーグがオープンソースで公開。TypeScriptよりタイプセーフかつ効率的で高速と
  • ML勉強会まとめ - type t (* void *)

    僕がML情報が集まる会が欲しくて開催しました。 @blackenedgold さん、@khibino さんにご協力頂きましてありがとうございました。 connpass.com 発表一覧 ATSで捕捉されたリアルタイムOSのシステム状態(masterq さん) Real-time OS system state captured by ATS language from Kiwamu Okabe www.slideshare.net リアルタイムOSのChibiOSの紹介とATS2の宣伝(?) ChibiOSは内部的に状態を持っており、API関数を呼ぶときに普遍条件があるけども、 C言語から呼び出すとそれをキャプチャできないのでプログラムが危険になっていました。 それをATS2の依存型を用いて現在のOSのステートを型にエンコードして解決している話でした。 ステートを埋め込むだけならば幽霊型を

    ML勉強会まとめ - type t (* void *)
    rydot
    rydot 2016/07/10
  • BuckleScript: write JS faster, safer and smaller

    This page has moved to bucklescript.github.io/bucklescript

  • Bloomberg、OCamlのJavaScriptバックエンドであるBuckleScriptをオープンソース化

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Bloomberg、OCamlのJavaScriptバックエンドであるBuckleScriptをオープンソース化
  • 関数プログラミングのエッセンスと考え方

    2012 3 5 Copyright© 2011 IT Planning,Inc All rights reserved. LEXIFI 2000 LexiFi DSL LexiFi Web ( ) 2006 Haskell/Microsoft F# 2002 Jane Stree Capital High-Frequency) OCaml 200 (private fund) Ruby on Rails Scala Xen Citrix Xen OCaml http://cufp.org/ Microsoft F# Web fpish.net 2011 Scala, Akka Scala, Akka, Play IntelliFactory ( ) TypeSafe ( ) yesod (Haskell) Web COBOL Haskell Lift (Scala) Web Pytho

  • 環境とクロージャを用いた、より効率的な関数型プログラミング言語の定義&実装の仕方の例 - Qiita

    関数型プログラミング言語の定義&実装の仕方の例で「需要があれば後で書く」と書いた、「より効率的な実装」です(数件:-)の需要があったので)。前の記事は読んでいると仮定します。 さて、前の実装では、関数function(x){E}を値vに適用すると、体である式Eの抽象構文木をすべて辿って、その中の変数xをすべてvで置き換えた式を作っていました(subst)。これは明らかに非効率的です。関数を呼び出すたびに、体の抽象構文木を作り直しているのですから! そこで、変数に当に値を代入して新しい式を作り直すかわりに、どの変数にどういう値が与えられた(束縛(binding)と言います)のか、覚えておくデータ構造を用意します。これを環境(environment)と言います。 環境は連想リストでもハッシュテーブルでも探索木でも、変数から値への対応(写像)を表していれば、何でも実装することができます。た

    環境とクロージャを用いた、より効率的な関数型プログラミング言語の定義&実装の仕方の例 - Qiita
    rydot
    rydot 2015/02/08
  • Monad にしちゃう functor を通して今時の OCaml モジュールプログラミングを俯瞰 - camlspotter’s blog

    これは私用の覚え書きを適当に整形したもの(というか Sphinx で hatena 記法にしただけだけど)。だから他の人が読んで判るように全く書いていない。OCaml や ML のモジュールシステム、 value polymorphism、さらには relaxed value polymorphism、そして日語を知っている人に、ならば何か役に立つかもしれない。多分地球上で数十人もいない。まあいいや。これ見てウヘェ、と思うなら例えば F# みたいな ML モジュールシステムを放棄して class 階層を採用した言語とか、 Haskell みたいな type class でモジュールを実現したのとかを使うか、それとももっと超カッコいいナントナクヒューリスティックで便利キワマルな型推論補助のついたモジュールシステムを考えて OCaml に足して公開すればいい。正直私もここまで来ると ML モ

    Monad にしちゃう functor を通して今時の OCaml モジュールプログラミングを俯瞰 - camlspotter’s blog
  • omake: OCamlフレンドリーな超強力ビルド ツール - camlspotter’s blog

    omake という make のパチモンみたいなものがある。だが、「おまけ」の癖にこれが素晴らしいツールなのだ。私が仕事でOCamlプログラムを書く時には必ずこれを使う。 念のために言っておくと、OCamlMakefile という、OCaml でよく使う定義を集めた Makefile 集のようなものがあるが、これは omake ではない。omake は超強力 make コマンドだと思ってもらえれば良い。 詳しいチュートリアルを書くつもりはない。それは omake の作者にまかせて、特徴を並べよう: OCamlプログラムをコンパイルする際のルールが既に登録されている。.SUFFIXES: .ml などと書く必要はない。 依存解析が自動かつ強力。依存ルールを書く手間が大幅に減る。 ディレクトリを跨いだプログラムのビルド。依存解析は OMakeroot ファイルの存在するディレクトリを頂点として

    omake: OCamlフレンドリーな超強力ビルド ツール - camlspotter’s blog
  • 多相バリアントを使いこなそう(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
    rydot
    rydot 2014/11/10
  • ocamloptの全体像 - Metasepi

    rydot
    rydot 2014/11/09
  • Users Meeting - OCaml.jp

    縺薙�ョ繝壹�シ繧ク縺ッ譛�蠕後↓譖エ譁ー縺輔l縺ヲ縺九i1蟷エ莉・荳顔オ碁℃縺励※縺�縺セ縺吶�よュ蝣ア縺悟商縺�蜿ッ閭ス諤ァ縺後≠繧翫∪縺吶�ョ縺ァ縲√#豕ィ諢上¥縺縺輔>縲� OCaml Meeting 2009 in Tokyo (蟷ウ謌仙サソ荳�蟷エ譚ア驛ス螟ァ鬧ア鬧昜シ�) 縺薙�ョ繧、繝吶Φ繝医�ッ逶帶ウ√�ョ縺�縺。縺ォ邨ゆコ�閾エ縺励∪縺励◆縲ゅ#蜿ょ刈鬆ゅ>縺溽嚀讒倥�√≠繧翫′縺ィ縺�縺斐*縺�縺セ縺励◆縲� 逋コ陦ィ雉�譁吶d蜍慕判縺檎スョ縺�縺ヲ縺ゅj縺セ縺吶�ョ縺ァ縲√#蜿ら�ァ縺上□縺輔>縲� 髢「謨ー蝙玖ィ�隱� OCaml縲�1994蟷エ縺ォ螟ァ蜈�縺ィ縺ェ繧� CAML 縺悟ョ溯」�縺輔l縺ヲ莉・譚・縲�髟キ繧峨¥遐皮ゥカ閠�逕ィ縺ョ縲後♀繧ゅ■繧�縲阪↓逡吶∪縺」縺ヲ縺�縺� OCaml 縺ァ縺吶′縲√◎縺ョ繝励Ο繧ー繝ゥ繝縺ョ螳牙�ィ諤ァ繧剃ソ晁

    rydot
    rydot 2014/11/09
  • OCaml 標準ライブラリ探訪 #0 - camlspotter’s blog

    OCaml 標準ライブラリへようこそ OCaml 標準ライブラリは、機能が足りない、なんで dev team はライブラリを放っているんだ、とかコケにされた上に、もう我慢できないから自分で次世代標準ライブラリを作っちゃうよ、といった運動も起こっている(extlib / batteries included / Jane Street's core)といったちょっと悲しい問題があるのですが、実の所、OCaml プログラミングで一番お世話になるのがこの標準ライブラリなのです。一応、最低限の機能は提供されていますし、コメントもかなり充実しています。OCaml のバイナリパッケージをインストールするだけでソースも見ることが出来ますし(ただしパッケージがずるをして標準ライブラリソースを飛ばしていなければですが)、コード量も多すぎず、少なすぎず、 OCaml 入門の際の副教材、コード例としても最適。標

    OCaml 標準ライブラリ探訪 #0 - camlspotter’s blog
    rydot
    rydot 2014/11/09
  • モジュールを「拡張」するテクニック - camlspotter’s blog

    すとっどりぶ ご存知のように OCaml の stdlib は「標準ライブラリ」ではありません。「すとっどりぶ」です。大事な事などでもう二度言いますってやつです。これは OCaml コンパイラがコンパイルできる様にするための最小限のライブラリ+ INRIA の人たちの気分で加えた関数から成っています。当然、OCaml をバリバァリ使う人には全く力不足です。「すとっどりぶ」で満足できない人は Jane Street Core や OCaml Batteries Included 等を使うと良いです。 でも、なんだか自分の書いているソフトに外部のライブラリを使って変な依存性を入れるのはどうかなあ、とか、わざわざ巨大な「代替標準ライブラリ」を入れるの面倒だ、という人もいるでしょう。そういう時は自分で「すとっどりぶ」を拡張すればよい。その時に便利な方法をお教えします。 すとっどりぶを拡張する たと

    モジュールを「拡張」するテクニック - camlspotter’s blog
    rydot
    rydot 2014/11/09
  • OCaml 開発環境について ~ コンパイラに付属しない非公式ツールたち - camlspotter’s blog

    2012年12月での関数型言語 OCaml コンパイラ一式には入っていない 内部もしくは外部開発されたのツール群の紹介を行う。 例によって多岐に渡るので、一つ一つの詳しい説明は行わない。 各ツールの細かい情報はそれぞれのドキュメントを参照して欲しい。 リンクは貼るの面倒だからググって。 もし知らないツール名があったらちょっと読んでみて欲しい。 もしかしたらあなたの問題を解決するツールがあるかもしれないから。 ライブラリとツールの中間のようなコード生成系も取り上げた。 あくまでも基的に私が触ったことのある物しか紹介しないから、 そっけなかったりするのはあまり触ってないということ。 なんでこれはなんで取り上げてないの?と思ったら、それは使ったことないから。ごめんね。 不満があったら自分で紹介記事書いてください夜露死苦! ★は重要度。五点満点。 コンパイラ同梱のツールの紹介はもうした。 htt

    OCaml 開発環境について ~ コンパイラに付属しない非公式ツールたち - camlspotter’s blog
    rydot
    rydot 2014/11/08
  • そろそろ Jane Street Core について語ろう、かな #0: Core とは - camlspotter’s blog

    Core とは Jane Street が開発、使用、オープンソースとして公開している OCaml 基ライブラリ。この Core についてちょっと書こうかな。 ちなみに、ここに書いてあるのは一ユーザとしての意見。間違っても会社の見解ではありません。念のため。 発端 まず、このエントリの発端は、Caml-list に出現した「Why don't you use batteries?」という長ーいスレッド(今長さ57)。Batteries included というのは、OCaml の「標準ライブラリ」が余りに貧弱なので、それを拡充しようというものです。古くは extlib という 3rd party ライブラリがあって、それを取り込んでさらに拡張しています。(Batteries included も 3rd party。念のため。) OCaml 貧弱標準ライブラリ まず、その、OCaml の

    そろそろ Jane Street Core について語ろう、かな #0: Core とは - camlspotter’s blog
    rydot
    rydot 2014/11/08
  • wodi

    Wodi is a godi-based ocaml distribution for windows. Its build system and package management tool rely on cygwin, but the packages - compiled with mingw-w64 and ocaml - are independent of cygwin. Admins: user8328 Members: user8328 Registered: 2012-10-07 16:28:17 Archived data: 0 open bugs 0 open feature requests 0 mailing list 0 VCS 0 released files

    rydot
    rydot 2014/11/07
  • Writing Performance Sensitive OCaml Code - Open Source @ Jane Street

    Writing Performance Sensitive OCaml Code 1) OCaml Performance The notes fall into the following categories: notes about the cost of commonly used OCaml constructs and general recommendations that might help speed up OCaml code notes on reading OCaml assembly code so that you may understand what your own OCaml programs do on the CPU. When possible we have tried to motivate these with snippets of as

    rydot
    rydot 2014/10/31
  • Functional Programming

    [J-8] 関数プログラミング: 2009年度版 筑波大学 情報科学類 学生実験(ソフトウェアサイエンス実験) 担当教員: 亀山 幸義 (kam#cs.tsukuba.ac.jp; #を@に換えてくださ い) 担当TA: 田中、小鍛治 (jikken-TA#logic.cs.tsukuba.ac.jp; #を@に換えてください。) 時期と場所: 2学期,作業は学類計算機室、 座学は総合研究棟Bの会議室(その都度指定) 関数プログラミングの世界へようこそ! 「関数型プログラム言語」という言葉を聞いたことがありますか? 「聞いたことがあるけど何だかわからない」、 「興味はあるけど難しそう」という印象の人はいませんか? 関数型プログラム言語を使えば、 C言語を使うよりもずっと、 美しく、 簡潔で、 わかりやすい プログラムを書くことができます。 実験J-

    rydot
    rydot 2014/10/19
  • 大事なことは全部MLが教えてくれた 〜 Apple の Swift の mutability 周りの件を理解する - Oh, you `re no (fun _ → more)

    開発者アカウントに金が出せない貧乏人の方々が、次の AppleSwift のコードの挙動がわからない、というので盛り上がっております: let a = [1,2] // a = [1,2] var b = a; // b = [1,2] b[1] = 3; // a = [1,3] b = [1,3] b.append(5); // a = [1,3] b = [1,3,5] b[1] = 4; // a = [1,3] b = [1,4,5]もちろんわたしも貧乏ですからわかりやすい炎上案件を待っておるわけです。これはわかりやすいわからないが来たね。 だいたい b[1] = 3 とやると a[1] も変化する、これがわからないという人 b[1] = 4 とやると a[1] が変化しない、これがわからないという人 二種類いるようです。私はまず、 b[1] に代入できることがわかりません

    大事なことは全部MLが教えてくれた 〜 Apple の Swift の mutability 周りの件を理解する - Oh, you `re no (fun _ → more)