![見出し画像](https://assets.st-note.com/production/uploads/images/152835739/rectangle_large_type_2_bb53f93ef7d2a40abb0fe7418f372f49.png?width=1200)
OCaml
OCaml を YouTube で検索
749件
OCaml は、1996 年にフランスの INRIA の Xavier Leroy、Jérôme Vouillon、Damien Doligez、Didier Rémy によって作成されました。1960 年代に始まった ML に関する長い研究の流れに触発され、学術コミュニティと深いつながりを持ち続けています。
ML はもともと、1972 年に Robin Milner (スタンフォード大学、後にケンブリッジ大学) によってリリースされた LCF (Logic for Computable Functions) 証明アシスタントのメタ言語でした。ML は、LCF をさまざまなマシンで使いやすくするためにコンパイラーに変換され、1980 年代までに徐々に独自の本格的なシステムになりました。
Caml の最初の実装は 1987 年に登場しました。Ascánder Suárez は、Gérard Huet が率いる INRIA の Formel プロジェクトの一環として Caml を作成しました。その後、Pierre Weis と Michel Mauny が開発を続けました。 1990 年、Xavier Leroy と Damien Doligez は、高速でシーケンシャルなガベージ コレクターを備えたバイトコード インタープリターをベースにした Caml Light という新しい実装を構築しました。その後数年間で、Michel Mauny の構文操作ツールなどの便利なライブラリが登場し、教育および研究チームでの Caml の使用が促進されました。
Xavier Leroy は Caml Light を新機能で拡張し続け、1995 年に Caml Special Light をリリースしました。これにより、高速なネイティブ コード コンパイラーが追加され、実行ファイルの効率が大幅に向上し、Caml のパフォーマンスが C++ などの主流の言語と競合するようになりました。Standard ML にヒントを得たモジュール システムも、抽象化のための強力な機能を提供し、大規模なプログラムの構築を容易にしました。
現代の OCaml は、Didier Rémy と Jérôme Vouillon が強力で洗練されたオブジェクト システムを実装した 1996 年に登場しました。このオブジェクト システムは、多くの一般的なオブジェクト指向のイディオムを静的に型安全な方法でサポートしていることで有名ですが、C++ や Java などの言語では同じイディオムを実行するために実行時チェックが必要でした。2000 年に、Jacques Garrigue は OCaml を拡張し、ポリモーフィック メソッドやバリアント、ラベル付き引数やオプション引数などのいくつかの新機能を追加しました。
過去 20 年間で、OCaml は多くのユーザー ベースを獲得し、商用および学術的なコードベースの増加に対応するために言語の改善が着実に追加されてきました。2012 年までに、OCaml 4.0 リリースでは、言語の柔軟性を高めるために、一般化代数データ型 (GADT) とファーストクラス モジュールが追加されました。それ以来、OCaml は毎年安定したリリースペースを維持しており、マルチコアをサポートする OCaml 5.0 は 2022 年 12 月にリリースされました。また、x86_64、ARM、RISC-V、PowerPC などの最新の CPU アーキテクチャに対する高速なネイティブ コード サポートもあるため、リソースの使用、予測可能性、パフォーマンスがすべて重要となるシステムには OCaml が適しています。
Google Cloud Shell(GCP Cloud Shell)には OCaml はデフォルトでインストールされていませんが、自分でインストールして使うことが可能です。以下に、Google Cloud ShellでOCamlをインストールして使用する手順を説明します。
Google Cloud ShellでOCamlをインストールする手順
Google Cloud Shellを開く:
Google Cloudコンソールにログインし、右上の「Cloud Shell」アイコンをクリックしてCloud Shellを開きます。
OCamlをインストールする:
opam(OCamlの公式パッケージマネージャ)を使用してOCamlをインストールします。まず、opamをインストールします。
Terminal bash
sudo apt-get update
sudo apt-get install -y opam
OCamlをインストールする:
opamを使ってOCamlをインストールします。
opam init
eval $(opam env)
次のコマンドを実行して opam を初期化する必要があります。この方法では、公式サーバーから直接 opam の最新バージョンを取得して初期化します。
$ opam init
$ eval $(opam env)
最初のコマンド (opam init) は、opam 状態 (ホーム ディレクトリの隠しフォルダー opam に保存) を初期化します。
また、通常は default と呼ばれる最初のスイッチも作成しますが、これは単なる慣例です。
スイッチは、独自の OCaml コンパイラと、一連のライブラリおよびバイナリを備えた独立した OCaml 環境です。システム パッケージ マネージャーを使用して OCaml をインストールした場合、最初のスイッチはこのコンパイラを使用するように設定されます (「システム スイッチ」と呼ばれます)。それ以外の場合は、通常は最新バージョンの OCaml を使用してソースからスイッチを構築します。
2 番目のコマンド
(eval $(opam env))
は、使用しているスイッチをシェルに認識させるために、いくつかの環境変数を変更します。たとえば、シェルで ocaml と入力すると、現在のスイッチの OCaml バイナリが実行されるように、PATH 変数に必要なものを追加します。
注意: opam init の最後に、システムとの最適な統合のためにシェルにフックを追加するかどうかを尋ねられます。実際、シェルが現在の opam スイッチで使用可能なツールを認識するには、いくつかの環境変数を変更する必要があります。
たとえば、PATH 変数を展開して、シェルで ocaml と入力すると、現在のスイッチの OCaml バイナリが実行されるようにする必要があります。シェルにフックを追加するかの問いに y と答えると、ユーザー エクスペリエンスが向上します。
opam --version
を実行してインストールを確認します。
OCami の特定のバージョン、または新しい独立した環境が必要な場合は、opam switch create コマンドを使用して新しいスイッチを作成できます。以下に示すようにバージョンを指定します
opam switch create 4.14.0
すべての可能なコンパイラ バージョンは、
opam switch list-available
で見つけることができます。最新バージョンは、opam.ocaml.org にあります。
OCamlを確認する:
インストールが完了したら、OCamlのバージョンを確認して、正しくインストールされたことを確認します。
ocaml -version
OCaml REPLを使用する:
OCamlのREPL(インタラクティブ環境)を起動して、OCamlコードを実行できます。
ocaml
0000001
AI, not AI Bros - Ken Wheeler - 057
Backend Banter
2024-06-10
2 months ago
6,403 views
https://www.youtube.com/watch?v=g-phEzaKUw8
Backend Banter
https://www.youtube.com/channel/UCkbwOi_U5CBkevtlVhuzWnA
0000002
OCaml in 90 Seconds
#coding#webdevelopment#programming
2024-04-18
4 months ago
12,550 views
https://www.youtube.com/watch?v=6o74Kdpy5pk
Carrio Code
https://www.youtube.com/channel/UCinL4Bhd5SPb4zElxj5vKZw
0000003
Taking Erlang to OCaml 5 (with Leandro Ostera)
All Episodes
2024-03-27
5 months ago
6,300 views
https://www.youtube.com/watch?v=IxQ586TS8Gw
Developer Voices
https://www.youtube.com/channel/UC-0fWjosItIOD4ThhS6oyfA
0000004
#OCaml Nix Template
2024-01-08
7 months ago
1,436 views
https://www.youtube.com/watch?v=SgxweO5TDw8
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000005
Trying (Practically) Every Functional Language and Landing on OCaml with Sabine | 031
Backend Banter
2023-12-11
8 months ago
7,579 views
https://www.youtube.com/watch?v=qh_lerDsMoE
Backend Banter
https://www.youtube.com/channel/UCkbwOi_U5CBkevtlVhuzWnA
0000006
[OCaML'23] State of the OCaml Platform 2023
2023-12-01
9 months ago
1,418 views
https://www.youtube.com/watch?v=i4ZQ2EGI8sY
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000007
[OCaML'23] Eio 1.0 – Effects-based IO for OCaml 5
2023-12-01
9 months ago
1,237 views
https://www.youtube.com/watch?v=jr4LsCVQBj4
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000008
[OCaML'23] Efficient OCaml compilation with Flambda 2
2023-12-01
9 months ago
399 views
https://www.youtube.com/watch?v=eI5GBpT2Brs
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000009
[OCaML'23] MetaOCaml Theory and Implementation
2023-12-01
9 months ago
541 views
https://www.youtube.com/watch?v=1fn1AEHeu2I
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000010
Talking with Louis Roché about OCaml and Ahrefs
2023-06-14
1 year ago
440 views
https://www.youtube.com/watch?v=o2u9irv1tnE
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000011
Talking with Antonio Monteiro about OCaml and Melange
2023-06-14
1 year ago
259 views
https://www.youtube.com/watch?v=zKO-Y2_a-yk
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000012
emelletv #18 with KC about OCaml, Multicore and runtimes
2023-03-30
1 year ago
493 views
https://www.youtube.com/watch?v=eSLdBuaVSFM
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000013
emelletv #16 with Simon "c-cube" Cruanes about OCaml, Containers and Automated Theorem Proving
2023-01-29
1 year ago
120 views
https://www.youtube.com/watch?v=9ZlGSghBbnk
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000014
emelletv #15 with Rudi Grinberg about OCaml, Dune, Opium and dev tools
2023-01-02
1 year ago
430 views
https://www.youtube.com/watch?v=tjqLBsLaFvM
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000015
[OCaml'22] Efficient “out of heap” pointers for multicore OCaml
2022-10-19
1 year ago
794 views
https://www.youtube.com/watch?v=eIQf1bRl8_k
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000016
[OCaml'22] Highest-performance Stream Processing
2022-10-19
1 year ago
1,016 views
https://www.youtube.com/watch?v=w47xZKfQbWI
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000017
emelletv #14 with Thomas Gazagnaire talking about OCaml and Tarides
2022-08-06
2 years ago
144 views
https://www.youtube.com/watch?v=cgYL5oJEJWY
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000018
emelletv #12 with Hongbo Zhang about ReScript
2022-05-27
2 years ago
290 views
https://www.youtube.com/watch?v=aqqc93BmNBs
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000019
emelletv #13 with Camilo Azevedo about Learning, OCaml, Open Source and communities
2022-05-27
2 years ago
144 views
https://www.youtube.com/watch?v=QZroVxQstRM
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000020
emelletv #11 with Anil Madhavapeddy about OCaml, Tezos and @TrustedCarbon
2022-04-18
2 years ago
349 views
https://www.youtube.com/watch?v=zrD-JiqML50
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000021
emelletv #10 with Calascibetta "Dinoosaure" Romain about OCaml, Mirage OS and new 4.0 release
2022-03-31
2 years ago
192 views
https://www.youtube.com/watch?v=DDgJ8tABOWU
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000022
emelletv #9 with Sean Grove talking about GraphQL, OneGraph and ReasonML
2021-12-02
2 years ago
127 views
https://www.youtube.com/watch?v=9-i_7Ldkc_8
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000023
emelletv #8 with Gabriel "Drup" Radanne about OCaml, meta-programming and ML history
2021-11-24
2 years ago
227 views
https://www.youtube.com/watch?v=VgbZT-NPrcA
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000024
emelletv #6 with Jaap Frolich talking about ReScript, ppx and graphql-ppx
2021-11-02
2 years ago
85 views
https://www.youtube.com/watch?v=6E58xEV8Mos
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000025
emelletv #4 with Eduardo Rafael talking about OCaml, Tezos and probably compilers
2021-09-24
2 years ago
469 views
https://www.youtube.com/watch?v=ufwFNJIT7Kc
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000026
ML 2021 - Cameleer: a Deductive Verification Tool for OCaml
2021-09-08
2 years ago
110 views
https://www.youtube.com/watch?v=5eGKL8JZhdc
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000027
emelletv #3 with Craig Ferguson talking about OCaml, Mirage and Irmin
2021-09-07
2 years ago
235 views
https://www.youtube.com/watch?v=V668Mz-59bE
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000028
OCaml 2021 - Probabilistic resource limits, or: Programming with interrupts in OCaml
2021-09-05
2 years ago
88 views
https://www.youtube.com/watch?v=DVuRX-CUAy4
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000029
OCaml 2021 - 25 years of OCaml
2021-09-05
2 years ago
2,526 views
https://www.youtube.com/watch?v=-u_zKPXj6mw
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000030
OCaml 2021 - Full Workshop
2021-09-05
2 years ago
425 views
https://www.youtube.com/watch?v=ZYjaDmQDV0c
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000031
OCaml 2021 - Deductive Verification of Realistic OCaml Code
2021-09-02
2 years ago
274 views
https://www.youtube.com/watch?v=6d7xGHylWAg
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000032
OCaml 2021 - OCaml and Python: Getting the Best of Both Worlds
2021-09-02
2 years ago
864 views
https://www.youtube.com/watch?v=WZq8xWGmlQE
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000033
OCaml 2021 - GopCaml: A Structural Editor for OCaml
2021-09-02
2 years ago
431 views
https://www.youtube.com/watch?v=vy6oGSk7A3s
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000034
OCaml 2021 - Adapting the OCaml ecosystem for Multicore OCaml
2021-09-02
2 years ago
448 views
https://www.youtube.com/watch?v=KaX-bokQWqA
ACM SIGPLAN
https://www.youtube.com/channel/UCwG9512Wm7jSS6Iqshz4Dpg
0000035
OCaml Workshop 2021 Keynote - Xavier Leroy: 25 years of OCaml
2021-08-31
3 years ago
1,768 views
https://www.youtube.com/watch?v=PGJdHUqgX7o
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000036
OCaml Workshop 2021 - Leveraging Formal Specifications to Generate Fuzzing Suites
2021-08-31
3 years ago
97 views
https://www.youtube.com/watch?v=-6fpLF_n7cA
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000037
OCaml Workshop 2021 - Parafuzz Coverage guided Property Fuzzing for Multicore OCaml programs
2021-08-31
3 years ago
59 views
https://www.youtube.com/watch?v=GZsUoSaIpIs
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000038
OCaml Workshop 2021 - Continuous Benchmarking for OCaml Projects
2021-08-31
3 years ago
109 views
https://www.youtube.com/watch?v=folKaWN7jy4
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000039
emelletv #2 with António Monteiro talking about Melange, Esy, Reason and OCaml
2021-08-20
3 years ago
415 views
https://www.youtube.com/watch?v=nYQXV0XwzGw
emelletv
https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ
0000040
How to write parsers in OCaml using Menhir (as a jedi master)
2021-07-04
3 years ago
3,209 views
https://www.youtube.com/watch?v=z5qDV3FyYRo
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000041
Implementing the simply typed lambda calculus in OCaml (as a not mathematician)
2021-06-26
3 years ago
2,688 views
https://www.youtube.com/watch?v=E3BjV-Y6jlk
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000042
Using postgres with OCaml (as a bad developer)
2021-04-19
3 years ago
2,718 views
https://www.youtube.com/watch?v=KtAS2tnlH6U
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000043
How to write an interpreter in OCaml? (as a blockchain developer)
2021-04-17
3 years ago
7,559 views
https://www.youtube.com/watch?v=Y8RE8VcQdFU
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000044
Making a CRUD in OCaml (as a millionaire in Cambodia)
2021-04-15
3 years ago
7,704 views
https://www.youtube.com/watch?v=J1aCdZIouN0
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000045
How to do Higher Kinded Types in OCaml? (as a millionaire in Venezuela)
2021-04-13
3 years ago
3,432 views
https://www.youtube.com/watch?v=VQnmq2TgTpo
Eduardo Rafael
https://www.youtube.com/channel/UCObvxNoLzJ9xVSiNtNo63zg
0000046
OCaml Workshop 2020 - OCaml-CI : A Zero-Configuration CI
2020-08-28
4 years ago
913 views
https://www.youtube.com/watch?v=HjcCUZ9i-ug
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000047
OCaml Workshop 2020 - AD-OCaml: Algorithmic Differentiation for OCaml
2020-08-28
4 years ago
639 views
https://www.youtube.com/watch?v=KUVHbVS-PN4
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000048
OCaml Workshop 2020 - Irmin v2
2020-08-28
4 years ago
877 views
https://www.youtube.com/watch?v=v1lfMUM332w
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000049
OCaml Workshop 2020 - A Simple State-Machine Framework for Property-Based Testing in OCaml
2020-08-28
4 years ago
711 views
https://www.youtube.com/watch?v=uuL9RYuaZV4
OCamlWorkshops
https://www.youtube.com/channel/UCjrxSvgZDrku8s7eeZ-L9Tg
0000050
Raphael Sousa Santos - Programming synthesizers live in OCaml - - Lambda Days 2020
2020-02-26
4 years ago
728 views
https://www.youtube.com/watch?v=HunkqgDDZUY
Code Sync
https://www.youtube.com/channel/UC47eUBNO8KBH_V8AfowOWOw