因此我对编程仍然很新,而且我在使用Haskell的语法时遇到了很多困难.我知道我想要实现什么,但我不确定该怎么做,所以我来这里问.
所以我所拥有的是由"3个不同的函数"定义的没有特定顺序的"堆积"数字.一个例子是:
lowestnumber = 4
highestnumber 5 = True
highestnumber _ = False
above 4 = 11
above 11 = 18
above 18 = 2
above 2 = 3
above 3 = 5
above 5 = error "highest Number"
above _ = error "Not part of the pile"
Run Code Online (Sandbox Code Playgroud)
现在,我想编写一个函数来检查某个数字是否是这一堆的一部分,另一个函数"sum'=",它总结了列表中没有输入变量的所有元素.首先,我通过定义一个列表并使用list命令来解决这些问题,以便总结并查看elem该列表中是否有某些东西,但我应该在不使用列表的情况下解决它.
所以我有如何解决这个问题的想法,但我不知道如何在没有收到无数错误的情况下实际编写它.我尝试过检查功能的一些例子:
check x = if above x /= error "Not part of the stack" || lowestnumber == x then True else False
Run Code Online (Sandbox Code Playgroud)
我也尝试过这样的"_"检查,但它也不起作用:
check x if above x == …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数,该函数包含一个搜索词列表,一个替换词列表和一个将使用这些词的字符串.
listReplace :: [String] -> [String] -> String -> String
Run Code Online (Sandbox Code Playgroud)
棘手的部分是如果拟合搜索词是第n个,那么应该使用第n个替换词.此外,当使用替换词时,如果它本身实际上是一个搜索词,则不应该用不同的替换词替换它.我已经写过这些函数了
replace :: String -> String -> String -> String:
replace x y [] = []
replace x y (z:zs) = if isPrefixOf x (z:zs) then y ++ replace x y (drop (length x) (z:zs)) else z: (replace x y zs)
Run Code Online (Sandbox Code Playgroud)
和
replace' :: String -> [String] -> String -> String:
replace' x y [] = []
replace' x [] (z:zs) = []
replace' x y (z:zs) = if isPrefixOf …Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习Stata,我很难过.我的问题是:我有两个不同的变量,ATC并且A,其中A可能是子串ATC.现在我想,以纪念所有的意见中,A是的一个子ATC带OK = 1.
我使用一个简单的嵌套循环尝试了这个:
foreach x in ATC {
foreach j in A {
replace OK = 1 if strpos(`x',`j')!=0
}
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我运行此循环时,即使应该有足够的数据,也不会进行任何更改.我觉得我应该给出一个索引来指定哪个OK被更改(属于ATC/ x的那个),但我不知道如何做到这一点.这可能非常简单,但我已经挣扎了一段时间.
我应该澄清一下:我的A列表与主列表分开(只是附加到它),并且只包含我用来识别ATC我想要的s的唯一键.所以我有~120个A键和几百万个ATC键.我想要做的是迭代每个ATC单键的每个A键,并标记那些ATC具有A该限定条件的键.
这意味着我没有的(完整的元组ATC,A,OK),但不同的大小,而不是单独的列表.例如:我有
ATC OK A
ABCD 0 .
EFGH 0 .
... ... ...
. . …Run Code Online (Sandbox Code Playgroud)