标签: functional-programming

有可证明的现实世界语言吗?(Scala呢?)

我在大学里接受过有关正式系统的教学,但我很失望,他们似乎并没有在真正的单词中使用它们.

我喜欢能够知道某些代码(对象,函数,等等)可以工作的想法,而不是通过测试,而是通过证明.

我确信我们都熟悉物理工程和软件工程之间不存在的相似之处(钢铁行为可预测,软件可以做任何事情 - 谁知道!),我很想知道是否有任何语言可以在真实的单词中使用(要求Web框架太多要问?)

我听说过像scala这样的函数式语言的可测试性.

作为软件工程师我们有什么选择?

java testing formal-verification functional-programming scala

50
推荐指数
4
解决办法
7293
查看次数

为什么Clojure会动态输入?

我非常喜欢的一件事是阅读不同的编程语言.目前我正在学习Scala,但这并不意味着我对Groovy,Clojure,Python和其他许多人都不感兴趣.所有这些语言都具有独特的外观和一些特征.在clojure的情况下,我不理解这些设计决策之一.据我所知,Clojure非常强调其功能范式,并且几乎迫使你尽可能地使用不可变的"变量".因此,如果您的一半值是不可变的,为什么语言会动态输入?clojure网站说:

首先,Clojure是动态的.这意味着Clojure程序不仅仅是您编译和运行的东西,而是您可以与之交互的东西.

那听起来很奇怪.如果程序已编译,则无法再更改它.当然你可以与它"互动",这就是用户所使用的UI,但网站当然并不意味着整洁的"动态"GUI.

Clojure如何从动态类型中受益

我的意思是Clojure的特殊情况,而不是动态类型的一般优点.

动态类型系统如何帮助改进函数式编程

再一次,我知道没有溢出"int a;"的乐趣.整个源代码,但类型推断可以缓解很多痛苦.因此,我想知道动态类型如何支持函数式语言的概念.

paradigms functional-programming language-design clojure dynamic

50
推荐指数
5
解决办法
1万
查看次数

如何传递函数而不是块

可能重复:
将数组的每个元素传递给函数的更短方式

我知道这会奏效:

def inc(a)
  a+1
end
[1,2,3].map{|a| inc a}
Run Code Online (Sandbox Code Playgroud)

但在Python中,我只需要写:

map(inc, [1,2,3])
Run Code Online (Sandbox Code Playgroud)

要么

[inc(x) for x in [1,2,3])
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以跳过在Ruby中创建块的步骤,并且这样做:

[1,2,3].map inc
# => ArgumentError: wrong number of arguments (0 for 1)
# from (irb):19:in `inc'
Run Code Online (Sandbox Code Playgroud)

有没有人有关于如何做到这一点的想法?

ruby functional-programming

50
推荐指数
2
解决办法
2万
查看次数

Ruby与计算机科学相关的屈服特征

我最近发现了Ruby的块和屈服特征,我想知道:这在计算机科学理论方面适合哪些方面?它是一种函数式编程技术,还是更具体的?

ruby functional-programming yield

49
推荐指数
2
解决办法
9896
查看次数

如何动态调用Python函数

我有这个代码:

fields = ['name','email']

def clean_name():
    pass

def clean_email():
    pass
Run Code Online (Sandbox Code Playgroud)

我怎么能叫clean_name()clean_email()动态?

例如:

for field in fields:
    clean_{field}()
Run Code Online (Sandbox Code Playgroud)

我使用了花括号,因为它是我以前在PHP中使用它的方式,但显然不起作用.

如何用Python做到这一点?

python functional-programming

49
推荐指数
7
解决办法
5万
查看次数

根据分类术语,FP中的monad是什么?

每当有人承诺"解释monad"时,我的兴趣就会被激怒,只有当被指称的"解释"是一长串的例子时才会被沮丧所取代,这些例子是由一些副手的评论所终止的,即"数学理论"背后的"深奥"在这一点上,"是"太复杂而无法解释".

现在我要求相反的事情.我对类别理论有着扎实的把握,我并不害怕图表追逐,Yoneda的引理或衍生的函子(实际上是在分类意义上的monad和adjunction).

有人能给我一个清晰简洁的定义monad在函数式编程中的含义吗?越少越好的例子:有时一个清晰的概念说明了一百多个胆小的例子.尽管我不挑剔,但Haskell作为演示语言会做得很好.

monads haskell functional-programming category-theory

49
推荐指数
6
解决办法
2831
查看次数

Dynamic dispatch in Haskell

用例如Java编写的程序很大程度上依赖于动态调度.如何用Haskell等函数式语言表达这些程序?换句话说,Haskell在"动态调度"下表达这个想法的方式是什么?

haskell functional-programming dynamic-dispatch

49
推荐指数
4
解决办法
6402
查看次数

什么(f.).在Haskell中意味着什么?

我已经看到很多函数是根据模式定义的(f .) . g.例如:

countWhere = (length .) . filter
duplicate  = (concat .) . replicate
concatMap  = (concat .) . map
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

haskell functional-programming pointfree function-composition tacit-programming

49
推荐指数
2
解决办法
3709
查看次数

真实世界的Haskell编程

几年来我一直是一位势在必行的开发人员,我从未有过学习函数式编程的冲动.

几个月前,我终于决定学习Haskell.这是一个非常酷的语言,但我很困惑如何用这种语言编写一个事件驱动的真实应用程序.你知道一个关于它的好教程吗?

注意:当我说"真正的应用程序"时,我不是在谈论现实世界,生产就绪应用程序.我只是说一个小样本应用程序,只是为了掌握它.我觉得像windows caculator的简化版本会很棒,然后可能会更复杂一点.

haskell functional-programming

48
推荐指数
5
解决办法
2万
查看次数

处理递归和类型时如何减少代码重复

我目前正在为一种编程语言开发一个简单的解释器,并且我的数据类型如下:

data Expr
  = Variable String
  | Number Int
  | Add [Expr]
  | Sub Expr Expr
Run Code Online (Sandbox Code Playgroud)

我有许多函数可以执行简单的操作,例如:

-- Substitute a value for a variable
substituteName :: String -> Int -> Expr -> Expr
substituteName name newValue = go
  where
    go (Variable x)
      | x == name = Number newValue
    go (Add xs) =
      Add $ map go xs
    go (Sub x y) =
      Sub (go x) (go y)
    go other = other

-- Replace subtraction with a constant with addition …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

48
推荐指数
2
解决办法
6125
查看次数