Haskell新手在这里.我正在通过了解你是一个haskell,并且遇到了翻转功能的这个定义.
flip' :: (a -> b -> c) -> (b -> a -> c)
flip' f = g
where g x y = f y x
Run Code Online (Sandbox Code Playgroud)
我没有得到的是,x和y来自哪里?签名告诉我,这flip'是一个函数,它接受一个函数(带有两个参数),并返回一个函数(同样,带有两个参数).
如果我理解这一点,当我写一个类似的函数时
foo :: (a -> b) -> a -> b
foo f x = f x -- applies the function f on x
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,我明确地传递参数[ie x],所以我能够在函数体中访问它.那么为什么flip'函数可以访问参数x和y呢?
这是我的代码: -
print "Welcome to the English to Pig Latin translator!"
original = raw_input("Write a word")
if len(original)>0:
print origninal
else:
print "empty"
Run Code Online (Sandbox Code Playgroud)
所以这original是我的变量."empty"如果用户输入没有单词,我得到字符串,但如果用户输入任何超过0个字符的单词(如if语句中所定义),我会收到错误说明"name original is not defined".我希望控制台打印用户输入.我的代码有什么问题?