並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 5 件 / 5件

新着順 人気順

代数的データ型の検索結果1 - 5 件 / 5件

  • コンパイル技法: パターンマッチ

    本書では関数型言語をはじめとして多くの言語にあるパターンマッチをコンパイルする方法を紹介します。パターンマッチはシンプルに条件分岐の連鎖にコンパイルすることもできますが、よく研究された手法を使えば驚くほど効率的なコードを生成できるようになります。そのような手法を2種類紹介します。 パターンマッチはデータ型に照合しそのデータを取り出すものです。例えばRustであれば match opt { Some(x) => f(x), None => g()} のように Option 型への照合などに使えます。本書の前半ではパターンマッチの挙動や使い方などを学びます。挙動の確認にはプログラミング言語Standard MLを使い、一部Cのコードも使います。その後Common LispやJavaなどの他の言語でのパターンマッチの状況を確認します。後半ではパターンマッチのコンパイル技法について紹介します。パタ

      コンパイル技法: パターンマッチ
    • Introduction to Scala 3 - Opt Technologies Magazine

      先日のScala Days 2019の基調講演などでも触れられた通り、いよいよDottyあらためScala 3のリリースが近づいて来ました。既にScala 3の仕様のかなりの部分は、Dottyとしてユーザが利用できる状態になっています。この記事では、Scala Daysでの講演スライドおよびDottyに関する各種資料を元に、Scala 3の新機能や変更点について紹介します。 あいさつ Scala 3について Dottyとは Scala 3の新機能 Top level definitions Creator applications Multiversal equalities Extension methods Enums Implicitの見直し Type classes # 2019年9月30日追記: Implicit conversions Implicit function typ

        Introduction to Scala 3 - Opt Technologies Magazine
      • 代数的データ型と初等代数学

        「関数プログラミングとはなんですか?」と問われたときには「デ,データファースト……(震え声)」と答えることが多いのだが,実際 Haskell や OCaml などの言語を特徴付けるものとして,代数的データ型 (Algebraic Data Type; ADT) の存在は無視できないだろう.その有用性ゆえに,近年では新たな言語の策定の際にその概念が輸出され,Rust や Swift などの言語にも採用されている. 「代数的データ型とはなんですか?」と問われたときには——問われたことがないのでわからないのだが——おもむろに ghci か utop を立ち上げて,解説を始めるのではないかと思う.ひとしきり解説をした後,「つまり直積の直和なんですよ〜🙌✨」と言って話を締めくくるだろう. int 型や float 型など,「メモリ上の表現」という計算機の気持ちに極めて寄り添ったプリミティヴなデータ

          代数的データ型と初等代数学
        • Justin Pombrio

          About MeWPI Transcript Brown Transcript Friends Pictures Resume ArchiveBlackout Faster Than Light Hex Board Invariants Listening To OEIS Logic Gates Penrose Maze Syntactic Sugar Terminal Colors Formatted Notes Rust Quick Reference Notes on Concurrency Puzzles There and Back Again The Prisoners' Lightbulb Tree Editors Tree Editor Survey Programming A Twist on Wadler's Printer Preventing Log4j with

          • Scalaで実用的な列挙型(enum)を定義する ※enumeratum使用 - Qiita

            1. はじめに Scalaで列挙型(Javaでいうenum)を定義する場合、以下のようにsealed trait(またはabstract class)とcase objectの組み合わせで定義するのが常套手段となっています。 // 列挙メンバーの型を定義 sealed trait Fruits // 列挙の各メンバーを内包するコンパニオンオブジェクトを定義 object Fruits { case object Apple extends Fruits case object Orange extends Fruits case object Banana extends Fruits } 参考: ScalaのEnumerationは使うな Scalaで列挙型を定義するには 【Scala】列挙型を使おう | Developers.IO こうすることで==やパターンマッチで判別できるようには

              Scalaで実用的な列挙型(enum)を定義する ※enumeratum使用 - Qiita
            1