マイランド冒険
7186 ワード
私は、ML言語族の学習の私の旅を文書化することがおもしろいかもしれないと思いました.私は、それが他の誰かを助けるかもしれないという望みで、私が年代順(主に)で使われる資源をリストしようとします.
私の最初の露出は、スコットWlaschin Functional programming design patterns Domain Modeling Made Functional 私はどのように計算式に興味を持っていないが、私はいくつかの点で反応フックのクローンを実装するためのそれを使用する方法を考えて覚えています.読み始めた後にComputation expression series , 私は、表現が概念を理解する鍵であると理解しました.クイックGoogle検索https://www2.lib.uchicago.edu/keith/ocaml-class/definitions.html
後で、私はNAND 2テトリスパート2の代入の一部としてtokenizer + lexerを書く必要がありました.都合よく、これは私がパーサーを書くためにF - RUNKを使用することについてのポストにつまずいた時でした.
Understanding parser combinators . Using FParsec to parse LOGO Write your own compiler in 24 hours FSproJにおけるXMLの利用 通常の関数で利用できないオプション引数と名前付き引数 CLIフレンドリー他の言語として. 簡単に配布できるネイティブ実行可能ファイルを作成できません.
F - CHERHIROはもともと私がF - CHENと一緒に持っていたペット・ピーチを持っていないOcAMLに触発されていたので、私は私がOcamlを試みるべきであると決めました
OCaml basics and structure of ocaml programs
A Crash Course in OCaml Modules OCaml alternative syntax for F# computation expressions Opam docs 私はocamlでhttpieクローンを書きたかったです.それをするために、私は読書を始めたReal World OCaml 言語をよりよく理解するために.
実世界OCAMLの使用Base ocamlのstdlibを置き換える.私はベースではあまり良くありません.順序を修正するには、ラベルを使用する必要があります.
OcAMLのツーリングについてはたくさんのことが必要ですがopam-tools and duniverse .
Ocaml Twitchストリームを捜している間、私は大部分はHaskellと時折若干のOcamlをするTsodingチャンネルにつまずきました. Compiler" in OCaml JSON Parser 100% From Scratch in Haskell
後に、私は直感的に私をHaskellと恋に落ちるエルムについていくつかのビデオを見ました. ラムダ宣言用のより簡潔な構文 独自の行を取るタイプ カスタマイズ可能な結合と優先順位を持つ演算子を入力します. 単一のバイナリにコンパイルできます. Typeクラス 私がHaskellで見逃した1つのものは、F - Chehnのパイプライン演算子でした.幸いにも、それは簡単に定義することができます.
Try haskell Haskell the hard way Haskell beginner crash course CIS 194: Introduction to Haskell (Spring 2013)
発見と学習
私の最初の露出は、スコットWlaschin
後で、私はNAND 2テトリスパート2の代入の一部としてtokenizer + lexerを書く必要がありました.都合よく、これは私がパーサーを書くためにF - RUNKを使用することについてのポストにつまずいた時でした.
Understanding parser combinators .
私がf ' chenについて好きでなかったもの
dotnet-cli
このギャップを埋めることを試みていますが、それはまだありません.ocamlへの移行
F - CHERHIROはもともと私がF - CHENと一緒に持っていたペット・ピーチを持っていないOcAMLに触発されていたので、私は私がOcamlを試みるべきであると決めました
OCaml basics and structure of ocaml programs
実世界OCAMLの使用Base ocamlのstdlibを置き換える.私はベースではあまり良くありません.順序を修正するには、ラベルを使用する必要があります.
open Base
[1;2;3;4] |> List.map ~f:(fun x -> x * 2)
幸いにもContainers を指定します.open Containers
[1;2;3;4] |> List.map (fun x -> x * 2)
Ocamlコードを書くには、次のようにしてNeovimに座ったguide . 私のreplニーズのためにUtop . 複数の行を挿入するために必要なときは、C - x C - Eで開くことができるUtopの$ Editorの統合を使用しました.OcAMLのツーリングについてはたくさんのことが必要ですがopam-tools and duniverse .
ハスケル
Ocaml Twitchストリームを捜している間、私は大部分はHaskellと時折若干のOcamlをするTsodingチャンネルにつまずきました.
λ> import Data.Function ((&))
λ> (|>) = (&)
λ> (<|) = ($)
λ> [1..10] |> filter even |> map (\x -> x * 2)
Reference
この問題について(マイランド冒険), 我々は、より多くの情報をここで見つけました https://dev.to/ducaale/my-adventures-in-ml-land-126dテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol