例如,我有以下功能:“去哪儿”的功能类型在Haskell
foo :: t -> f
foo var = foo' b var
where
b = bar 0.5 vect
,我需要指定文字0.5型 - ‘T’
如果我写了不便。如(0.5::t)
,GHC创建新的类型变量't0',它与原始't'不相对应。
我已经写了一个小功能
ct :: v -> v -> v
ct _ u = u
,并使用它像这样:
b = bar (ct var 0.5) d
有没有更好的解决办法?
有一个编译器选项,可以让你说'(0.5 :: T)'和它会将't'与周围的示波器的't'相匹配,但我忘记了它是什么。 – 2012-02-19 21:41:28
你写了很少的信息 - 例如什么是酒吧分别酒吧的类型签名和foo'以及。据我了解,小写字母是ghc被推断的占位符。已知类型以大写字母“Float”或“Int”开头,因此您几乎不会将类型信息传递给需要更多信息的编译器。 – epsilonhalbe 2012-02-19 21:48:32
如果您尝试使用'ghci'加载文件,解释器仍会失败 - 因为我记得它不那么严格。此外,您可以通过':t foo'找出函数的类型。 – epsilonhalbe 2012-02-19 21:52:00