我是一名新手,过去没有任何函数式编程经验(但是,相当多的程序/命令式编程经验).我在理解如何声明自己的数据类型时遇到了一些麻烦.
例如,假设我声明了一种数据类型:
data SomeThing = Int [Int]
Run Code Online (Sandbox Code Playgroud)
你将如何编写一个消耗someData并产生someData的Haskell函数; 只有生成数据的Int是消耗数据的[Int]中所有元素的总和,并且消耗值的[Int]在生成的[Int]中每个元素乘以2.
这显然是可能的,但我没有找到任何在网络搜索后对我有意义的答案.
以下算法用于计算二次方程根,但编译它会产生编译错误.我从教程中复制了它.
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)
谢谢你的回答.
我想知道javascript(如果可能)如何访问与该函数的变量输入同名的变量.
function myfunc(var1)
{
var var1 = "World";
alert(var1);
}
Run Code Online (Sandbox Code Playgroud)
如何告诉函数打印哪个var1?

我附上代码,缩进,任何人都知道问题出在哪里?
错误代码:
zo.hs:7:9: parse error (possibly incorrect indentation)
Run Code Online (Sandbox Code Playgroud) 我正在使用Ocaml实现这个hoemwork功能:
List模块'a list list -> 'a list [[1,2,3],[45]] => [1,2,3,4,5]和[[[1,2,3],[4,5]],[[6,7]]] => [[1,2,3],[4,5],[6,7]]我不知道从哪里开始,有人能给我一些建议吗?谢谢
从Haskell输出PostScript文件有哪些库/模块?越简单易用越好.我需要的唯一两个功能是绘制点和线的能力.
嘿伙计们,所以我正在尝试从列表列表中获取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中做这样的事情.?任何人都可以指出我如何解决这个问题的正确方向.提前致谢.
在学习功能编程考试时,我从之前的测试中发现了以下问题:
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函数?
我有一个功能女巫是以命令式的方式编写的,无法理解如何将其转换为更强大的功能方法.
该函数接受一系列字符串并返回一个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) 我有以下代码,它应该搜索数组并查看是否与第二个参数匹配.
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
haskell ×6
list ×2
f# ×1
function ×1
ghc ×1
imperative ×1
javascript ×1
lambda ×1
ocaml ×1
postscript ×1
scala ×1
set ×1
syntax ×1
types ×1
var ×1