マイランド冒険


私は、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
  • 私がf ' chenについて好きでなかったもの

  • FSproJにおけるXMLの利用
  • 通常の関数で利用できないオプション引数と名前付き引数
  • CLIフレンドリー他の言語として.dotnet-cli このギャップを埋めることを試みていますが、それはまだありません.
  • 簡単に配布できるネイティブ実行可能ファイルを作成できません.
  • ocamlへの移行


    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を置き換える.私はベースではあまり良くありません.順序を修正するには、ラベルを使用する必要があります.
    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チャンネルにつまずきました.
  • Compiler" in OCaml
  • JSON Parser 100% From Scratch in Haskell

  • 後に、私は直感的に私をHaskellと恋に落ちるエルムについていくつかのビデオを見ました.
  • ラムダ宣言用のより簡潔な構文
  • 独自の行を取るタイプ
  • カスタマイズ可能な結合と優先順位を持つ演算子を入力します.
  • 単一のバイナリにコンパイルできます.
  • Typeクラス
  • 私がHaskellで見逃した1つのものは、F - Chehnのパイプライン演算子でした.幸いにも、それは簡単に定義することができます.
    λ> import Data.Function ((&))
    λ> (|>) = (&)
    λ> (<|) = ($)
    λ> [1..10] |> filter even |> map (\x -> x * 2)
    
  • Try haskell
  • Haskell the hard way
  • Haskell beginner crash course
  • CIS 194: Introduction to Haskell (Spring 2013)