Jef*_*Yan -1 scheme haskell functional-programming
我们可以在函数式语言中创建一个带void(即没有返回值)的函数吗?像Haskell或Scheme
在Haskell中,您可以编写一系列返回()
(单元)的函数,这相当于void
C语言:
foo :: a -> ()
foo _ = ()
bar :: a -> b -> ()
bar _ _ = ()
Run Code Online (Sandbox Code Playgroud)
但是,你会注意到我的实现忽略了他们的输入,只是返回()
,所以他们什么都不做.
你可以像这样打电话给他们:
Prelude> foo 42
()
Prelude> bar 42 "foo"
()
Run Code Online (Sandbox Code Playgroud)
但这仍然没有完成任何事情.
另一方面,您可以编写返回的函数IO ()
,如下所示:
main :: IO ()
main = putStrLn "Hello, world!"
Run Code Online (Sandbox Code Playgroud)
但现在这是不纯的.虽然这会产生副作用,但你可以争论它是否有效.至少,在Haskell中,你不能从纯代码中调用不纯的代码(这是设计的),因此它不构成.
这种功能的目的是什么?此外,如果你觉得一个数学函数(函数式编程的基础)的这将是这样一个函数的值域?
所以,简单的答案是没有在Haskell(我不知道够不够方案给出有关该知情答案)。
Haskell中的Java中最接近void的东西是 IO ()
归档时间: |
|
查看次数: |
2520 次 |
最近记录: |