関数の書き方は、ユーザー定義のデータ型に基づいて整数またはブール値を返しますか?

フランク・ティアン

次のようなデータ型が与えられます

data Value = IntVal Integer |
             BoolVal Bool
             deriving Show

getVal値を受け取り、内部に実際の値を返す関数を作成しようとしていますパターンマッチングで達成しようとしていました

getVal (IntVal val) = val
getVal (Bool bool) = bool

しかし、Haskellは返される型について文句を言います期待される型「整数」を実際の型「ブール」と一致させることができませんでした

だから私はそれに署名を与えました型変数を返します

getVar :: Value -> a

しかし、それも機能しません

behzad.nouri

これを行う1つの方法は、型クラスを使用して、戻り値で関数を多形にすることです

\> :t getVal
getVal :: GetValue a => Value -> Maybe a

以下のような簡単なコードで:

data Value = IntVal Integer
           | BoolVal Bool
             deriving Show

class GetValue a where
    getVal :: Value -> Maybe a

instance GetValue Integer where
    getVal (IntVal i) = Just i
    getVal          _ = Nothing

instance GetValue Bool where
    getVal (BoolVal b) = Just b
    getVal           _ = Nothing

そして型推論に正しい関数を決定させます:

\> import Data.Maybe (fromJust)
\> (3 +) .fromJust . getVal $ IntVal 5  -- getVal :: Value -> Maybe Integer
8
\> not . fromJust . getVal $ BoolVal False  -- getVal :: Value -> Maybe Bool
True

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データブリックス上の別のpysparkデータフレームのいくつかの列に基づいて、大きなpysparkデータフレームの列に対してユーザー定義関数を実行します

分類Dev

Swiftは、引数として指定された列挙のケースに基づいて、関数からさまざまなデータ型を返します

分類Dev

USQLは、ユーザー定義のデータ型列を使用してユーザー定義のテーブルタイプを作成します

分類Dev

TypeScriptのパラメーターに基づいて、辞書で関数の戻り値の型を定義します

分類Dev

JavaまたはGroovyを使用してSQLiteのユーザー定義SQL関数を作成していますか?

分類Dev

関数はProcessingでユーザー定義の型を返すことができますか?

分類Dev

データベースユーザーとテーブルの内容に基づいて行を返す方法は?

分類Dev

jQuery AjaxjSonはループの条件に基づいてデータベースから値を設定します

分類Dev

ユーザーが生成した回答を探し、ユーザー名と回答の値に基づいてTRUEまたはFALSEを返します

分類Dev

Golangのjsonのデータ型としてユーザー定義の値を持つことはできますか?

分類Dev

パンダはユーザー定義関数を複数の列のグループ化されたデータフレームに適用します

分類Dev

他の方法に基づいて、ユニットテストブール方法は、型を返します

分類Dev

Dapperはユーザー定義の複合型をPostgreSQL関数に渡すことができますか?

分類Dev

SQL Server2008のユーザー定義パラメーターに基づいてテーブルとgroupbyの結果を結合します

分類Dev

ブール値に基づいて列挙型を定義する簡単な方法はありますか?

分類Dev

辞書からの「整数」の値に基づいて「文字列」のキーを返す関数を作成しようとしています

分類Dev

WooCommerceのユーザーメタデータに基づいて配送方法を表示または非表示にする

分類Dev

データフレーム列の値をRのユーザー定義関数に置き換えます

分類Dev

MYSQL関数は列の連続した値に基づいてレコードを返します

分類Dev

テーブルをARFFに変換するVBAプログラムは、「ユーザー定義型が定義されていません」を返します

分類Dev

<forcedType>タグを使用して生成されたユーザー定義のPL / pgSQL関数のjOOQでINPUTパラメーターの適切な値の型を生成することを修正するにはどうすればよいですか?

分類Dev

postgresqlのテーブルのユーザー定義型要素にデータを挿入します

分類Dev

mysqlは、テーブル2の列1または列2の値に基づいて、テーブル1から行を返します。

分類Dev

ユーザー定義型は、Cassandraの別のユーザー定義型を参照できますか?

分類Dev

関数のパラメーター値に基づいて、C ++で関数の戻り値の型を動的に変更する方法はありますか?

分類Dev

EXCEL VBAユーザー定義関数-定義されているワークブックで使用しているときに「関数が定義されていません」というエラーが表示されるのはなぜですか?

分類Dev

Android Studios: ユーザーの位置に基づいて json データをフィルタリングすることはできますか?

分類Dev

ユーザーのテーブルがあります。idを使用してデータを取得するAPIを書きたいのですが。以下のエラーが出ます。データベースはすでにいっぱいです

分類Dev

ユーザー定義の引数に基づいてスロットルを実行する方法は?

Related 関連記事

  1. 1

    データブリックス上の別のpysparkデータフレームのいくつかの列に基づいて、大きなpysparkデータフレームの列に対してユーザー定義関数を実行します

  2. 2

    Swiftは、引数として指定された列挙のケースに基づいて、関数からさまざまなデータ型を返します

  3. 3

    USQLは、ユーザー定義のデータ型列を使用してユーザー定義のテーブルタイプを作成します

  4. 4

    TypeScriptのパラメーターに基づいて、辞書で関数の戻り値の型を定義します

  5. 5

    JavaまたはGroovyを使用してSQLiteのユーザー定義SQL関数を作成していますか?

  6. 6

    関数はProcessingでユーザー定義の型を返すことができますか?

  7. 7

    データベースユーザーとテーブルの内容に基づいて行を返す方法は?

  8. 8

    jQuery AjaxjSonはループの条件に基づいてデータベースから値を設定します

  9. 9

    ユーザーが生成した回答を探し、ユーザー名と回答の値に基づいてTRUEまたはFALSEを返します

  10. 10

    Golangのjsonのデータ型としてユーザー定義の値を持つことはできますか?

  11. 11

    パンダはユーザー定義関数を複数の列のグループ化されたデータフレームに適用します

  12. 12

    他の方法に基づいて、ユニットテストブール方法は、型を返します

  13. 13

    Dapperはユーザー定義の複合型をPostgreSQL関数に渡すことができますか?

  14. 14

    SQL Server2008のユーザー定義パラメーターに基づいてテーブルとgroupbyの結果を結合します

  15. 15

    ブール値に基づいて列挙型を定義する簡単な方法はありますか?

  16. 16

    辞書からの「整数」の値に基づいて「文字列」のキーを返す関数を作成しようとしています

  17. 17

    WooCommerceのユーザーメタデータに基づいて配送方法を表示または非表示にする

  18. 18

    データフレーム列の値をRのユーザー定義関数に置き換えます

  19. 19

    MYSQL関数は列の連続した値に基づいてレコードを返します

  20. 20

    テーブルをARFFに変換するVBAプログラムは、「ユーザー定義型が定義されていません」を返します

  21. 21

    <forcedType>タグを使用して生成されたユーザー定義のPL / pgSQL関数のjOOQでINPUTパラメーターの適切な値の型を生成することを修正するにはどうすればよいですか?

  22. 22

    postgresqlのテーブルのユーザー定義型要素にデータを挿入します

  23. 23

    mysqlは、テーブル2の列1または列2の値に基づいて、テーブル1から行を返します。

  24. 24

    ユーザー定義型は、Cassandraの別のユーザー定義型を参照できますか?

  25. 25

    関数のパラメーター値に基づいて、C ++で関数の戻り値の型を動的に変更する方法はありますか?

  26. 26

    EXCEL VBAユーザー定義関数-定義されているワークブックで使用しているときに「関数が定義されていません」というエラーが表示されるのはなぜですか?

  27. 27

    Android Studios: ユーザーの位置に基づいて json データをフィルタリングすることはできますか?

  28. 28

    ユーザーのテーブルがあります。idを使用してデータを取得するAPIを書きたいのですが。以下のエラーが出ます。データベースはすでにいっぱいです

  29. 29

    ユーザー定義の引数に基づいてスロットルを実行する方法は?

ホットタグ

アーカイブ