Haskellが文字列(リスト)の連結に `+`を使用しないことにしたのはなぜですか?

ジョンスミス

この質問をグーグルで検索するのに苦労したので、ここに投稿しようと思いました。

私はその背後にあるロジックに興味があるだけなのか、それとも++代わりに使用するのがクリエイターの好みなのかどうかに興味があります。つまり、2つの文字列(またはリスト)を連結する文字列に型クラスを使用することは、+想像するのがそれほど難しいことはないようです。

編集:ので、私は、Haskellで1は、その背後にある容疑者の理由を持っていることを、追加する必要があります+++型クラスで定義された関数であり、一方、Javaでの使用+文字列連結は、言語の構文のみクリエイターの好みにその被写体のほんの一部であるために/意見。(これまでの回答は、私が自分の疑いについて正しかったことを示唆しています。)

また、haskellは数学的背景から来ており、数学的構文の影響を強く受けているため、好みや意見だけではなく、より深い理由があるかもしれません。

AJF

簡単に言えば、タイプのトラブルを引き起こすでしょう。

(+)Numクラスの一部です

class  Num a  where
    (+), (-), (*)       :: a -> a -> a
    negate              :: a -> a
    abs                 :: a -> a
    signum              :: a -> a
    fromInteger         :: Integer -> a

    x - y               = x + negate y
    negate x            = 0 - x

そして(++) :: [a] -> [a] -> [a]

これは、最初の問題を確認するのは簡単です:私たちが望んでいた場合は(+)、リスト上で動作するように、我々は実装しなければならない(*)negateabssignum、とfromIntegerだけでなく、リストの。これは偽物です。

私たちが別のことを決めた場合は(+)型クラスから、多分呼ばれる新しい型クラス、作るPlussableために(+)、を追跡するためにあまりにも多くの型クラスがあるだろう、とのような単純な表現は1 + 2*(2-1)、もはやタイプのものでもないだろうNum a => a、それはタイプであろう(Plussable a, Timesable a, Minusable a) => a、というように操作ごとに。複雑すぎます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

「==」または「is」のいずれかを使用して文字列を比較すると、異なる結果になることがあるのはなぜですか?

分類Dev

文字列のリストを1つの文字列haskellに連結します

分類Dev

この「Dir」機能の使用が意図したとおりに機能しないのはなぜですか?

分類Dev

Matplotlibを使用したこのPythonスクリプトが非常に遅いのはなぜですか?

分類Dev

PostgreSQLがこの結合クエリにインデックスを使用しないのはなぜですか

分類Dev

条件付き演算子を使用するときに、Cが文字列の連結を許可しないのはなぜですか?

分類Dev

条件を介した文字列連結によってcssクラスを追加するのが悪い場合があるのはなぜですか?

分類Dev

このTypeErrorがなぜ発生し始めたリストに( "dict"ではなく)リストのみを連結できるのか理解できません

分類Dev

Pythonで '+'演算子を使用してリストをstrと連結できないのはなぜですか?

分類Dev

誰かがなぜそれがテストに失敗したのか理解するのを手伝うことができますか?FCCの新しいes6レッスン「テンプレートリテラルを使用した文字列」

分類Dev

ここではリフレクションを使用しないようにアドバイスされました...なぜ使用しないのですか?

分類Dev

このCookieが割り当てられたときに値を変更しないのはなぜですか?

分類Dev

PHPが文字列に内部スマート文字列を使用しないのはなぜですか?

分類Dev

csvに保存して再度開いた後、リストが文字列になるのはなぜですか?Python

分類Dev

この単純なPowershellスクリプトが必要なときに終了しないのはなぜですか?

分類Dev

「等しくない」を使用しているときに、または演算子がifステートメントで機能しないのはなぜですか?

分類Dev

BeautifulsoupのURLを連結するときに文字列を使用できないのはなぜですか?

分類Dev

Java:特にSystem.out.print()を使用して、私の本が文字列変数と空の文字列の連結を開始するのはなぜですか?

分類Dev

console.log()が文字列を連結しないのはなぜですか?

分類Dev

スコアカードが実現したいことに応答しないのはなぜですか

分類Dev

RandomNumberGeneratorを使用したこのBase36ランダム文字列が文字をランダムに分散しないのはなぜですか

分類Dev

g&を使用したときにvimが[c]フラグを保持しないのはなぜですか?

分類Dev

文字列のリストに別の文字列を連結する

分類Dev

Javaで配列の代わりにリストを使用することが望ましいのはなぜですか?

分類Dev

再帰が発生したときに、このリストがNoneTypeになるのはなぜですか?

分類Dev

SyRqを使用したこの一連のキーが機能しないのはなぜですか

分類Dev

初期化中に括弧を使用しないことがあるのはなぜですか?

分類Dev

numpy genfromtxt関数を使用して文字列を整数に変換すると、変換したいものがすべて0になるのはなぜですか

分類Dev

iconvを使用しているときにこのファイルがUTF-8に変換されなかったのはなぜですか?

Related 関連記事

  1. 1

    「==」または「is」のいずれかを使用して文字列を比較すると、異なる結果になることがあるのはなぜですか?

  2. 2

    文字列のリストを1つの文字列haskellに連結します

  3. 3

    この「Dir」機能の使用が意図したとおりに機能しないのはなぜですか?

  4. 4

    Matplotlibを使用したこのPythonスクリプトが非常に遅いのはなぜですか?

  5. 5

    PostgreSQLがこの結合クエリにインデックスを使用しないのはなぜですか

  6. 6

    条件付き演算子を使用するときに、Cが文字列の連結を許可しないのはなぜですか?

  7. 7

    条件を介した文字列連結によってcssクラスを追加するのが悪い場合があるのはなぜですか?

  8. 8

    このTypeErrorがなぜ発生し始めたリストに( "dict"ではなく)リストのみを連結できるのか理解できません

  9. 9

    Pythonで '+'演算子を使用してリストをstrと連結できないのはなぜですか?

  10. 10

    誰かがなぜそれがテストに失敗したのか理解するのを手伝うことができますか?FCCの新しいes6レッスン「テンプレートリテラルを使用した文字列」

  11. 11

    ここではリフレクションを使用しないようにアドバイスされました...なぜ使用しないのですか?

  12. 12

    このCookieが割り当てられたときに値を変更しないのはなぜですか?

  13. 13

    PHPが文字列に内部スマート文字列を使用しないのはなぜですか?

  14. 14

    csvに保存して再度開いた後、リストが文字列になるのはなぜですか?Python

  15. 15

    この単純なPowershellスクリプトが必要なときに終了しないのはなぜですか?

  16. 16

    「等しくない」を使用しているときに、または演算子がifステートメントで機能しないのはなぜですか?

  17. 17

    BeautifulsoupのURLを連結するときに文字列を使用できないのはなぜですか?

  18. 18

    Java:特にSystem.out.print()を使用して、私の本が文字列変数と空の文字列の連結を開始するのはなぜですか?

  19. 19

    console.log()が文字列を連結しないのはなぜですか?

  20. 20

    スコアカードが実現したいことに応答しないのはなぜですか

  21. 21

    RandomNumberGeneratorを使用したこのBase36ランダム文字列が文字をランダムに分散しないのはなぜですか

  22. 22

    g&を使用したときにvimが[c]フラグを保持しないのはなぜですか?

  23. 23

    文字列のリストに別の文字列を連結する

  24. 24

    Javaで配列の代わりにリストを使用することが望ましいのはなぜですか?

  25. 25

    再帰が発生したときに、このリストがNoneTypeになるのはなぜですか?

  26. 26

    SyRqを使用したこの一連のキーが機能しないのはなぜですか

  27. 27

    初期化中に括弧を使用しないことがあるのはなぜですか?

  28. 28

    numpy genfromtxt関数を使用して文字列を整数に変換すると、変換したいものがすべて0になるのはなぜですか

  29. 29

    iconvを使用しているときにこのファイルがUTF-8に変換されなかったのはなぜですか?

ホットタグ

アーカイブ