タグ

ocamlに関するilyaletreのブックマーク (17)

  • 自作OCamlコンパイラでセルフホストした - molecular coordinates

    概要 ここ最近作っていたOCaml*1コンパイラmlml*2でセルフホストを達成しました。ヤッター github.com mlmlには以下に代表されるような、OCamlの基的な機能が実装されています。 再帰関数 ヴァリアント、レコード パターンマッチ カリー化 モジュール また、多少の標準ライブラリも実装されています。 mlmlの特徴 ほぼフルスクラッチ 今回LLVMやパーサジェネレータに頼らないコンパイラづくりを体験するのが目的の一部だったので、結果的にフルスクラッチらしきこと*3になりました。OCamlの標準ライブラリ以外の外部ライブラリを使用しておらず、字句解析器・構文解析器は手書きです。 OCamlで書かれている セルフホストしたのでそれはそうなんですが、OCamlで書かれています。 また、言語処理系を書く場合ランタイムライブラリはC言語で用意してリンクする場合が多いと思いますが

    自作OCamlコンパイラでセルフホストした - molecular coordinates
  • ML_Day#2を開催しました - type t (* void *)

    ML Day#2を開催しました。 ML勉強会という名前にしていたときから数えて通算4回目です。 今回もドワンゴさんのセミナー室をお借りしました。 この規模のセミナー室が便利に利用できるのは当に助かります。 発表の紹介 発表枠6 + LT枠5のあわせて11もの発表がありました。発表者の皆様に感謝です。 他のコミュニティだと割と発表者の確保に苦労しておられるようですがML勉強会からあまり困ったことがありません。 以下の紹介は私の理解ですので何か訂正があったらツイとかで指摘ください。。。 ラベルなしオプション引数のための型システムと型推論 unlabeled-opt-args.pdf - Google ドライブ 最初はSATYSFIでお馴染みの@bd_gfngfnさんの発表でした。 この発表はSATYSFI向けに、オプション引数のための型システムと型推論を考えてみたという話でした。 Latex

    ML_Day#2を開催しました - type t (* void *)
  • Unix system programming in OCaml

    unix system programming in ocaml Xavier Leroy and Didier Rémy December 1, 2014 © 1991, 1992, 2003, 2004, 2005, 2006, 2008, 2009, 2010 Xavier Leroy and Didier Rémy, inria Rocquencourt. Rights reserved. Distributed under the Creative Commons Attribution – Non commercial – Share alike 2.0 France license. See http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ for the legal terms. Translation by Dani

    ilyaletre
    ilyaletre 2018/05/02
    Rustまでいかないけど、OCamlもいちおうLinuxカーネルとinteropできるのか。
  • Statically Link

    Yes. If your platform allows (e.g. you can’t on macOS), it should only be a matter of passing -ccopt -static in your final link step in ocamlopt. > echo 'let () = print_endline "hello warld"' > a.ml > ocamlopt -ccopt -static a.ml

    Statically Link
    ilyaletre
    ilyaletre 2018/03/28
    意外とocamloptにフラグ渡すだけでいけるのか。試してみよう。
  • 多相バリアントを使いこなそう(4) - osiire’s blog

    前回までで多相バリアントの基的な機能は説明してきました。そこで今回は、多相バリアントのとても重要な応用についてお話したいと思います。それは、場合分け構造の拡張問題です。 場合分け構造の拡張は難しい 例えば、次のようなコードがあったとします。 module Card = struct type t = Num of int | Jack | Queen | King let num = function Num i -> i | Jack -> 11 | Queen -> 12 | King -> 13 end Card.tには4種類の場合分けがあり、それらに対してnumという操作が定義されています。このような場合分け構造+操作に対して、 静的で安全に(キャストせず)、 元のコードを一切変更せず、 新しい場合分けを加え、 新しい操作も加えた 新しい場合分け構造を定義する にはどうすればいい

    多相バリアントを使いこなそう(4) - osiire’s blog
  • OCaml Platform 2017

    An OCaml Workshop talk at ICFP 2017, updating on the state of the OCaml platform tooling.

    OCaml Platform 2017
    ilyaletre
    ilyaletre 2017/11/24
    今までOCamlのツールチェインよく解ってなかったので俯瞰できてよかった。
  • Table of Contents / Real World OCaml

    Prologue Why OCaml? A Brief History The Core Standard Library The OCaml Platform About This Book What to Expect Installation Instructions Code Examples Safari® Books Online How to Contact Us Contributors I. Language Concepts 1. A Guided Tour OCaml as a Calculator Functions and Type Inference Type Inference Inferring Generic Types Tuples, Lists, Options, and Pattern Matching Tuples Lists The List m

  • OCamlYaccやMenhirでコンフリクトを消す方法

    YACC の shift/reduce, reduce/reduce conflict の解消はパーサーの教科書もしくはネット情報に沢山書かれているます。まず、YACC の基動作原理とともにそれなりに理解してください。たとえば http://guppy.eng.kagawa-u.ac.jp/2006/ProgLang/bison-1.2.8/bison-ja_8.html など。 どの教科書にもありますが、だいたい、 ルールが大雑把過ぎるのが原因であることが多いので、ジェネレータが conflict で迷わないようになるまでルールを書き下す。 トークンの優先順位と結合方向を指定することで適用可能なルールの数を減らす reduce/reduce は解消したほうがよい shift/reduce の場合は shift 優先なので、それで満足ならほっておく (ただしあなたの YACC 経験値は上

    OCamlYaccやMenhirでコンフリクトを消す方法
  • Comparing Objective Caml and Standard ML

    This page compares point-by-point the Objective Caml (OCaml) and Standard ML (SML) programming languages, the two main representatives of the ML programming language family. The comparison includes language design and current tool availability, as well as further social factors. This page isn't meant to be a complete comparison, but rather to highlight differences that might lead to choosing one l

    ilyaletre
    ilyaletre 2017/06/28
    OCamlとSMLの比較。Build Systemを見る限りSML/NJのCMが良さそうなのでもう少し調べてみるか。
  • SML vs. Ocaml

    Standard ML and Objective Caml, Side by Side This page gives a quick side by side comparison of program fragments in the two ML dialects Standard ML ('97 revision) and Objective Caml (version 3.12). It is primarily targetted at people who need to convert code between the two dialects. Where suitable we also mention common extensions to SML, or recent extensions of Ocaml. The comparison does not co

    ilyaletre
    ilyaletre 2017/06/18
    OCamlとStandard MLの構文の比較。OCamlのセミコロンの使い方が未だに見慣れない。
  • ScalaMatsuri 2017 に参加しました - ろじかるんるんものがたり

    しました。感想とかそういう感じの記事になります、遅くなりましたすいません。 色々あってそもそも CFP 応募してなかったんですが、結局二日目のアンカンファレンスで発表させてもらいました。 アンカンファレンスは、一日目にまず話したいことを適当に大きめの付箋紙に書いてホワイトボードにはり、聞きたい人たちが付箋にマーカーを付けて、マーカーが多いのを二日目にやる、という感じなのですが、たくさんマーカー頂けたのでこれは頑張らないといけないぞという感じで、大変でした。 タイトルは "What is Composability in Scala" で、発表スライドは以下に。兎に角時間がなかったので、口頭で補足しまくる感じの作りになってしまいました、スライドだけ見てもよくわからないと思います。 slides.com Scala のオブジェクトシステム使えば ML 系のモジュールプログラミングができるよ、知

    ScalaMatsuri 2017 に参加しました - ろじかるんるんものがたり
    ilyaletre
    ilyaletre 2017/03/14
    予想以上にScalaとOCamlの書きっぷりが似ていて驚き。いまいち掴めてなかったScalaのモジュールシステムがこれでだいぶ見えてきた。
  • OCamlの開発環境を整えた

    当はローカルのMac OS X上に開発環境を構築したのだけど、メモを取り忘れていたので、改めてVagrantで起動したUbuntu 15.10上で開発環境を整えてみた。 まずシステムにOcamlとOPAMをインストールする。2016年1月時点ではOCaml 4.02.3が入った。 $ sudo add-apt-repository ppa:avsm/ppa $ sudo apt-get update $ sudo apt-get install ocaml ocaml-native-compilers camlp4-extra opam m4 git mercurial darcs バージョンを確認。 $ ocaml -version The OCaml toplevel, version 4.02.3 $ opam --version 1.2.2 OPAMを使うためには初期化が必要。こ

    OCamlの開発環境を整えた
    ilyaletre
    ilyaletre 2017/01/19
    基本はコンパイラとopamさえあればいい、のかな? それならNixでも環境用意できそうだ。
  • OCaml-Java

    OCaml-Java The goal of the project is to provide seamless integration of OCaml and Java: run OCaml code on a JVM, and manipulate Java entities from OCaml. Third alpha version (09 June 2015) The third alpha version is finally available, fixing several bugs, and enhancing the Java library. New alpha version (22 September 2014) A new alpha version has been released, fixing several blocking / annoying

    ilyaletre
    ilyaletre 2017/01/14
    Etaもあるので、OCamlはJVMへの対応はどうだろうと思ったらあった。bucklescriptもあるし何気にOCamlすごい(未だにビルドツール何使ったらいいのかすら、よく解ってないけど)
  • Lightweight Static Guarantees

    We have identified (more than a decade ago, in fact) a disciplined programming style that uses existing type systems in practical, mature languages (such as OCaml, Scala, Haskell, etc., and to an extent, Java and C++) to statically assure a wide range of safety properties: never dereferencing a null pointer or taking the head of an empty list; always sanitizing user input; using only in-bounds ind

  • オープンソースのOCamlからJavaScriptへのコンパイラBuckleScriptが1.0に到達

    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が最近リリースされ、重要な変...

    オープンソースのOCamlからJavaScriptへのコンパイラBuckleScriptが1.0に到達
    ilyaletre
    ilyaletre 2016/09/26
    ←js_of_ocamlしか知らなかった人。
  • HaskellとOCamlの型の違い

    Hideyuki Tanaka @tanakh 完全な型推論よりも、型システムの表現力が重要である、という考えは多分OCamlとは相容れない。そこがOCamlとHaskellの決定的な差であって、PureとかLazyとかの違いはそれに比べれば割りとどうでもいい。 2012-03-26 14:24:35 Jun Furuse 🐫🌴 @camloeba RT @tanakh 完全な型推論よりも、型システムの表現力が重要である、という考えは多分OCamlとは相容れない。そこがOCamlとHaskellの決定的な差であって、PureとかLazyとかの違いはそれに比べれば割りとどうでもいい。 2012-03-26 14:36:35

    HaskellとOCamlの型の違い
  • Developing applications with Objective Caml

    This is a preliminary translation of the book Développement d'applications avec Objective Caml by Emmanuel Chailloux, Pascal Manoury and Bruno Pagano, published by O'Reilly France. The translation is available in several formats: HTML for online reading. PDF in one big file (3 megabytes). PDF, one file per chapter. The translation is not entirely finished yet; in particular, some solutions to exer

  • 1