为什么这不起作用?
sum :: (Num a, Num b) => a -> b -> c
sum a b = a + b
Run Code Online (Sandbox Code Playgroud)
当然,错误消息与签名有关,但我仍然不明白原因.
Couldn't match expected type ‘a’ with actual type ‘b’
‘b’ is a rigid type variable bound by
the type signature for:
sum :: forall a b c. (Num a, Num b) => a -> b -> c
‘a’ is a rigid type variable bound by
the type signature for:
sum :: forall a b c. (Num a, Num b) …Run Code Online (Sandbox Code Playgroud) 可能有人解释这与下面的输入一小段代码的行为:[[1,2],[3,4]]?
infiniteList ls = let v = ls ++ v
in concat v
Run Code Online (Sandbox Code Playgroud)
结果是一个无限的列表,但我没有意识到为什么.我明白了诀窍在于:
ls ++ v
Run Code Online (Sandbox Code Playgroud)
但是,因为我们没有定义变量的初始值,所以如何正常工作v?
我想从函数内部导入一个模块。例如从这个:
from directory.folder.module import module
def import():
app.register_blueprint(module)
Run Code Online (Sandbox Code Playgroud)
对此:
def import():
from directory.folder.module import module
Run Code Online (Sandbox Code Playgroud)
但是,没有对其进行硬编码。例如:
def import():
m = "module"
from directory.folder.m import m
Run Code Online (Sandbox Code Playgroud)
是否可以?提前致谢
对于那些善于使用Haskell的人来说,这是一个简单的问题!为什么我写:
let a b = (5,6)
Run Code Online (Sandbox Code Playgroud)
我获得了一个功能:
a :: p -> (a, b)
Run Code Online (Sandbox Code Playgroud)
此外,b未实例化.我试图理解它是徒劳的.谢谢你的帮助!