标签: functional-programming

在功能样式中实现heapify操作

只是想知道有没有办法在功能样式中实现heapify操作?

假设数据类型是:

type 'a heap = Empty | Node of  'a * 'a heap * 'a heap
Run Code Online (Sandbox Code Playgroud)

ocaml haskell functional-programming

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

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
查看次数

输入`='解析错误 - Haskell

我在运行这个Haskell代码时遇到了这个非常烦人的错误.由于某种原因,它不喜欢第一行delLast :: (Ord a) => [a] -> [a]

delLast :: (Ord a) => [a] -> [a]
delLast [] = []
delLast (x:[]) = []
delLast (x:xs) = [x] ++ delLast xs
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么我得到这个错误?谢谢.

这是我得到的错误:

parse error on input `='
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

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

这是一个curried operator.add函数的正确实现吗?

这篇博文提出了一个curried附加函数的实现:

def addN(n):
    return lambda x: x + n

def plus(a, b):
    addA=addN(a)
    return addA(b)
Run Code Online (Sandbox Code Playgroud)

我相信我的版本更正确,因为它一直使用一元函数.

from operator import add
plus = lambda a: lambda b: add(a, b) 
plus(1)(2)
Run Code Online (Sandbox Code Playgroud)

你怎么看 ?

python functional-programming

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

函数式递归与番石榴?

我有一个基本实现的MyService接口MyServiceImpl.我将其包装MyServiceImpl成一系列MyService装饰器.

为此,我创建了MyServiceDelegate一个抽象类,它接受一个MyService实例并将所有服务调用委托给提供的MyService实例.

但是在我的单元测试中,对于特定需求,我需要找回第一个真正的实现MyService,即MyServiceImpl,我只有一个MyService引用装饰器.

我只是想知道是否可以使用Guava,以功能性的方式进行递归,这将返回我已经装饰了很多层并且不是委托服务的"原始服务".我想使用像Function这样的函数来返回委托服务,如果是原始服务,则使用null,但不知道是否使用它.

我知道我可以通过while循环轻松完成,而且我不是在寻找替代解决方案.只想知道番石榴是否可以解决这些问题.

java recursion functional-programming guava

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

如何以功能方式编写Scala - 案例类和不变性以及所有这些?

我在现场观看了一个人们说他们在工作中正在进行Scala功能,他们使用案例类,将类型转换为另一种类型,到处都是不变性等等.

这实际上是如何工作的?我希望通过纯粹的功能方法看到一个简单的hello world应用程序.

我也看不出我怎么能var完全摆脱因为有时我只是需要它.

functional-programming scala

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

递归优化?

为什么Fibonacci递归程序工作这么久?

这是在OCaml:

let rec fib n = if n<2 then n else fib (n-1) + fib (n-2);;
Run Code Online (Sandbox Code Playgroud)

这是在Mathematica:

Fib[n_] := If[n < 2, n, Fib[n - 1] + Fib[n - 2]]
Run Code Online (Sandbox Code Playgroud)

这是在Java中:

public static BigInteger fib(long n) {
    if( n < 2 ) {
        return BigInteger.valueOf(n);
    }
    else {
        return fib(n-1).add(fib(n-2));
    }
}
Run Code Online (Sandbox Code Playgroud)

因为n=100它工作了很长时间,因为,我猜,它会2^100及时跟踪节点树.

虽然只生成100个数字,但它只能消耗100个内存寄存器和100个计算机.

因此,可以优化执行.

这项任务是什么以及如何解决?由于Mathematica中没有实现解决方案,因此可能不存在.关于此事的研究怎么样?

recursion ocaml functional-programming wolfram-mathematica compiler-optimization

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

计划和球拍

RacketScheme之间的语言有很大差异吗?在" 如何设计程序"(HtDP2e)一书中,他们教你使用Racket,但在着名的SICP中它是Scheme.我将同时阅读这些书籍,我应该注意什么?

scheme functional-programming racket

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

如何在Haskell中使用带有变量和列表的map

我打算编写一个map函数,该函数本质上需要一个变量和一个列表,并返回一个列表。

我尝试使用标准地图,但是从这里我看到的是它在格式“地图功能列表”中时,我试图传递另一个参数,这是另一点。

data Point = {xCoord :: Int,
              yCoord :: Int}

movePoint :: Point -> Point -> Point
movePoint (Point x y) (Point xMove yMove)
    = Point (x + xMove)  (y + yMove)

 // Add a "vector" to a list of points
movePoints :: [Point] -> Point -> [Point]
movePoints = error "Not yet"
Run Code Online (Sandbox Code Playgroud)

例如,如果我有一个矢量,例如(2,2),并且我有一个点列表,例如[(-2,1),(0,0),(5,4)等],我想使用映射以将(2,2)添加到列表中的所有点并返回点列表,我不确定该怎么做。我是Haskell的新手,所以任何提示都很棒。

haskell functional-programming list arity map-function

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

试图了解邮政编码

我试图了解如何在Haskell中使用zip。我最近一直在学习Haskell,并试图从两个单独的列表中创建一个元组列表

我有以下几点:

createList :: [Char] -> [Char] -> [(Char,Char)]    
createList xs ys = zip(xs,ys)
Run Code Online (Sandbox Code Playgroud)

我知道zip应该创建给定两个列表的元组列表,但是出现以下错误:

Couldn't match expected type ‘[a0]’
              with actual type ‘([Char], [Char])’
Run Code Online (Sandbox Code Playgroud)

谁能向我解释我在哪里绊脚?

haskell functional-programming

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