私はハスケルには新鮮で、いくつかのコードを書いて言語を理解しようとしています。私はghciに関する非常に簡単な説明だけに精通しています:頭、尾、和、(*)など - 非常に簡単です。ハスケルで「制約」が意味するもの
私が作ろうとしている機能は、任意の次元数のベクトルに対するピタゴラスの定理を解くためのものです。これは次のようになります:平方根(a^2 + b^2 + c^2 ...)
私はghciでいくつかの行で行うことができますが、私は関数を作ろうとしています:私はそれを実行しようとすると、
mod :: [Num a] => a
mod x = sqrt a
where a = sum [b]
where [b] = map sq [x]
私は問題を理解していない:
sq x = x*x
b = map sq [1,2,3]
a = sum b
x = sqrt b
私はこれを行うと、私は多くの種類の署名を含めるようにしようと、 現在、私の関数は次のようになります。
Expected a constraint, but ‘[Num a]’ has kind ‘*’
• In the type signature:
Main.mod :: [Num a] => a
FTR:名前にもかかわらず、 'Floating'が本当に' RealFloat'(またはだろう「浮動小数点数のクラス」、ではありません['IEEE'](http://hackage.haskell.org/package/ieee754-0.7.9/docs/Numeric-IEEE.html#t:IEEE)でも可能です。これは単純に、式with_を行うことができる_number型のクラスであり、厳密な実数演算のようなものを可能にします。 – leftaroundabout
@leftaroundaboutそれを強調してくれてありがとう。不正確なステートメントが削除されました。 – duplode