algebraic-data-types

    5

    2答えて

    私はhaskellの代数的DTについて学んでいます。私がしたいことは、既存のものを「拡張」するような新しいADTを作成することです。私は、私が好きなものを表現する方法を見つけることができない、誰かが代替パターンを甘受することができるか、解決策を甘くすることができる。私はそれらを別々のタイプにしたいが、ばかばかしいソリューションのように縫い目だけをコピーして貼り付ける。以下のコードは、私が探している

    6

    4答えて

    どちらの概念でも、新しいデータ型を作成できます。 私が見ることのできる唯一の違いは、関数型言語では、代数的データ型でパターンマッチングを実行できることです。しかし、OO言語には匹敵する簡潔な機能はありません。これは正確な声明ですか?

    15

    2答えて

    私は、これらの2つのスニペットがいわゆる「貧しい人の厳密さ分析」の結果が異なる理由を理解するのは苦労しています。 最初の例は、(正しいApplicativeのインスタンスを想定)dataを使用する: data Parser t a = Parser { getParser :: [t] -> Maybe ([t], a) } > getParser (pure (,) <

    5

    2答えて

    ボックス化されていないベクターで使用するために、自分のデータ型をボックス化しないようにするための良いリソースを見つけるのが難しいです。 data Color = Yellow | Red | Green | Blue | Empty deriving (Show, Eq) をUnboxのインスタンスにするにはどうすればよいですか。 編集:もう少し詳しく調べてみると、いくつかの関数でパラメタを強

    3

    2答えて

    私は強い型付けに興味をそそられたので、私はいくつかのHaskellのをしようとしてきた、と私はこれに対処する最善の方法について困惑している: で定義されたベクトルデータ型Data.Vectorでは、ネストされた配列を使用して多次元配列を使用できます。しかし、これらはリストから構成され、さまざまな長さのリストは同じデータ型とみなされます(さまざまな長さのタプルとは異なります)。 どのようにこのデータ

    20

    1答えて

    私はPythonがHaskellやOcamlではないことを知っていますが、Python(2または3)で代数的データ型を定義する最良の方法は何ですか?ありがとう!

    8

    2答えて

    私はHaskellに数学的なVectorモジュールを書きました。 だから私はで始まっ:ファイン-これは私が私が望む任意の数値データ型を使用することができます data Vector a = Vector !a !a !a deriving (Eq, Show) 。問題は、私がするべきではないという簡単な理由のためにどこでもDoubleとVector Doubleを書こうとしたくないということで

    12

    4答えて

    日付が存在する必要があるDateTime型を考えてみましょう。ただし、秒単位の時間はオプションです。時間部分がある場合は、オプションのミリ秒部分もあります。ミリ秒がある場合は、ナノ秒の部分もあります。これに対処するための多くの方法があります 、例えば: --rely on smart constructors data DateTime = DateTime { days:: Int,

    17

    1答えて

    this questionとthis blog postを読むと、タイプ代数とそれを乱用する方法についての詳細がわかりました。 基本的には、 1)私たちは、さらにとしてEither A Bタイプと考えることができます:A+B 2)当社は、乗算として順序対(A,B)と考えることができます:A*B 3)私たちが考えることができます関数のA -> B累乗として:B^A ここには明らかなパターンがあります

    8

    1答えて

    に簡素化した後、私はOCamlでは、この単純なコード持っている製品の種類を分解することができません:私はそれを簡素化 # extract (A (1,2));; - : int_pair = (1, 2) 、それ: type int_pair = int * int;; type a = A of int_pair;; let extract (A x) = x;; テスト私のext