标签: functional-programming

带有操作的Haskell数据类型语法

我是一名新手,过去没有任何函数式编程经验(但是,相当多的程序/命令式编程经验).我在理解如何声明自己的数据类型时遇到了一些麻烦.

例如,假设我声明了一种数据类型:

data SomeThing = Int [Int]
Run Code Online (Sandbox Code Playgroud)

你将如何编写一个消耗someData并产生someData的Haskell函数; 只有生成数据的Int是消耗数据的[Int]中所有元素的总和,并且消耗值的[Int]在生成的[Int]中每个元素乘以2.

这显然是可能的,但我没有找到任何在网络搜索后对我有意义的答案.

haskell types functional-programming

0
推荐指数
1
解决办法
125
查看次数

Haskell方程根编译错误

以下算法用于计算二次方程根,但编译它会产生编译错误.我从教程中复制了它.

2 roota.hs:5:20: parse error on input `='

roots (a,b,c) = 
        if d < 0 then error "sorry" else (x1, x2)
        where x1 = e + sqrt d / (2 * a)
            x2 = e - sqrt d / (2 * a)
            d = b * b - 4 * a * c
            e = - b / (2 *a)
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

haskell functional-programming

0
推荐指数
1
解决办法
187
查看次数

函数变量和函数变量具有相同的名称.怎么访问?

我想知道javascript(如果可能)如何访问与该函数的变量输入同名的变量.

function myfunc(var1)
{
    var var1 = "World";
    alert(var1);
}
Run Code Online (Sandbox Code Playgroud)

如何告诉函数打印哪个var1?

javascript syntax functional-programming var function

0
推荐指数
1
解决办法
877
查看次数

Haskell缩进错误?

压痕问题

我附上代码,缩进,任何人都知道问题出在哪里?

错误代码:

zo.hs:7:9: parse error (possibly incorrect indentation)
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

0
推荐指数
1
解决办法
214
查看次数

在OCaml中展平列表列表

我正在使用Ocaml实现这个hoemwork功能:

  • 不允许使用List模块
  • 该函数有类型 'a list list -> 'a list
  • 该函数返回一个列表,该列表由x中的列表连接在一起(只是顶级列表连接在一起,与List.flatten不同)
  • 例如:[[1,2,3],[45]] => [1,2,3,4,5][[[1,2,3],[4,5]],[[6,7]]] => [[1,2,3],[4,5],[6,7]]

我不知道从哪里开始,有人能给我一些建议吗?谢谢

ocaml functional-programming list

0
推荐指数
1
解决办法
4739
查看次数

如何从Haskell程序输出PostScript文件?

从Haskell输出PostScript文件有哪些库/模块?越简单易用越好.我需要的唯一两个功能是绘制点和线的能力.

haskell functional-programming postscript ghc

0
推荐指数
1
解决办法
360
查看次数

Haskell - 从列表列表中获取n个列表

嘿伙计们,所以我正在尝试从列表列表中获取n个列表.我想知道haskell中是否有一个方法与"take"和"drop"方法类似,但是如果能在我的情况下工作.例如:

Input = [ [1,2,3,4], [5,6,7,8], [9,1,2,3], [4,5,6,7], [8,9,1,2], [3,4,5,6] ]

我希望能够从列表列表中获取前3个元素,最终得到如下内容:

Output = [ [1,2,3,4], [5,6,7,8], [9,1,2,3]]

我还希望能够从列表列表中删除前3个元素,最终得到如下内容:

Output = [[4,5,6,7], [8,9,1,2], [3,4,5,6]]

是否有可能在haskell中做这样的事情.?任何人都可以指出我如何解决这个问题的正确方向.提前致谢.

haskell functional-programming list

0
推荐指数
1
解决办法
148
查看次数

Haskell:确定函数类型

在学习功能编程考试时,我从之前的测试中发现了以下问题:

t2 = (\x -> \y -> \z -> (x y, x (x z)))

t3 = t2 (take 3 . reverse) mnr mnr
Run Code Online (Sandbox Code Playgroud)

对于t2,要求它确定语句的最一般类型.答案似乎是:

(a -> a) -> a -> a -> (a,a)
Run Code Online (Sandbox Code Playgroud)

我可以通过在WinHugs中输入声明来找到答案,但是如何找到答案呢?我从之前的帖子中了解到它与lambda函数有关,但除此之外我无法解释这里发生了什么.

然后问题的第二部分(t3)将两个函数应用于变量mnr的两个实例.对于mnr = [0,1,2,3,4,5,6],这会导致:

([6,5,4],[4,5,6])
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?函数take和reverse是清楚的,但它们如何应用于t2中的lambda函数?

haskell functional-programming

0
推荐指数
1
解决办法
792
查看次数

需要将F#命令式代码转换为功能性的想法

我有一个功能女巫是以命令式的方式编写的,无法理解如何将其转换为更强大的功能方法.

该函数接受一系列字符串并返回一个seq的元组,其中每个元组由输入中的2,7,12,...和5,10,15,...项组成.

例:

输入= {"Lorem","ipsum","dolor","set","amet","consectetuer","adipiscing","elit","Aenean","commodo","ligula","eget" ,"dolor","Aenean","massa"}

Ouput = {("ipsum","amet"),("adipiscing","commodo"),("eget","massa")}

let convert (input : seq<string>) : seq<(string * string)> =
    let enum = input.GetEnumerator()
    let index = ref 0
    let first = ref ""
    let second = ref ""

    seq {
        while enum.MoveNext() do
            let modIndex = !index % 5
            index := !index + 1

            if (modIndex % 2 = 0 && !first = "") then first := enum.Current
            if (modIndex % 5 = 0 && !second = "") then second …
Run Code Online (Sandbox Code Playgroud)

f# functional-programming imperative

0
推荐指数
1
解决办法
205
查看次数

下划线导致困难

我有以下代码,它应该搜索数组并查看是否与第二个参数匹配.

def any(check: Set[Any], expr: Boolean): Boolean = {
  var checked = check.filter(_ => expr)
  if (checked == Set())
    return false
  else
    return true
}
Run Code Online (Sandbox Code Playgroud)

它应该被称为这样: any(Set(3, 4, 5, 6), _ > 5)

但是当我打电话给它时:

error: missing parameter type for expanded function ((x$1) => x$1.$greater(5))
Run Code Online (Sandbox Code Playgroud)

我对函数式语言和Scala的经验很少,所以,请给我一个彻底的解释,说明发生了什么以及如何解决它!

lambda functional-programming scala set scala-placeholder-syntax

0
推荐指数
1
解决办法
190
查看次数