1

現在、Haskell を試していて、再帰の観点からループを書き直すのに苦労しています。

関数 f(x) を取り、中間点法を介して [a, b] の範囲で積分する基本的な積分器を作成しようとしています。積分関数は、N、a、および b の 3 つのパラメーターを使用します。N は、積分を近似するために使用される四角形の数です。

Wolfram Alpha リンク

これを GHCI でコンパイルしようとすると、多くの抽象的なエラー メッセージが表示され、どこから始めればよいかわかりません。多くの「範囲外」といくつかの「Main.a [または b] の複数の宣言」。

ありがとう

MPInt 1 a b = DELTA 1 -- Base case
MPInt N a b = (MPInt (N-1) a b) + DELTA
     where 
     dX = (b - a) / N
     DELTA = dX * f (a + dX * (N+0.5))

f :: (Num a) => a -> a
f x = x^2
4

1 に答える 1

10
  • 関数に名前を付けましMPIntた。モジュール、クラス、型、およびコンストラクターの名前のみを大文字で始めることができます。値 (関数を含む) は小文字 (またはアンダースコア、または特定の句読点) で始まる必要があります。N同じ問題がとにも当てはまりますDELTA

  • DELTAの最初のケースの定義で使用しますMPIntが、2 番目のケースの一部として定義されています。句は、そのwhere直前の式 (この場合はMPInt N a b = ...定義) にのみ適用されます。(また、この最初の の使用でDELTAは関数として扱われますが、2 番目の使用とその定義では数値と​​して扱われます)。

于 2012-04-10T16:44:11.770 に答える