並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 81件

新着順 人気順

ocamlの検索結果1 - 40 件 / 81件

ocamlに関するエントリは81件あります。 OCamlプログラミングprogramming などが関連タグです。 人気エントリには 『パイプライン演算子の歴史 - まめめも』などがあります。
  • パイプライン演算子の歴史 - まめめも

    (You can read this article in English.) Ruby の開発版にパイプライン演算子(pipeline operator)が試験的に導入されましたが、いろいろあってプチ炎上になっています(チケット)。 せっかくの機会なので、パイプライン演算子の歴史を調べてみました。付け焼き刃の調査なので、間違ってたら教えてください。 パイプライン演算子とは こんな感じのものです。 x |> f |> g |> h # h(g(f(x))) と同じ意味 h(g(f(x))) という関数適用の式は、関数が呼ばれる順序(f→g→h)と、プログラムの字面上の順序(h→g→f)が逆でわかりにくいとされます。この問題は、特に、関数が大きくなったときに顕著になります。 wonderful_process_h( marvelous_process_g( fantastic_process

      パイプライン演算子の歴史 - まめめも
    • OCaml でゲームボーイエミュレータを書いた話 - Qiita

      はじめに ブラウザ上で動くゲームボーイエミュレータを OCaml で書きました。以下のページで試せます。 デモページ いくつかの homebrew ROM も一緒になっているのでいろいろ遊んでみてください。おすすめは「Bouncing ball」と「Tobu Tobu Girl」です。最近のスマホならだいたい安定して 60 FPS 出るはずなので、スマホでも遊べます。 レポジトリはこちらです。 スクリーンショット なぜ OCaml でゲームボーイエミュレータ?新しいプログラミング言語を学ぶ過程で以下のように思ったことはないでしょうか? 簡単なプログラムなら書けるが、中規模以上のコード1をどうやって書けばよいのか分からない 発展的な言語機能2も勉強しなんとなく理解した気になったが、実践のなかでどのように活用すればいいのかが分からない OCaml を本格的に勉強し始めてた数ヶ月前の筆者はまさに

        OCaml でゲームボーイエミュレータを書いた話 - Qiita
      • 40歳から始める関数型言語、OCaml - すぎゃーんメモ

        動機 Why OCaml 学習方法 Real World OCaml Github Copilot と ChatGPT オンラインジャッジ (競プロ) Advent of Code その次? 所感 関数型という概念 OCamlの書き味 Rust, Python の経験 AIとの親和性 まとめ 某Nさんがここ最近Haskellとか勉強してて楽しそうで真似してみたくなって、自分も今さらながら何か関数型言語はじめてみるか〜と周りに相談したところOCamlをオススメされたので 今年に入ってからひたすらOCaml書く練習してる。AtCoder Boot camp for BeginnersのEasy 100をようやく終わらせたところ。 pic.twitter.com/POBWhvHHCn— すぎゃーん💯 (@sugyan) April 9, 2023 大西さんが動画の中で感極まっていたけど、宮川さ

          40歳から始める関数型言語、OCaml - すぎゃーんメモ
        • 直和型の代わりにユニオン型を持つ静的型付け関数型言語 Cotton

          // 割る2をする関数の引数が偶数であることを型によって強制する例(実用性はない) data O // 数字の0を表すデータ型 data S(A) forall { A } // +1を表すデータ型 // 型エイリアス type Nat = O | S[Nat] // 非効率すぎる他倍長整数 type Even = O | S[Odd] type Odd = S[Even] // 偶数を引数にとって2で割った結果を言語組込みの整数として返す関数 div2 : Even -> I64 = // 網羅性チェックつきのパターンマッチ | O => 0 | S(S(n)) => 1 + n.div2 TL;DR ユニオン型は直和型の上位互換である(追記あり)。関数型言語を作るときは直和型の代わりにユニオン型を採用するのもあり。 はじめに Cottonというプログラミング言語を2021年の夏頃から作

            直和型の代わりにユニオン型を持つ静的型付け関数型言語 Cotton
          • 関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ - Arantium Maestum

            先日こういうツイートがあった: Haskellとかの関数型言語を使用しているプログラマの皆様にお聞きしたいんですけど、「関数名 引数 引数 ...」みたいな関数呼び出し構文って見にくくは無いですか?「関数名(引数, 引数, ...)」に慣れたこちらからすると、丸括弧が無いからコード中のどこが関数呼び出しなのかパット見で把握しにくい。— sounisi5011/プログラム (@sounisi5011Prog) February 22, 2022 「見にくくは無いですか?」と聞かれると、個人的には「全然大丈夫です」と答えざるを得ないのだが、次のツイートに関しては考えさせられた: 数式でも函数には丸括弧を使ってるのに、どこのタイミングで丸括弧が消失したのかわからないし、その選択をした理由も思いつかない。— sounisi5011/プログラム (@sounisi5011Prog) February

              関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ - Arantium Maestum
            • 抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】

                抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】
              • GitHub - janestreet/magic-trace: magic-trace collects and displays high-resolution traces of what a process is doing

                magic-trace collects and displays high-resolution traces of what a process is doing. People have used it to: figure out why an application running in production handles some requests slowly while simultaneously handling a sea of uninteresting requests, look at what their code is actually doing instead of what they think it's doing, get a history of what their application was doing before it crashe

                  GitHub - janestreet/magic-trace: magic-trace collects and displays high-resolution traces of what a process is doing
                • GitHub - returntocorp/semgrep: Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.

                  …7912) This will help #7911 The next PR will add support for those patterns in ocaml-tree-sitter-semgrep test plan: ``` $ cat foo.sgrep public record $R(...) { ...} $ semgrep-core -l java -dump_pattern foo.sgrep <source>, line 1, characters 24-27: public record $R(...) { ...} parent: class_body, left sibling: "{", first child: "..." node type: ERROR children: [ "..." ] Unrecognized construct misc_

                    GitHub - returntocorp/semgrep: Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.
                  • 自作OCamlコンパイラでセルフホストした - molecular coordinates

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

                      自作OCamlコンパイラでセルフホストした - molecular coordinates
                    • 僕がお金を払ってでも教わりたいこと 2021

                      追記 一旦締め切りました。 連絡をくださった方、書籍などのアドバイスをくださった方ありがとうございます。 本文 謝礼をお支払いするので、教えて欲しいことがあります。 自習しろと言われそうですが、試行錯誤するには人生が短すぎたり、爆速突破するには能力が足りなかったりで色々辛くなってきたので何卒。 以下、学びたい優先度順です。同時に学べるのは多くて 2 つで、被った場合は優先度順でお願いすることになります。 教えて欲しいこと OCaml で Parser Combinator を 0 から作る 狙い: 関数型プログラミング言語とそれの使い方を学びたい。また、OCaml のエコシステムに詳しくなりたい。 Monadic Parser をゼロから作ることで、関数型プログラミングのテクニックや考え方を学びたいです。 すでに 教科書的な簡単な Monadic Parser を 0 dependenci

                        僕がお金を払ってでも教わりたいこと 2021
                      • IoPLMaterials

                        学習の仕方 計算機科学コースの学生には講義中に別途やり方を指示します.(実験3SWもやるので.) この講義資料の GitHub のページからリポジトリを clone しましょう. OCaml が使えるように環境を設定しましょう. 落ちてきたソースコード中の textbook/interpreter/ ディレクトリの中にインタプリタのソースコードが入っているので,duneコマンドでビルドしましょう. 教科書を読みながらもりもり演習問題を解きましょう. 教科書にバグを見つけたら issue で報告しましょう. 講義の履修者は講義用 Slack で質問してもよいですね. プログラミング言語強者になりましょう.そのためには... なにか自分で言語を作って処理系を作ってみましょう.作った処理系を自慢しましょう.世界中で自作の言語が使われるようになったらいいですね. もしくは,プログラミング言語理論や

                        • パッケージマネージャを自作するときに考えること - gfnweb

                          プログラミング言語を自前で創っていると,パッケージマネージャが欲しくなってくるものだ.既存パッケージマネージャやそのラッパーによる配布で事足りることも多いが,自前言語の要件とうまく合わなかったりして,真に自分で実装せねばならないこともある.そうした場合,パッケージマネージャをどんな設計にすべきだろうか? 言語固有の都合には触れずになるべく一般に考慮すべき事項を洗い出し,簡単な設計例も提示してみたい. なお,本稿はパッケージマネージャの設計に焦点を当てたものであり,効率的に依存制約を解消するアルゴリズムなど実装の詳細については解説しない.実際例えばOCamlでは 0install-solver というOPAMの裏でも使われているパッケージを利用すれば制約解消アルゴリズムそのものに踏み込まずとも制約解消処理を実装でき,(それ自体に興味があるときを除けば)必ずしもアルゴリズムを理解する必要はない

                          • OCaml Programming: Correct + Efficient + Beautiful — OCaml Programming: Correct + Efficient + Beautiful

                            Preface About This Book Installing OCaml Introduction 1. Better Programming Through OCaml 1.1. The Past of OCaml 1.2. The Present of OCaml 1.3. Look to Your Future 1.4. A Brief History of CS 3110 1.5. Summary 2. The Basics of OCaml 2.1. The OCaml Toplevel 2.2. Compiling OCaml Programs 2.3. Expressions 2.4. Functions 2.5. Documentation 2.6. Printing 2.7. Debugging 2.8. Summary 2.9. Exercises OCaml

                            • Interesting Programming Languages

                              An opinionated collection of programming languages. This is a list of what I consider interesting. Requests to add to this list are welcome, but there is no guarantee I’ll include them. As you can see many mainstream programming languages are misssing from this list. Alore is a language that explores optional typing in a Python-like programming language.Alpaca is a statically typed, strict/eagerly

                              • 第一引数版パイプライン演算子 - Qiita

                                You can read this article in English. Ruby の trunk にパイプライン演算子が入ったと話題になっていますね。 現在は意見募集中みたいな期間らしいので、思うところがある人は意見を上げると良いのではないでしょうか。 (※ Matz は「余計な混乱を生むから、名前は『チェーン演算子』とかにして記号も変更するよ( >>> とか?)」って言ってますね。 参照) ところでこの「パイプライン演算子」そのものについて、これを期に色々と語られているようですね。 @mame さんの記事がよくまとまっていてとてもわかりやすく読みやすいです。 雑に今回お話する内容に関係ある要点を抽出します。 Isabelle/ML が発祥で F# が広めた 本来は「演算子の前の式の結果を、後ろの式の結果に関数適用するもの」 なのだけど Elixir はこれを「前の式の結果を後ろの関数

                                  第一引数版パイプライン演算子 - Qiita
                                • ML系言語で型注釈が必要なケース - Qiita

                                  ML系言語は型推論が得意なので基本的には型を書かなくてもコードを書けますが、状況によっては型注釈が必要になります。代表的なML系言語3つ(SML, OCaml, Haskell)について、それぞれ型注釈が必要になる(型注釈がないとコンパイルが通らない)ケースを挙げてみます。 なお、ここでは型システムのみに注目し、評価戦略はどうでもいいので、Haskellも「ML系言語」に含めています。 また、MLのモジュール/ファンクター周りは扱いません。コア言語のみを対象にします。 SML SMLで型注釈をなくすとコンパイルが通らなくなるのは、例えば以下の例です: 組み込み演算子やリテラルのアドホックなオーバーロード レコードを受け取る関数 リテラルの例: val x: IntInf.int = 12345678901234567890123; (* 型注釈を剥ぐとダメ: val x = 1234567

                                    ML系言語で型注釈が必要なケース - Qiita
                                  • OCaml 製 ActivityPub サーバ Waq の紹介 - HackMD

                                    今年に入ってからずっと、OCaml で ActivityPub サーバを書いています。名前は Waq(ワク)で、例によって GitHub で大公開しています。SNS に必要な最低限の機能は揃っていて、README に従うと Docker Compose でデモが動かせるので、よければ試してみてください。

                                      OCaml 製 ActivityPub サーバ Waq の紹介 - HackMD
                                    • Walk around functional web frontend programming

                                      https://opt.connpass.com/event/222709/

                                        Walk around functional web frontend programming
                                      • ML のサブセットの型推論器を Coq で検証する - fetburner.core

                                        この記事は言語実装 Advent Calendar 2020 の5日目の記事です. 一度でも型推論器を書いたことがあれば,そのあまりの邪悪さ,あるいはその複雑さに恐れ慄いたことでしょう. 参照を用いて単一化を実現しようものなら構文木は参照に汚染され,純粋関数型に実装しようものなら大量の型代入をどのような順序で適用したものか悩まされる. これは Hindley-Milner 型推論器を実装する上での宿命のようなものです. 本記事では,MLのサブセット——型付きλ計算をletと参照で拡張した,let多相をサポートする言語——の型推論器を Coq で実装し,その正当性を証明します. Coq で検証を行うことで我々は型推論器のバグへの恐怖とデバッグの労力から真に解放され,枕を高くして眠ることができることでしょう. もっとも、型付きλ計算を let 多相で拡張した言語の型推論器の正当性は実はすでに証

                                          ML のサブセットの型推論器を Coq で検証する - fetburner.core
                                        • 型クラスのご紹介 - molecular coordinates

                                          この記事は型 Advent Calendar 2019の23日目です。 おはようございます!!!coord_eです、よろしくどうぞ。 はじめに この記事ではOCamlみたいなML系言語が登場します。関数型プログラミング言語と呼ばれる何かしらに触れたことがある人ならお気持ちで読み取れると思います。そうでない人はこちらからOCamlに入門してみると楽しいと思います。楽しいと思いますって何ですか... また、私は正直なところこの記事を書くにあたって関連する十分な量の文献を読みこむことができたわけではなく、誤りが存在することは容易に想像できます。誤字や誤謬を発見された方は@coord_eまでご連絡ください。 概要 型クラス (type class)はWadlerによって[1]で提案された言語機能だ。本記事では型クラスを導入する動機をオーバーローディングの観点から紹介した後、Wadlerの型クラスを

                                            型クラスのご紹介 - molecular coordinates
                                          • Release OCaml 5.0.0 · ocaml/ocaml

                                            OCaml 5.0.0 introduces a completely new runtime environment with support for shared memory parallelism and effect handlers. As a language, OCaml 5 is fully compatible with OCaml 4 down to the performance characteristics of your programs. In other words, any code that works with OCaml 4 should work the same with OCaml 5. The currently known exceptions to this rule are: the removal of many long-depr

                                              Release OCaml 5.0.0 · ocaml/ocaml
                                            • 限定継続いろいろ | 雑記帳

                                              このブログでは限定継続について過去に何回か記事を書きました: LunarMLと継続限定継続と例外とモナド 今回、LunarML向けのVMに限定継続を実装してみて理解が深まったので、改めて記事にします。 限定継続:スタックを使ったざっくりとした説明 今回はスタックを使って限定継続をざっくりと説明してみます。 関数という概念を持つプログラミング言語では、スタックを使って関数の呼び出しを管理することが多いです。コールスタックとか、スタックのバックトレースとか言いますよね。ここではネイティブのスタックか仮想マシンのスタックかというのは問いません。 関数を呼び出すと、フレームと呼ばれる領域がスタックに確保されて、関数への引数やローカル変数はそこに確保されたりします。 例えば、以下のプログラムを考えます: void g() { // すごい計算 } void f() { double j; g();

                                              • Caramel: massively scalable, type-safe applications

                                                caramel is a functional language for building type-safe, scalable, and maintainable applications Install Docs Discord Code

                                                  Caramel: massively scalable, type-safe applications
                                                • 関数型言語初心者にこそおすすめしたい"OCaml"の特徴

                                                  2019年7月29日、Opt Technologiesが主催するイベント「Fun Fun Functional (2) 関数型言語Lightning Talks!!」が開催されました。関数型プログラミングについて楽しく学び、知見を共有することを目的に開催されている本勉強会。今回は6名のエンジニアが、関数型プログラミング言語にまつわるユニークな発表を行いました。プレゼンテーション「関数型初心者にこそおすすめしたい言語 "OCaml" 」に登壇したのは、cedretaber氏。講演資料はこちら 関数型初心者にこそおすすめしたい言語 "OCaml" cedretaber氏(以下、cedretaber):「関数型初心者にこそおすすめしたい言語 "OCaml"」ということで、またOCamlの話だということになってしまうんですが。 自己紹介、cedretaberと申します。 「ドワンゴから来ました」っ

                                                    関数型言語初心者にこそおすすめしたい"OCaml"の特徴
                                                  • GitHub - OCamlPro/owi: OCaml WebAssembly Interpreter

                                                    Owi is a toolchain to work with WebAssembly. It is written in OCaml. It provides a binary with many subcommands: owi c: a bug finding tool for C code that performs symbolic execution by compiling to Wasm and using our symbolic Wasm interpreter; owi fmt: a formatter for Wasm; owi opt: an optimizer for Wasm; owi run: a concrete Wasm interpreter; owi script: an interpreter for Wasm scripts; owi sym:

                                                      GitHub - OCamlPro/owi: OCaml WebAssembly Interpreter
                                                    • SCamlによるTezosプログラミング#0

                                                      SCaml という Tezos ブロックチェーン のためのスマートコントラクト記述言語とコンパイラを作って元旦にリリースしました。 コンセプトの紹介(英語) リリースのお知らせ(英語) プロジェクトページ レポジトリ 第0回: コンセプトの説明 第1回: 準備 第2回: 概観 第3回: ウォレット操作 第4回: スマートコントラクトのデータ型 第5回: はじめての SCaml コントラクト 第6回: もう少し複雑なコントラクト。パラメータとストレージ 第7回: 投票コントラクトを書いてみる このブログではSCamlを使ったTezosスマートコントラクトプログラミングについて少しずつ日本語で連載をしていきたいと思います。 初回はプログラミングではなく、SCamlの基本設計コンセプトについてです。一部、プログラミング言語設計についての知識がなければ理解できないところがありますが、読み飛ばされて

                                                        SCamlによるTezosプログラミング#0
                                                      • 世界のプログラミング言語(27) デキるやつが使ってる『OCaml』は実用的な関数型言語

                                                        OCamlは関数型言語の一つで、実用性の高さで人気があります。オブジェクト指向や強い静的型付けなどの特徴を持ち、実行速度がC言語並みに速いことも特徴の一つです。筆者の中ではデキるプログラマーが好んで使っているイメージがあります。Microsoftが開発した.NET対応言語のF#をはじめ、多くの言語にも大きな影響を与えました。今回は、OCamlについて紹介します。 OCamlのWebサイト OCamlについて OCamlは、もともとプログラミング言語ML言語の方言の一つです。もともと、「Objective Caml」という名前でしたが、OCamlに改名されました。つまり、OCamlのOはオブジェクト指向のOなのです。1996年にフランスのINRIA(フランス国立研究所)で開発されました。 残念ながら原稿執筆時点では、TIOBE Indexなどの人気プログラミング言語ベスト50にはランクインし

                                                          世界のプログラミング言語(27) デキるやつが使ってる『OCaml』は実用的な関数型言語
                                                        • OCamlの型検査は決定不能

                                                          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と呼ばれます。 シグネチ

                                                          • OCamlとCoqでブロックチェーンプログラミング

                                                            2019年7月29日、Opt Technologiesが主催するイベント「Fun Fun Functional (2) 関数型言語Lightning Talks!!」が開催されました。関数型プログラミングについて楽しく学び、知見を共有することを目的に開催されている本勉強会。今回は6名のエンジニアが、関数型プログラミング言語にまつわるユニークな発表を行いました。プレゼンテーション「OCamlとCoqでブロックチェーンプログラミング 」に登壇したのは、yoshihiro503氏。 OCamlとCoqでブロックチェーンプログラミング yoshihiro503氏(以下、yoshihiro503):みなさんこんにちは。こういう鶏のアイコンのyoshihiro503です。今日「OCamlは良いぞ!」という話をします。株式会社ドワンゴのDMC開発部に所属しています。 簡単に自己紹介を

                                                              OCamlとCoqでブロックチェーンプログラミング
                                                            • OCamlコンパイラのバックエンドを提供するMalfunctionが面白そう - Arantium Maestum

                                                              OCamlのDiscuss掲示板を眺めていたらこんなプロジェクトについての言及があった: github.com Malfunction is a high-performance, low-level untyped program representation, designed as a target for compilers of functional programming languages. OCamlコンパイラの中間表現であるLambda言語(とほぼ同等のもの)を受け取り、OCamlバイトコードかnativeコードへのコンパイルをしてくれるようだ。 (追記:バイトコードにコンパイルできるというのは間違い。実際にはOCamlコンパイラとは別なLambda言語インタプリタがある) Lambda IRはOCamlコンパイラにフラグを渡すと出力してくれる。以前少し調べていくつか記事

                                                                OCamlコンパイラのバックエンドを提供するMalfunctionが面白そう - Arantium Maestum
                                                              • 時間を加味したモデリング - DeNA Testing Blog

                                                                こんにちは、SWETの鈴木穂高(@hoddy3190)です。 現在SWETチームにて仕様の欠陥をなるべく早くみつける取り組みにチャレンジしています。 欠陥をみつけるタイミングが早ければ早いほど、開発中の手戻りに伴うコストを抑えられます。 たとえば、仕様作成フェーズ、実装フェーズ、QAフェーズの順で開発が進んでいくときに、仕様の欠陥が実装フェーズやQAフェーズでみつかると実装やQAのやり直しを引き起こしかねません。 そうした大きな手戻りを抑えるために仕様の欠陥をなるべく仕様作成フェーズでみつけることを目指します。 対象領域に出てくる要素をモデリングすることは、仕様に潜む欠陥を開発の早い段階でみつけるための、有効な手段のひとつです。 要素には、開発者がこれから作るシステムや、そのシステムのユーザー、そのシステムと直接的または間接的に相互作用する外部のシステムが含まれます。 単に図を書くというモ

                                                                  時間を加味したモデリング - DeNA Testing Blog
                                                                • Dark's new backend will be in F#

                                                                  Welcome HN! Dark is a programming language, structured editor, and infrastructure—all in one—whose goal is to make it 100x easier to build backend services. Check out the website, our What is Dark post, and How Dark deploys in 50ms for more. Thanks for checking us out! Part of a set with Leaving OCaml and Why Dark didn't choose Rust. Nothing in my life so far would have prepared me for the fact th

                                                                    Dark's new backend will be in F#
                                                                  • 「コンピュータを操る」

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

                                                                    • Writing a Game Boy Emulator in OCaml

                                                                      IntroductionFor the past few months, I have been working on a project called CAMLBOY, a Game Boy emulator written in OCaml that runs in the browser. You can try it out on the following demo page: Demo Page I included several homebrew ROMs in the demo, so please try them out (I recommend Bouncing ball and Rocket Man Demo). You can also play with it in your mobile browser as it runs at 60 FPS on rec

                                                                        Writing a Game Boy Emulator in OCaml
                                                                      • Dream — Tidy, feature-complete web framework

                                                                        let hello who = <html> <body> <h1>Hello, <%s who %>!</h1> </body> </html> let () = Dream.run @@ Dream.logger @@ Dream.router [ Dream.get "/" (fun _ -> Dream.html (hello "world")); ] Dream is an easy-to-use, boilerplate-free Web framework, whose entire API fits on this page! It supports TLS, WebSockets, and GraphQL. HTTP/2 support is transparent. It also includes: a nice log and OCaml runtime confi

                                                                        • Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml

                                                                          Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCamlby Isabella Leandersson, Thomas Leonard, and Anil Madhavapeddy on Mar 20th, 2024 The OCaml 5 update brought much-anticipated support for programming on multiple cores. It also introduced support for concurrency via effect handlers – one of the first mainstream languages to do so. This significant update has had profound performa

                                                                            Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml
                                                                          • ワンショット代数的効果から 非対称コルーチンへの変換

                                                                            ワンショット代数的効果から 非対称コルーチンへの変換 河原 悟, 亀山 幸義 PRO2019-01 June 6, 2019 ワンショット代数的効果から 非対称コルーチンへの変換 背景 コルーチン コルーチンの合成性 代数的効果 研究 操作の対応 実装 応用 まとめと課題 変換 関連研究 対称コルーチンと非対称コ ルーチン ワンショット継続とコルーチ ンの複製 0/26 背景 コルーチン 様々な言語が持っている Lua, Ruby, C#, Kotlin, etc. 強力なコントロール抽象 async/await、イテレーション、 etc. 合成性(composability)に欠ける 背景 1/26 背景 代数的効果 インターフェースと実装を分離できる モジュール性、合成性が高い いくつかのコントロール抽象との関係が知られている 代数的効果 7→ 限定継続 代数的効果 7→ Free モ

                                                                            • デッドロック発見器を作って学ぶマルチスレッドプログラミング ★共有変数編★ (2019/10/19 12:30〜)

                                                                              キャンセル・参加費用の払い戻しについて主催者からの説明: お申込み後のキャンセルはできません.セミナーについての説明をよくお読みいただき,十分ご検討の上お申し込みください.セミナー当日に不参加であったとしても参加費用は返却されません. セミナーの内容 参加者が自分の好きなプログラミング言語でデッドロック発見器を作り,それを使ってマルチスレッドプログラミングを学ぶハンズオンセミナーです. 作っていただくデッドロック発見器はマルチスレッドプログラムの動き全体を状態遷移図として可視化し,その過程でデッドロック状態を発見するというものです.以下にデッドロック発見器の出力例を示しました. 水色の状態は初期状態で,赤い状態がデッドロック状態です.デッドロック状態からは遷移が1つも出ていないので,この状態に達するとプログラムは停止してしまうことがわかります.動作し続けるパスもあり,必ず再現するわけではな

                                                                                デッドロック発見器を作って学ぶマルチスレッドプログラミング ★共有変数編★ (2019/10/19 12:30〜)
                                                                              • soupault

                                                                                Soupault (soup-oh) is a static website generator/framework that works with HTML element trees and can automatically manipulate them. It can be described as a robotic webmaster that can edit HTML pages according to your rules, but doesn’t get tired of editing them. You can use soupault for making blogs and other types of websites, pretty much like any other SSGs (Jekyll, Hugo, Eleventy, etc.). Howe

                                                                                • 文字列を段階的に組み立てる - Qiita

                                                                                  プログラムで文字列を組み立てていると、 "(" ^ なにか ^ ")" のように、文字列結合で段階的に結果を組み立てたいことがある。 文字列が小さいことがわかっているうちはこれでもよいのだけれど、文字列が大きくなってくると段々と計算量が気になってくる(特に最適化をしていなければ、文字列の長さを n とすると結合のたびに O(n) のコストがかかる)。 左から右に組み立てることがわかっていれば、OCamlなら Buffer モジュールが使えるが、括弧のようなものがからむとそうも言っていられない。 stringを使うのをやめて、ropeのようなデータ構造を使う手もあるけど、依存ライブラリを増やしたくない場合もある(言語処理系によっては文字列の内部表現がropeになっていて以下のような小細工をする必要がない場合もある)。 ということで、自分でデータ構造をつくってみる。

                                                                                    文字列を段階的に組み立てる - Qiita

                                                                                  新着記事