标签: functional-programming

从一个对象创建一个对象数组

我在函数式编程游戏中有点迷失.

我有一个像这样的对象:

const answers = {1: 'first', 2:'second', 3:'third', 4:'fourth'}
Run Code Online (Sandbox Code Playgroud)

我想将对象重塑为像这样的对象数组.

const arrayOfAnswers = [{1:'first'}, {2:'second'}, {3:'third'}, {4:'fourth'}]
Run Code Online (Sandbox Code Playgroud)

达到此目的的简单解决方案是什么?

javascript functional-programming

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

SCALA是一种理论语言吗?

如果我错了请纠正我

Scala引入了新的范例,如TypeTheory,Continuations,Monads和其他计算理论.Scala是否正在成为一种理论语言,因为大多数论文,博客都在谈论这一点,而我相对较少看到代码插图......

functional-programming scala

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

Haskell定点签名

以下Haskell函数的签名是什么:

fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)

a)((a-> b) - > a-> b) - > a-> b

b)签名无法合成

c)(a-> a) - > a

谢谢!

haskell functional-programming

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

Monad比Applicative更强大?

我查看过去的讨论,但无法理解为什么任何答案都是正确的.

合用的

<*> :: f (a -> b) -> f a -> f b

单子

(>>=) :: m a -> (a -> m b) -> m b

因此,如果我做对了,那么声称是>>=不能仅仅假设存在而写的<*>

好吧,让我们假设我有<*>.

我想创造>>=.

所以我有f a.

我有f (a -> b).

现在当你看它时,f (a -> b)可以写成(a -> b)(如果某个东西是x,y,z的函数 - 那么它也是x,y的函数).

所以从<*>我们得到的存在(a -> b) -> f a -> f b再次可以写成((a -> b) -> f a) …

monads haskell functional-programming functor applicative

-4
推荐指数
2
解决办法
310
查看次数

给定一个列表,如何映射该列表中每个元素的第二个值?

假设有一个列表,[("@elBarto", "yo no fui"), ("@krusty", "yo tampoco"), ("@pedro", "tal vez")] 我需要一个函数,该函数从该列表中获取每个元素的第二个值 ["yo no fui", "yo tampoco", "tal vez"]。据我所知,该列表包含元组,因此我可以使用每个元组中的snd。返回应该是一个映射列表,但我不知道该怎么做,也许像每个元组的map snd一样。

haskell functional-programming

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

为什么javascript对象没有map/reduce/filter?

假设我有这个对象:

const millionsOfLines = {
    windowsVista: 50,
    firefox: 9,
    google: 2000,
    quake3Engine: 0.3,
    mySQL: 12
};
Run Code Online (Sandbox Code Playgroud)

我会以同样的方式为数组做,如果我能做的话:

const lessThan10 = millionsOfLines.filter((value, key)=> value < 10);
Run Code Online (Sandbox Code Playgroud)

相反,我必须这样做:

const lessThan10 = {};
Object.keys(millionsOfLines).forEach(key=>{
    if (millionsOfLines[key] < 10) {
        lessThan10[key] = value;
    }
});
Run Code Online (Sandbox Code Playgroud)

多么麻烦.其他函数肯定也可以与数组版本完全相同的方式工作:

const thousandsOfLines = millionsOfLines.map((value, key)=> value * 1000);
const totalLines = millionsOfLines.reduce((total, currValue, currKey)=> total + currValue);
Run Code Online (Sandbox Code Playgroud)

我计划将其与我实际需要输入的内容进行比较,但我无法承受这种痛苦,所以这是留给读者的练习.

那么 - 为什么javascript对象没有map/reduce/filter?

javascript functional-programming ecmascript-6

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

为什么javascript不能在方法里面执行方法?

在函数式语言中,函数可以在嵌套函数的参数括号内执行,这对于javascript来说是等效的,这意味着受到Scheme的启发.

f(f(f(f)))

console.log( 1 + 1 )
//2
Run Code Online (Sandbox Code Playgroud)

为什么javascript可以在.log方法参数括号内执行加法?

var list1 = []
console.log(list1.push("a"))
//1
Run Code Online (Sandbox Code Playgroud)

但它不能在.log方法括号内执行push方法?为什么它会返回1?

javascript methods functional-programming

-6
推荐指数
2
解决办法
69
查看次数

Javascript可以实现OOP但Ruby无法实现函数式编程?

我是"真正的"Javascript的新手:我知道更多的函数式编程.

看来,在Javascript中,您可以从两个方面获得最佳效果:功能和面向对象编程.

但在Ruby中,您没有第一类函数(函数作为数据类型).

这是否意味着Javascript拥抱两全其美,而Ruby只接受面向对象的编程风格?

javascript ruby oop functional-programming

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

为什么我在这个Haskell程序中得到负数?

我正在尝试创建一个计算二次公式的程序,但事实证明它总是给我一个负数,我找不到原因?

equation::(Double,Double,Double)->Double
equation(x,y,z)=(-y-sqrt(y^2+4*x*z))/(2*x) 
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

math haskell functional-programming

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

描述什么是代数?

在函数式编程世界中,当我想设计一个API时,我会遇到单词代数api.有人可以请说一下,在设计API的背景下,FP中的代数是什么.

哪些组件构建了代数api?法律,运营等.?

有一个单词原语,究竟是什么原语?请给我看一个例子.

haskell functional-programming scala

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