标签: clean-language

如何在函数式编程中存在时间函数?

我承认我对功能编程知之甚少.我从这里和那里读到它,因此我们知道在函数式编程中,无论函数被调用多少次,函数都会为相同的输入返回相同的输出.它就像一个数学函数,对于函数表达式中涉及的输入参数的相同值,计算相同的输出.

例如,考虑一下:

f(x,y) = x*x + y; // It is a mathematical function
Run Code Online (Sandbox Code Playgroud)

无论你使用多少次f(10,4),它的价值永远都是104.因此,无论您在何处编写f(10,4),都可以替换它104,而无需更改整个表达式的值.此属性称为表达式的引用透明度.

正如维基百科所说(链接),

相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此使用参数x的相同值调用函数f两次将产生相同的结果f(x).

函数式编程中是否存在时间函数(返回当前时间)?

  • 如果是,那么它如何存在?它是否违反了函数式编程的原理?它特别违反了引用透明性,这是函数式编程的一个属性(如果我正确理解它).

  • 或者如果不是,那么如何才能知道函数式编程中的当前时间?

f# haskell functional-programming scala clean-language

636
推荐指数
11
解决办法
5万
查看次数

Rust的所有权语义如何与Clean和Mercury中的唯一性类型相关?

我注意到在Rust中移动应用于左值,并且静态强制执行不移动的对象.

这些语义如何与Clean和Mercury中的唯一性类型相关?它们是相同的概念吗?如果没有,它们有何不同?

mercury move-semantics rust clean-language

19
推荐指数
1
解决办法
767
查看次数

现实世界中的清洁编程语言?

是否有任何用Clean编程语言编写的真实应用程序?无论是开源还是专有.

functional-programming clean-language

11
推荐指数
3
解决办法
5728
查看次数

在CLEAN中使用Maybe类型时出错

我是功能编程和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]
Run Code Online (Sandbox Code Playgroud)

它在序列定义中失败:

 Type error [Prac.icl,32,sequence]: near combine : cannot unify types:
 [v8] -> Maybe [v4]
 Maybe [v5]
Run Code Online (Sandbox Code Playgroud)

非常感谢!!

haskell functional-programming clean-language

0
推荐指数
1
解决办法
147
查看次数