我承认我对功能编程知之甚少.我从这里和那里读到它,因此我们知道在函数式编程中,无论函数被调用多少次,函数都会为相同的输入返回相同的输出.它就像一个数学函数,对于函数表达式中涉及的输入参数的相同值,计算相同的输出.
例如,考虑一下:
f(x,y) = x*x + y; // It is a mathematical function
无论你使用多少次f(10,4),它的价值永远都是104.因此,无论您在何处编写f(10,4),都可以替换它104,而无需更改整个表达式的值.此属性称为表达式的引用透明度.
正如维基百科所说(链接),
相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此使用参数x的相同值调用函数f两次将产生相同的结果f(x).
函数式编程中是否存在时间函数(返回当前时间)?
如果是,那么它如何存在?它是否违反了函数式编程的原理?它特别违反了引用透明性,这是函数式编程的一个属性(如果我正确理解它).
或者如果不是,那么如何才能知道函数式编程中的当前时间?
我注意到在Rust中移动应用于左值,并且静态强制执行不移动的对象.
这些语义如何与Clean和Mercury中的唯一性类型相关?它们是相同的概念吗?如果没有,它们有何不同?
是否有任何用Clean编程语言编写的真实应用程序?无论是开源还是专有.
我是功能编程和CLEAN的新手.我有一些功能,我在一个中得到错误,我无法弄清楚为什么.(我用Haskell标记了它,因为它与CLEAN非常相似.)
我的模块:
module Prac
combine :: (Maybe a) (Maybe [a]) -> Maybe [a]
combine Nothing _ = Nothing
combine _ Nothing = Nothing
combine (Just d) (Just [x:xs]) = Just [d, x:xs]
sequence :: [Maybe a] -> Maybe [a]
sequence [Just x:xs] =  combine  (Just x)  Just[xs]
它在序列定义中失败:
 Type error [Prac.icl,32,sequence]: near combine : cannot unify types:
 [v8] -> Maybe [v4]
 Maybe [v5]
非常感谢!!