相关疑难解决方法(0)

为何选择功能语言

我在这里看到很多关于函数式语言和东西的讨论.你为什么要使用"传统"语言?他们做得更好?他们更糟糕的是什么?什么是理想的函数式编程应用程序?

programming-languages functional-programming

330
推荐指数
16
解决办法
18万
查看次数

Javascript是一种函数式编程语言吗?

仅仅因为函数是第一类对象,有闭包和高阶函数,Javascript是否应该被称为函数式编程语言?我认为它缺少的主要功能是纯函数,并且它不像其他函数式语言那样"感觉",比如lisp(虽然这不是一个很好的理由,它不是一个功能性的语言......)

javascript functional-programming terminology

132
推荐指数
4
解决办法
5万
查看次数

reduce()有什么问题?

网上似乎有很多关于python 3.0中reduce()函数更改以及如何删除它的讨论.我有点难以理解为什么会这样; 我发现在各种情况下使用它是相当合理的.如果蔑视只是主观的,我无法想象会有这么多人关心它.

我错过了什么?reduce()有什么问题?

python python-3.x

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

为什么在Python中进行功能编程?

在工作中,我们习惯以非常标准的OO方式编写Python.最近,有几个人加入了这个功能性的潮流.他们的代码现在包含更多的lambda,map和reduce.我知道函数式语言对并发性有好处,但Python函数编程真的有助于并发吗?我只是想了解如果我开始使用更多Python的功能,我会得到什么.

python functional-programming

35
推荐指数
6
解决办法
3605
查看次数

混合面向对象和函数式编程

有哪些语言可以促进面向对象和函数式编程?我知道任何支持一流功能的语言都可以被认为是功能性的,但我正在寻找一种专门针对两种编码风格的语法.

使用这样的语言,我想象将所有状态更改隔离到单个代码部分,并使程序的其余部分纯粹功能.只是想到它让我流口水(调试天堂!).

到目前为止,我已经发现了Scala,虽然我刚刚听说过它(它看起来很神奇).在这种"混合风格"范式中是否有任何重要的竞争者?

functional-programming scala imperative-programming

29
推荐指数
7
解决办法
1万
查看次数

从左到右在python3中的列表上应用操作

有没有办法在列表中实现非懒惰的从左到右调用操作python

例如 scala

 val a = ((1 to 50)
  .map(_ * 4)
  .filter( _ <= 170)
  .filter(_.toString.length == 2)
  .filter (_ % 20 == 0)
  .zipWithIndex
  .map{ case(x,n) => s"Result[$n]=$x"}
  .mkString("  .. "))

  a: String = Result[0]=20  .. Result[1]=40  .. Result[2]=60  .. Result[3]=80
Run Code Online (Sandbox Code Playgroud)

虽然我意识到许多人不喜欢上面的语法,但我喜欢从左到右移动并随时添加任意操作的能力.

for当有三个或更多操作时,python 理解是不容易阅读的.结果似乎是我们需要将所有内容分解成块.

[f(a) for a in g(b) for b in h(c) for ..]
Run Code Online (Sandbox Code Playgroud)

有没有机会提到这种方法?

注意:我尝试了一些库,包括toolz.functoolz.python3懒惰的评估很复杂:每个级别返回一个map对象.此外,它不能显示它可以在输入上操作list.

python functional-programming list operator-precedence

7
推荐指数
1
解决办法
144
查看次数

函数式编程的 Pythonic 风格

我对 Python 没有太多经验。我正在尝试以函数式风格进行编码,就像我习惯的 Java 和 JavaScript 一样,例如

var result = getHeroes('Jedi')
  .map(hero => { hero: hero, movies: getMovies(hero) })
  .filter(x => x.movies.contains('A New Hope'));
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 Python 中做类似的事情,但我无法获得相同的链接样式。我不得不将其分解为两个我不喜欢的陈述:

tmp = ((hero, get_movies(hero)) for hero in get_heroes('jedi'))
result = ((hero, movies) for (hero, movies) in tmp if movies.contains('A New Hope')
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. Python 有没有办法接近第一种风格?
  2. 在 Python 中执行此操作的惯用方法是什么?

谢谢。

python functional-programming

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

是什么让 Python 不是函数式编程语言?

Python 变量是鸭子类型的,可变的,它的函数可以编写为具有副作用。(换句话说,它有很多非函数式编程特性。)

但是,它也具有一流的功能,但它不是函数式编程语言。所以我想,即使它不属于该范式,编程语言也可以具有功能方面(或另一种语言范式的方面),这一定是真的。究竟是什么让 Python不是函数式编程语言?是测试它是否具有单一特征或多个事物的测试?(如果是前者,使 Python 无法运行的单个方面或使 Haskell 具有功能的单个方面是什么?)

python programming-languages functional-programming first-class-functions

3
推荐指数
1
解决办法
1569
查看次数

Python 是函数式编程语言还是面向对象的语言?

根据tutorialspoint.com,Python 是一种函数式编程语言。“一些流行的函数式编程语言包括:Lisp、Python、Erlang、Haskell、Clojure 等。”

https://www.tutorialspoint.com/functional_programming/functional_programming_introduction.htm

但是其他消息来源说 Python 是一种面向对象的编程语言(您可以在 Python 中创建对象)。

那么Python两者都是吗?如果是这样,如果您正在尝试编写需要大量数学计算的东西,Python 是否仍然是一个不错的选择(因为函数式语言具有并发性、更好的数学语法和更高级别的函数)?

python oop functional-programming

2
推荐指数
1
解决办法
2307
查看次数

Python函数式编程

有我的问题:

假设我们有3个函数:f,g,h和以下代码

y = f(x)
a = g(y)
b = h(y)
Run Code Online (Sandbox Code Playgroud)

我想在一行上完成这项工作,例如:

a,b = g(f(x)),h(f(x))
Run Code Online (Sandbox Code Playgroud)

但如果f非常慢(并且没有缓存它的结果),这效率不高

我有一个带发电机的解决方案:

a,b = ((g(y),h(y)) for y in (f(x),)).next()
Run Code Online (Sandbox Code Playgroud)

但这不是很可读

我想做一些这样的事情:

with  f(x) as y: a,b = g(y),h(y)
Run Code Online (Sandbox Code Playgroud)

有没有人有想法?

(这是骗子

y = f(x);a = g(y);b = h(y)
Run Code Online (Sandbox Code Playgroud)

)

import time
def f(t): 
    time.sleep(1)
    print 'f called'
    return t

def g(t): return 1

def h(t): return 2

a,b = g(f(x)),h(f(x))
a,b = ((g(y),h(y)) for y in (f(x),)).next()
Run Code Online (Sandbox Code Playgroud)

python functional-programming function

-1
推荐指数
1
解决办法
496
查看次数