並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 5 件 / 5件

新着順 人気順

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

  • Kotlin sealedタイプによる論理和型の実装: ポリモーフィズム形式と代数的データ型形式 - ドワンゴ教育サービス開発者ブログ

    はじめに ポリモーフィズム形式の実装 ポリモーフィズム形式の実装の利点 ポリモーフィズム形式の実装の欠点 代数的データ型形式の実装 代数的データ型形式の実装の利点 代数的データ型形式の実装の欠点 まとめ We are hiring! はじめに Kotlinのsealedタイプ (sealed class と sealed interface) は、外部モジュールによるクラスの継承やインターフェースの実装 (以降は実装で統一します) を制限することで、継承先クラスの一覧を静的に取得できるようにする機能です。 以下は公式ドキュメントの例ですが、sealedタイプを使うことで log() 関数内の when が全てのとり得るパターンを網羅していることがコンパイル時にチェックされ、冗長な else を省くことができます。 また、Error インターフェースの直接の実装先が増えて when が網羅性

      Kotlin sealedタイプによる論理和型の実装: ポリモーフィズム形式と代数的データ型形式 - ドワンゴ教育サービス開発者ブログ
    • 代数的データ型がめっちゃええ。

      本記事はUzabase Advent Calendar 2023の19日目の記事です。 はじめに 株式会社ユーザベース BtoB SaaS Product Team(以下 Product Team)の山室です。 チームシャッフル[1]でこの10月から新しい開発チームに移籍したのですが、そこで初めて関数型プログラミング言語であるF#に触れました。 F#について学んでいく中で「代数的データ型」という概念を知り、普段の開発で使っていくほどに「めっちゃええやん」だったので、今回は代数的データ型についてまとめたいと思います! 代数的データ型 is 何? 代数的データ型(Algebraic Data Type: ADT)とは、特に関数型プログラミングで使われる、型を組み合わせることによって作られる型で、次の2種類から構成されます。 直積型 直積型(Product Types)は「積(AND)」を表現す

        代数的データ型がめっちゃええ。
      • 代数的データ型の作り方(値コンストラクタ,型コンストラクタについて)

        データ型の正体はメモリICです。メモリICにあるピンの1本1本が電気のON/OFFをします。これによってデータを格納する場所(アドレス)を表します。 しかしメモリICのピン(0と1の数字)としてメモリを扱うのは少し考えづらいですよね。そこで以下のようなビルディングとして捉えることにしました。 メモリが実際にこのようなビルディングの形ではない点に注意して下さい。あくまで実体としてはメモリICのピンです。しかし私たちが扱いやすいように捉え方を変えています。論理的というのは「(実際の形とは違うけれども)私たちが扱いやすい/考えやすい」という意味です。この中でデータ型はどのように扱われるのでしょうか。例えばIntというデータ型があった際、4フロア分のメモリスペースが確保されます。0と1の数字を並べていただけの時よりもこちらの方がわかりやすいですよね。 集合としてのデータ型 しかしビルディングだけで

          代数的データ型の作り方(値コンストラクタ,型コンストラクタについて)
        • 日常のプログラミングに圏論を応用する - 代数的データ型とVisitorパターンの同型性

          代数的データ型の重要性は広く知られている(と思う)が、一般に使われるプログラミング言語にはまだまだ浸透していない。 代数的データ型で物事を考える習慣がつくと、これをサポートしない言語で仕事をするのはフラストレーションが溜まる。 幸いなことに、代数的データ型を直接にはサポートしない言語でも、代数的データ型と“実質同じ”型を定義する方法がある。 本記事では、代数的データ型の比較的シンプルな例を取り上げて、それを定義する方法と、それが上手くいく圏論的な理由を簡単に紹介する。 サンプル言語はTypeScript[1]だが、総称型(ジェネリクス)をサポートする言語であれば上手くコード化できるはずである。 Maybe型 代数的データ型のシンプルな例として、今回は Maybe を取り上げたい。 任意の型 T について、型 Maybe<T> とは、値が“ない”ことを示す値 Nothing か、値 t: T

            日常のプログラミングに圏論を応用する - 代数的データ型とVisitorパターンの同型性
          • Kotlin で 代数的データ型(ADT) を使ってモデル化 - nakaoka3の技術ブログ

            関数型プログラミングでは、型を組み合わせて作る型に直和型(sum type)と直積型(product type)が存在する。直和型と直積型のことを代数的データ型という。 『なっとく!関数型プログラミング』では、Scala、F#, Haskell で代数的データ型によるモデル化の例が紹介されていた。 残念なことに、どれも普段触っているプログラミング言語ではない。仕事で触る可能性があるのはバックエンドでPerl、バックエンド・フロントエンドがTypeScript,AndroidアプリでKotlinおよびJava, iOSアプリでSwiftだ。 なので、その中から Kotlinについて代数的データ型によるモデル化を試して見ることにした。Kotlinのバージョンは1.9で試している。 アーティストのモデル化 アーティストはジャンル、活動期間、出身地の情報を持っていて、これを代数的データ型を使ってモ

              Kotlin で 代数的データ型(ADT) を使ってモデル化 - nakaoka3の技術ブログ
            1