はじめに ブラウザ上で動くゲームボーイエミュレータを OCaml で書きました。以下のページで試せます。 デモページ いくつかの homebrew ROM も一緒になっているのでいろいろ遊んでみてください。おすすめは「Bouncing ball」と「Tobu Tobu Girl」です。最近のスマホならだいたい安定して 60 FPS 出るはずなので、スマホでも遊べます。 レポジトリはこちらです。 スクリーンショット なぜ OCaml でゲームボーイエミュレータ?新しいプログラミング言語を学ぶ過程で以下のように思ったことはないでしょうか? 簡単なプログラムなら書けるが、中規模以上のコード1をどうやって書けばよいのか分からない 発展的な言語機能2も勉強しなんとなく理解した気になったが、実践のなかでどのように活用すればいいのかが分からない OCaml を本格的に勉強し始めてた数ヶ月前の筆者はまさに
Getting Started with OCaml in 2021 October 29, 2021 OCaml is an awesome language with many fine features. I enjoy using it immensely! Unfortunately, it suffers from a perceived weakness in how to get started. Like any new skill, there can be a learning curve. The tools are all there, but combining them for a good developer experience might seem difficult at first. Often I’ve found that the barrier
この記事は株式会社オープンストリームアドベントカレンダーの3日目の記事です。 年の瀬ということで、いい感じに部屋が冷えてきてちょうどよいです。さて、 あまりネタがない 今回はOCamlの開発環境について書こうかと思います。 以前にも書いたんですが、ちょっとした更新とか、結構大きな更新とかがあったので、まとめということで。 Package Manager opam (OCaml Package Manager)でどうぞ。現状、過去から受け継がれているとかで無い限り、これを使わない理由は皆無になりました。 version 2.0からは、ローカルのパッケージを簡単に追加できるようになっているので、このパッケージが更新されない・・・とかにも対応することが出来たりします。 Windowsへのクロスコンパイルなどの用途でも利用できるものなので、まー大人しく使っておきましょう。なお、Windows用のバ
今回から何回かに分けて、今取り組んでいるOCamlのcross compileについて書いていきたいと思います。おおよそ三回位を予定しています。 第一回は、OCamlのcross compile事情について書きたいと思います。 Cross compileとは Cross Compileの正式な定義はいまいち判然としませんが、ここでは あるプラットフォーム上で、別のプラットフォームの実行ファイルなどをコンパイルする という定義にします。つまり、Linux上でWindowsのバイナリをコンパイルする、という感じです。 OCamlのcross compile事情 2019/10の時点で、一定以上の普及率かつ、上記の定義におけるCross complieを最も簡単に行える言語は、間違いなく Golang であることは論を待たないと思います。これは、Golang自体がlibc aware(というか再
Neural Network¶ NOTE: many places need fixes, not finished yet. I will cover the neural network module in this chapter. My original purpose of introducing neural network module into Owl is two-fold: Test the expressiveness of Owl. Neural network is a useful and complex tool for building modern analytical applications so I chose it. To validate my research argument on how to structure modern (distr
1990年代から(少なくとも一部の人に)知られていることですが、OCamlの型検査は決定不能です。この文書では、ML系モジュールシステムにおけるシグネチャマッチングの仕組みを説明した後、OCamlの型検査器がどのように無限ループに陥るかを確認します。 シグネチャマッチングML系言語において、シグネチャは、モジュールのインターフェイスを表すために用いられます。あるモジュールが何らかのシグネチャに適合していることを保証するためにsignature ascriptionという機構があります。 Standard MLでは、M : SやM :> Sという風に書くと、モジュールMがシグネチャSに適合していることを保証できます。M : Sはtransparent signature ascriptionと呼ばれ、M :> Sはopaque signature ascriptionと呼ばれます。 シグネチ
OPAMはバージョン2を使いましょう OPAMを使うと複数のOCamlコンパイラバージョンを簡単に使いわけられる ディレクトリスイッチを使うとカレントディレクトリによって自動的にスイッチできる 複数のバージョンのOCamlシステムをインストールする 複数のOCamlコンパイラバージョンを使って仕事をすることはよくあります。 普段は最新バージョンのOCamlコンパイラを使用していたとしても、例えば、依存ライブラリがまだ最新のOCamlバージョンに対応していないアプリ開発の場合には古いバージョンのコンパイラが欲しくなります。また、コンパイラバージョンによって細かい修正が必要なライブラリを開発する際にはいくつものバージョンのコンパイラが手元に必要になります。一つ一つ異なるバージョンのOCamlコンパイラを別ディレクトリにイストールしていくことは可能ですが、面倒です。 OPAMにはスイッチという概
Last year we held a machine learning seminar in our London office, which was an opportunity to reproduce some classical deep learning results with a nice twist: we used OCaml as a programming language rather than Python. This allowed us to train models defined in a functional way in OCaml on a GPU using TensorFlow. Specifically we looked at a computer vision application, Neural Style Transfer, and
With the external release of OCaml 4.07.0 imminent, we in Jane Street’s Tools & Compilers group have been planning what we want to work on for inclusion in OCaml 4.08. These days OCaml uses (or at least attempts) a time-based release process with releases scheduled every 6 months. We’re trying to avoid rushing in changes at the last minute – as we’ve been prone to do in the past – so this list is
A random dove image to get you reading :) [source]I have been spending my weekends working on Haversiner, a toy project with OCaml and Opium. I started this to see how easy it is to build an API with Opium (and I’m loving it so far!). The basic idea of Haversiner is a web API for calculating great-circle distance between two coordinates using the Haversine formula. To accomplish this, I wrote a Ha
This article is part of Hands-on OCaml, a series of articles that I’m working on that is focusing on doing web app development with OCaml. Scroll to the end to see other titles in this series. Edit 2018–08–03: Update Dune to version 1.0.1 from beta19.1. In this first article of Hands-on OCaml series, we will explore how to start building an OCaml project. The project we will be building throughout
SATySFiはOCamlのような関数型言語とLaTeXのようなマークアップ言語をベースとする新しい組版システムです。 最近SATySFi for Windowsを作ったので紹介します。 SATySFi for Windowsとは 今まではSATySFiを試すにはLinuxかMac環境が必要で、Windowsを持っている人はVMかWSLを使って試すのが一般的のようでした。 今回Windows用ビルドを整備したので、これからはWindowsネイティブ環境へのSATySFiの導入が簡単になります。 仕組み OCamlはWindowsとの相性が悪いですが、今回はMinGWターゲットでOPAMを使いたいということで、Linuxからのクロスコンパイルを用いました。 幸いopam-cross-windowsというプロジェクトが既にあったので、これのコンパイラバージョンを上げて、必要なパッケージを追加す
この記事は RECRUIT MARKETING PARTNERS Advent Calendar 2017 の投稿記事です。 こんにちは。スタディサプリENGLSHでサーバーサイドとインフラを担当している松川です。 バスケットボールを趣味にしているのですが、体育館など公共スポーツ施設の予約がなかなか取れない… 都心近郊ですと人口に対してスポーツ施設が少ないため、すぐに枠が埋まってしまいがちです。稀にキャンセルが出ることもありますが、自治体のwebサイトにプッシュ通知やRSSといった類のものは滅多にありませんので、こまめに巡回しなくてはなりません。 流石にそれは効率的ではないので「何かクローラーでも書こうかなぁ…」と思っていたところ、同僚から「OCamlのlamdba-soupというライブラリがええで!」と紹介してもらったので、これを期にOCamlデビューしてみることにしました。 結論から言
ReasonML advertises itself as Syntax and toolchain for OCaml. In this article, I'll try my best to explain what ReasonML offers to the OCaml toolchain. #What is ReasonML? ReasonML is a new dialect of OCaml which targeted at Javascript developer. It was created by the same people that brought us React.js as a way to improve how front end developers write code by avoiding lots of bugs caused by Java
General program setup If you hot reload one thing, you’ll need to reload everything that depends on it – otherwise you get type errors. So if we picture our program as a DAG, you’ll need to reload a whole chunk. In the case of reprocessing, the chunk that you reload is “all of the user’s modules”, while the library modules don’t get reloaded. Another important thing is that there needs to be a “ho
言語実装 Advent Calendar 2017 の16日目の記事です. GoCaml という OCaml のサブセットな言語を実装していて,多相型の型推論を実装するために論文を読んだり OCaml の実装をちょっと追ったりしていたので,その知識を整理する意味でこのエントリを書いています. この記事では OCaml の型推論器のベースになっている「レベルベースの多相型型推論アルゴリズム」について概略を直感的に説明しようと思います. 理論的になぜこのアルゴリズムで正しく動作するのかについてはこの記事で概要を把握した上で論文 のほうを読んでいただければ理解が速いと思います. また,この記事では最もシンプルな単相型のHM型推論については知っている前提で書きます. ご存知でない場合は, 住井先生の MinCaml の型推論実装の解説 五十嵐先生の型推論の解説 20日目の@uint256_t さん
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く