問題タブ [haskell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskell Typeclass の略記
したがって、一緒によく使用する型クラスのペアがあり、毎回両方を指定することは避けたいと考えています。基本的に、置く代わりに
すべての型指定の最初に、
したがって、これを行う方法に関する私の最初のアイデアは、新しい型クラスを宣言することでした
しかし、これは私が望んでいたほど自動的には機能しませんでした:
インスタンスを手動で作成するのは面倒に思えるので、次に、インスタンスを自動的に作成しようと考えました。
しかし、コンパイラはそれを好まなかった:
これを行う方法はありますか?
haskell - Haskell 関数の定義と配列のキャッシュ
Haskell で配列を使用したキャッシング (メモ化) の実装について質問があります。次のパターンが機能します。
しかし、これはそうではありません(プログラムの速度は、呼び出しごとに配列が再作成されていることを示唆しています):
where句の外側(「グローバルスコープ」内)でfAを定義することも、どちらのパターンでも機能します。
上記の 2 つのパターンの違いについて、誰かが技術的な説明をしてくれることを期待していました。
私は最新の GHC を使用していることに注意してください。これが単なるコンパイラの特性なのか、それとも言語自体の一部なのかはわかりません。
編集: !は配列アクセスに使用されるため、 fA ! 5 は、C++ 構文の fA[5] を意味します。Haskell についての私の理解では、(fA !) n は (fA ! n) と同じであるということです...また、"fn = fA ! n" (括弧なし) と書く方がより一般的でした。とにかく、どのように括弧を付けても同じ動作になります。
haskell - Haskell 型クラスの複数の型パラメーター
Haskell98 で抽象化を試みていますが、その方法がわかりません。
私がやりたいことは、リストに変換できる型のクラスを定義することです。
しかし、このメソッドのクラスを定義する方法がわかりません。以下の3つの案を出しました。
Haskell98 では複数のパラメーター クラスが許可されていないため、最初のものは機能しません。
b は a に依存しており、すべての b に対して実装できないため、2 番目の方法は機能しません。
「b」が最後の型パラメーターではない型でクラスをインスタンス化する方法がわからないため、3番目も機能しません。
また
どうすればそのようなことをするでしょうか?
math - 基本的な算術式を単純化するにはどうすればよいですか?
基本的な算術式を単純化するにはどうすればよいですか?
例えば
どうすればいいですか?
私が念頭に置いている単純化は次のとおりです。
変数 (または変数と定数) が連結されるとは思わないでしょう: Var "st" は Var "s" とは異なる変数です。
私が達成したいのは、上記のような関数を使用するモジュールを作成することですsimplify :: Expr->Expr
haskell - Haskell の代数型
基本的な算術演算を使用して式を単純化するにはどうすればよいですか?
haskell - 式を文字列表現に変換しますか?
次の Haskell コードを検討してください。
式を文字列表現に変換するにはどうすればよいですか?
例えば
haskell - 原始再帰
プリミティブ再帰を使用して関数 'simplify' を定義するにはどうすればよいですか?
簡略化 :: Expr -> Expr
...
simple 基本的な算術演算を使用して式を単純化します。たとえば、単純化 (Plus (Var "x") (Const 0)) = Var "x"
haskell - Haskell でのシンボリック単純化 (再帰を使用?)
以下のすべての式を含む一般的な規則をどのように与えることができますか? たとえば、1 つの式、もう 1 つはサブ用、もう 1 つはマルチ用です。再帰を使用する必要がありますが、混乱しました...
haskell - プリミティブ再帰を使用して以下の式を単純化するにはどうすればよいですか?
重複の可能性:
Haskell でのシンボリック単純化 (再帰を使用?)
私が考えている単純化は、
定数部分式を単純化します。たとえば、次のPlus (Const 1) (Const 2)
ようになりConst 3
ます。変数 (または変数と定数) が連結されるとは思わないでしょう:Var "st"
は とは異なる変数ですVar "s"
。
例えばsimplify(Plus (Var "x") (Const 0))= Var "x"
haskell - 型エラーの理解: 「期待されるシグネチャ Int*Int->Int but got Int*Int->Int」
サーバーサイド Javascriptに関するSteve Yeggeの投稿へのコメントは、言語における型システムのメリットについての議論を開始し、このコメントは次のように説明しています。
...次のようなものを取得できるHMスタイル システムの例:
そのエラーを生成する関数定義 (または 2 つ) と関数呼び出しの例を挙げていただけますか? 大規模なプログラムでデバッグするのはかなり難しいようです。
また、ミランダで同様のエラーが発生した可能性がありますか? (15年以上使っていないので記憶があいまいです)