Download: It is recommended to install Sawja via opam but the sources are also available here : Sawja 1.5.7. Introduction Javalib is a library that parses Java .class files into OCaml data structures. Javalib offers primitives to extract information from, manipulate, and generate valid .class files. It is distributed under the GNU Lesser General Public License (see the LICENSE file) and available
Algebraic effects and handlers provide a modular abstraction for expressing effectful computation, allowing the programmer to separate the expression of an effectful computation from its implementation. In this post, I will present an extension to OCaml for programming with linear algebraic effects, and demonstrate its use in expressing concurrency primitives for multicore OCaml. The design and im
(Notes: * I know that it’s possible to make SML/NJ produce a native binary, but I still haven’t taken the time to figure out how to do it. This time comes from adding a timing wrapper in the program itself and then importing it into the interactive environment. ** Alice ML has three JIT compiler settings; this was mode 1, which proved the fastest.) So SML/NJ is not far off OCaml; it’s clearly poss
I wrote a small command-line text processing program in four different ML-derived languages, to try to get a feel for how they compare in terms of syntax, library, and build-run cycles. ML is a family of functional programming languages that have grown up during the past 40 years and more, with strong static typing, type inference, and eager evaluation. I tried out Standard ML, OCaml, Yeti, and F#
1 Coqは関数型言語OCamlとよく似ている部分が多いので、OCamlをやったことがある人は、Coqを理解するのが早いだろう。 逆に、Coqに慣れると、OCamlのプログラムが楽々かけるようになるだろう。 今日は、OCamlの視点からCoqの中身を見てみよう。 基本型 OCamlのint型は、CoqのZ型、などのように、OCamlの基本型に対応する型はだいたいCoqにもある。 OCaml Coq int Z string string(△) bool bool unit unit ただし、Coqの数字は上限および下限が無く、整数ならどんな大きな数もZ型の数字として扱うことができる。 本当に整数全体の集合なのだ。 stringに関しては、 Coqでは8bitのアスキー文字のリストで表現されているのでOCamlのそれとは全然違うのに注意しよう。 boolは同じと思ってよいだろう。CoqでもO
先日Coqの関数をOCamlのコードとして出力してみました。 サンプルとしては (* ret_num.v *) Definition ret_num (n : nat) : nat := n. Extraction "ret_num.ml" ret_num. を coqc ret_num.vして (* ret_num.ml *) type nat = | O | S of nat (** val ret_num : nat -> nat **) let ret_num n = n ができるんですが、これだとOCamlでは使いづらすぎます。(nat型ではなく、できればint型で扱いたいところ)。 で調べてみると、Coqのコード側で型がちゃんと変換されるように書くことができるらしいのです。 今回であれば Extract Inductive nat => int [ "0" "succ" ] "
SPOC is a set of tools for GPGPU programming with OCaml. The SPOC library enables the detection and use of GPGPU devices with OCaml using Cuda and OpenCL. There is also a camlp4 syntax extension to handle external Cuda or OpenCL kernels, as well as a DSL (called Sarek) to express GPGPU kernels from the OCaml code. This work was part of my PhD thesis (UPMC-LIP6 laboratory, Paris, France) and was pa
Summary This feature allows embedding assembler instructions within OCaml. It works and feels like inline assembly in GCC and supports almost everything that GCC supports. The main goal is to let OCaml use what modern CPUs have, like vectors, hardware FP or cache control, or be able to hand tune performance sensitive code. The feature grew out of my interest on how to introduce new native primitiv
きつねさんでもわかるLLVM【電子書籍】柏木餅子, 風薬 達人出版会 発行日: 2013-02-08 対応フォーマット: EPUB, PDF 詳細を見る 先日、表紙がかわいかったので、「きつねさんでもわかるLLVM」を買いました。 なので、MinCamlを改造して、バックエンドにLLVM対応コードを追加してみました。 とりあえずテステケースは全部通ったので、まとめておきます。 MinCamlとは 別名「美しい日本のMLコンパイラ」。住井先生によるMLサブセットであり、以下のようなコードを書けます。 let rec fib n = if n <= 1 then n else fib (n - 1) + fib (n - 2) in print_int (fib 30) 詳しくは解説スライドあたりを読んでください。 やったこと バックエンド部分をLLVMにきりかえた。 LLVMの作法に合せるた
This installer is out of date This installer no longer works. Do not use it. Here's some suggestions: Andreas Hauptmann's installer is very solid and does a great job of doing what this installer once did. It also gives you a working OPAM, thanks to Andreas' excellent work in patching every single package in existence to work on Windows. What you're getting is a custom (old) OPAM that was patched
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く