Function Haskell Fold实现`elemIndex`
我正在研究HaskellFunction Haskell Fold实现`elemIndex`,function,haskell,fold,Function,Haskell,Fold,我正在研究HaskellelemIndex函数: elemIndex :: Eq a => a -> [a] -> Maybe Int 在这个定义中,可能是什么意思?有时当我调用它时,输出有一个Just或一个Nothing这是什么意思?如果我使用折叠,我如何解释这一点?第一个问题: 这是什么意思 这意味着返回的值是索引(Int)或无 从: elemIndex函数返回给定列表中与查询元素相等(按==)的第一个元素的索引,如果没有这样的元素,则返回Nothing 第二个问题: 如
elemIndex
函数:
elemIndex :: Eq a => a -> [a] -> Maybe Int
在这个定义中,可能是什么意思?有时当我调用它时,输出有一个Just
或一个Nothing
这是什么意思?如果我使用折叠,我如何解释这一点?第一个问题:
这是什么意思
这意味着返回的值是索引(Int)或无
从:
elemIndex函数返回给定列表中与查询元素相等(按==)的第一个元素的索引,如果没有这样的元素,则返回Nothing
第二个问题:
如果我使用折叠,我如何解释这一点
我不确定是否有足够的上下文来解释“使用折叠”部分。但是,至少有两种方法可以使用此功能:
elemIndex :: Eq a => a -> [a] -> Maybe Int
案例分析,您是否陈述了在每个案例中要返回的内容:
case elemIndex xs of
只需x->fx——将函数f应用于x。
Nothing->undefined--在此处执行某些操作,例如,给出一个默认值。
使用功能:
可能是默认值f(elemIndex xs)
可能是一种求和类型。
总和类型是具有多个可能表示形式的任何类型。
例如:
数据Bool=False | True
Bool
可以表示为True
或False
。也许也是如此
数据可能a=没有|只是a
Maybe类型封装了一个可选值
类型A的值可能包含类型A的值(仅表示为A),也可能为空(表示为无)
elemIndex::Eq a=>a->[a]->Maybe Int
elemIndex函数返回给定列表中与查询元素相等(by==)的第一个元素的索引,如果没有这样的元素,则返回Nothing
让我们将其与indexOf
函数进行比较
此方法的可能值是什么
数组中元素的索引(假设为2)
-1以防未找到
另一种表示方式:
如果找到,则返回一个数字-仅2
我们可以返回一个表示值的值,而不是返回像-1这样的幻数
故障选项-无
关于“如果我使用折叠,我如何解释这个问题”,我没有足够的信息来理解这个问题。可能是一个类型构造函数
Int
是一种类型可能Int
是一种类型
String
是一种类型<代码>可能字符串
是一种类型
对于任何类型的a
,可能a
是一种类型。它的值有两种类型:Nothing
或Just x
,其中x
是a
类型的值(我们写:x::a
):
在第一条规则中,值的类型x::a
和值的类型Just x::Maybe a
中的a
是相同的。因此,如果我们知道x
的类型,我们只知道的类型x
;反之亦然
在第二条规则中,值nothing
本身中的任何内容都不能确定a
的类型。将根据该值的使用方式(即从其使用上下文、从其调用站点)进行确定
至于elemIndex
的折叠实现,可以是例如
elemIndex_asFold :: Eq a => a -> [a] -> Maybe Int
elemIndex_asFold x0 = foldr g Nothing
where
g x r | x == x0 = Just x
| else = r
你查过电话号码了吗?如果元素出现在列表中,你会得到一个值(保存它第一次出现的索引),如果它没有出现,你会得到值。或者如果你的评论是基于对不熟悉,或者根本不熟悉,请参阅-或者网上无数其他好的解释中的任何一个。。我想知道如何使用fold实现这一点,但我甚至不知道如何尝试,因为我不知道如何处理边缘情况,因为存在可能