我正在尝试编写一个函数来使用尾递归查找给定元素的索引。假设列表包含1
到 的数字10
,并且我正在搜索5
,那么输出应该是4
。我遇到的问题是使用尾递归“计数”。但是,我什至不确定在这种情况下是否需要手动“计算”递归调用的数量。我尝试使用!!
which 没有帮助,因为它返回特定位置的元素。我需要该函数返回特定元素的位置(完全相反)。
我已经尝试解决这个问题一个小时了。
代码:
whatIndex a [] = error "cannot search empty list"
whatIndex a (x:xs) = foo a as
where
foo m [] = error "empty list"
foo m (y:ys) = if m==y then --get index of y
else foo m ys
Run Code Online (Sandbox Code Playgroud)
注意:我试图在不使用库函数的情况下实现这一点
我正在完成作业.我不知道为什么我会收到这个错误.
我通过评论指出了错误来自的行.
如果你能(你没有),我不认为我func
和call
职能工作.
import Data.Maybe
data Operator = Add | Sub | Mul | Div | And | Or | Not | Eq | Less | Great
deriving (Eq, Show)
data Expression = Lit Value
| Prim Operator [Expression]
| Variable String
| If Expression Expression Expression
| Let [(String, Expression)] Expression
| Func [String] Expression
| Call Expression [Expression]
deriving (Show, Eq)
data Value = Num Int
| Bool Bool
| Closure [String] Expression Environment …
Run Code Online (Sandbox Code Playgroud) 假设函数将两个不同类型的变量作为其输入(例如,一个变量在C语言中为int,一个变量在C语言中为char)并返回一个变量Int
.
如果此函数被编码为Haskell或lambda演算代码,函数的类型将如何?
所以假设函数有类型Int -> (Char -> Char) -> Int
.这意味着什么?这是否意味着它接收int变量作为输入并运行函数(Char -> Char)
和输出Int
变量?
我需要获取may数组类型中元素的位置Array Int Int
.我找到了方法elemIndex
或find
获得了这个位置.我的问题是,我不需要前缀Just 5
例如.那我怎么只得到5
我的例子中的数字?
我试图反转两个元素列表xs
.例如,invert [[1,2], [5,6,7], [10,20]]
将返回[[2,1], [5,6,7], [20,10]]
.它不会反转,[5,6,7]
因为它是一个3元素列表.
所以我到目前为止写了这个:
invert :: [[a]] -> [[a]]
invert [[]] = [[]]
Run Code Online (Sandbox Code Playgroud)
这只是类型声明和空列表情况.我是Haskell的新手,所以关于如何实现这个问题的任何建议都会有所帮助.
我无法在Haskell中查找有关简单操作的文档.
我有名单(名单:: [[a]]
),我需要扭转所有的元素列表的x
地方length x >= 2
.
到目前为止,我还没有找到任何东西:
如何遍历列表
我怎样才能找到元素的长度.有length
我可以使用的功能,但我还不知道如何使用它.
我确实找到了reverse
列表的功能,但我找不到它.
如果对这些个别实施有任何帮助,我们将不胜感激.我可以把它们拼凑起来.
我必须实现一个功能 maybemap
它具有(类似于功能图)功能
f :: a -> b
Run Code Online (Sandbox Code Playgroud)
它应该应用于列表类型Maybe a
并给出一个列表Maybe b
maybemap :: (a -> b) -> [Maybe a] -> [Maybe b]
Run Code Online (Sandbox Code Playgroud)
我该如何定义这个maybemap
功能?
我需要在Haskell中使用一个程序来计算Levenshtein距离.