标签: functional-programming

如何在 Python 中的 map 中指定参数?

我可以在 map 中指定其他参数吗?

例如,我有以下代码:

def f(a, b):
    return a + b
l = [1, 2, 3]
ll = map(f, l)
Run Code Online (Sandbox Code Playgroud)

我怎样才能给map上面的一个参数,以便每个元素ll是一个元素l和给定参数的总和?

例如,如果我可以使用类似的东西map(f(2,), l),我会得到[3, 4, 5]结果。

我知道我可以通过列表理解或 for 循环获得相同的结果,但我只想知道是否有可能以某种map方式做到这一点。

python functional-programming map

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

为什么我的布尔函数有时返回 None?

使用 Python 3.4。试图从 IF 语句中调用返回布尔值的函数 prime/2——总是 True 或 False。该函数运行起来很昂贵,所以我只想在我知道需要它时才调用它,因此从决策点内调用。被调用的函数不能可靠地返回 True/False。有时返回值为 None,此时测试失败。我使用 Python 的 IDLE 及其调试器。我调用 primes(2, 5, []) 并逐步执行代码。当 prime/2 到达行 elif n <= p 而 n = 5 和 p = 5 时,调试器显示 prime/2 返回 True,正如它应该的那样,但 primes/3 elif prime(m, 2) 中的行需要一个None 的值。那时我的测试失败了。我的代码:

def primes(m, n, l):        # the calling function
    if m > n:               # creates a list of primes from
        print(l, end='\n')  # m through n, inclusive
    elif m < 2:
        primes(2, n, l)
    elif m == 2: …
Run Code Online (Sandbox Code Playgroud)

python functional-programming if-statement function python-3.x

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

球拍语法完全混淆了-请伸出援助之手

我被要求为大学学习一些球拍,最终将不得不用树结构和数据集做一些相当复杂的事情。我才刚刚开始,即使使用Racket docs,google和SO,也无法理解此代码的工作方式。

我正在尝试编写一个带有三个数字参数并返回最大数的函数,这就是我所拥有的:

(define (mymax x1 x2 x3)
    (cond
        ((and (x1 > x2) (x1 > x3)) x1)
        (else (and (x2 > x1) (x2 > x3)) x2)
        (else (and (x3 > x1) (x3 > x2)) x3)
))
(print (mymax 10 5 1))
Run Code Online (Sandbox Code Playgroud)

所以...

  • 我不知道我是否正确使用和比较
  • 我在以下地方收到错误“ cond:错误的语法('else'子句必须是最后一个):(else(和(x2> x1)(x2> x3))x2)”
  • 我真的不知道如何从函数返回值

很抱歉,如此无知,但这只是没有道理,对这些要点的任何帮助都将是一个巨大的帮助

functional-programming boolean function racket

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

具有多个类的函数实例

我想为我的自定义数据类型实现幂函数。我的意思是具有以下签名的功率 (^):

(^) :: (Num a, Integral b) => a -> b -> a
Run Code Online (Sandbox Code Playgroud)

我的意思是我的数据类型MyData应该是 instance of Num,所以我可以写

x :: MyData
...
y = x ^ b
Run Code Online (Sandbox Code Playgroud)

其中 b 是一些Integral。当我们需要一个类的功能时,这很容易

(+), (-), (*) :: (Num a) => a -> a -> a
Run Code Online (Sandbox Code Playgroud)

我们只是写

instance Num MyData where
  (*) x y = someFunc x y
Run Code Online (Sandbox Code Playgroud)

但我不知道如何定义它,因为还有Integral b. 这种语法应该是这样的

instance (Integral b) => Num MyData b where
  (^) x y = someFunc x y
Run Code Online (Sandbox Code Playgroud)

但是我已经尝试了一百种这样的变体,但没有任何效果。数小时的谷歌搜索也无济于事。

haskell functional-programming

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

以有效的方式从地图条目中获取公共值

假设有如下图所示:

    Map<String, List<String>> myMap =     
     {   
        k1: [ v1, v2, v3, v3],  
        k2: [ v1, v2],  
        k3: [ v1, v2, v6, v7]
      }
Run Code Online (Sandbox Code Playgroud)

我想找到所有键通用的值。

 List<String> commonValues = {v1,v2}
Run Code Online (Sandbox Code Playgroud)

我想了解使用 java 8 的有效方法。我可以在 java 5 中使用 for 循环实现相同的效果,但我确信 Java 8 有更好的方法来做到这一点。

java functional-programming hashmap java-8 java-stream

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

Scala 模式匹配方程大小写

如果可以x被 整除y,我想模式匹配,返回 true 但我似乎语法错误并且它一直崩溃。

def isDivisible (x: Int, y: Int) :Boolean = Int match {
    case (x % y == 0) => true
    case _ => false
}

isDivisible(10, 5)
Run Code Online (Sandbox Code Playgroud)

将方程作为个案的正确方法是什么

jvm functional-programming scala switch-statement

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

haskell 函数类型简化 f :: ((b -&gt; a ) -&gt; a -&gt; c ) -&gt; (b -&gt; a ) -&gt; b -&gt; c

只是寻找这个函数类型的解释,请

f x y z = x y (y z)

前奏说的是

f :: ((b -> a) -> a -> c) -> (b -> a) -> b -> c

但我无法用任何已知的方法得到那个结果 ¬¬

此致。

logic haskell types functional-programming declarative

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

为什么我的 Haskell 函数返回一个类型而不是一个值?

我很难理解 Haskell 中的类型创建。我试图理解为什么下面的 Haskell 函数返回一个类型而不是一个值:

data Exp = Enum Int

data Val = Vnum Int

eval :: Exp -> Val
eval (Enum x) = Vnum x

x :: Exp
x = Enum 2
Run Code Online (Sandbox Code Playgroud)

当我运行'eval x'时,解释器返回'eval x :: Val',而不是像我期望的那样返回2。Enum 和 Vnum 只是标签,所以基本上,eval 函数以一个“表达式”作为参数,它实际上只是一个整数,并返回一个“值”,它也只不过是一个整数。

就像,当然 eval x 返回一个 Val,但为什么函数实际上不计算值并返回它?我的印象是答案在我的脸上,但与此同时,我必须遗漏一些基本概念,这使我无法注意到可能很明显的事情。

在此先感谢您的帮助!

haskell types functional-programming

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

如何正确使用|&gt; 运算符?

当我尝试|>在 elm 中使用运算符时出现错误

kl : List Float
kl =
    List.map toFloat (List.range 1 10)
Run Code Online (Sandbox Code Playgroud)
kll : Float
kll =
    let
        half x =
            x / 2
    in
    List.sum (List.map half (List.map toFloat (List.range 1 10)))
Run Code Online (Sandbox Code Playgroud)

下面的代码我使用|>并得到一个错误:

klpipe : List Float
klpipe =
    1 10 |> List.range |> toFloat |> List.map
Run Code Online (Sandbox Code Playgroud)

functional-programming elm

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

如何在c#中强制方法执行顺序

长话短说,我有以下课程:

public class FlowBasePipeline<T>
{
    private List<StepBaseBusiness<T>> stepList = new List<StepBaseBusiness<T>>();
    
    public void Push(StepBaseBusiness<T> step)
    {
        stepList.Add(step);
    }
    
    public void Trigger(T result)
    {
        foreach (var step in stepList )
        {
            result = step.Execute(result);
            if (!result.IsSuccess)
            {
                break;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是强迫程序员首先调用Push方法,然后让他们访问Trigger方法,在这种情况下不允许以下场景

var pipeline=new FlowBasePipeline<MyStepResult>();
pipeline.Trigger()// Trigger method is not recognized
Run Code Online (Sandbox Code Playgroud)

我们应该首先调用Push方法

var pipeline=new FlowBasePipeline<MyStepResult>();
pipeline.Push(new MyStep()).Trigger()//Now Trigger is recognized
Run Code Online (Sandbox Code Playgroud)

我所做的:

我按如下方式应用了显式接口方法实现以使其工作:

public interface IBasePipeline<T> where T:BaseResult,new()
{
    void Trigger();
    IBasePipeline<T> Push(StepBaseBusiness<T> step);
} …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns functional-programming

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