我有三个函数可以找到列表的第n个元素:
nthElement :: [a] -> Int -> Maybe a
nthElement [] a = Nothing
nthElement (x:xs) a | a <= 0 = Nothing
| a == 1 = Just x
| a > 1 = nthElement xs (a-1)
nthElementIf :: [a] -> Int -> Maybe a
nthElementIf [] a = Nothing
nthElementIf (x:xs) a = if a <= 1
then if a <= 0
then Nothing
else Just x -- a == 1
else nthElementIf xs (a-1)
nthElementCases :: [a] …Run Code Online (Sandbox Code Playgroud) 可能是一个简单的,但我查看了文档并搜索了示例,我仍然不确定答案.
如果我有这样的列表:
[1,2,3,4,5,6,7,8,9,0]
Run Code Online (Sandbox Code Playgroud)
我想提取一个切片,比如从索引4到索引8,即我想要:
[5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
在Haskell中这样做的惯用方法是什么?
我需要广泛使用:
slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start
Run Code Online (Sandbox Code Playgroud)
两部分问题:
(Int, Int) -> ByteString -> ByteString和flip版本相同的版本.我也试过寻找[a]版本,看看是否有一个常用名称.我怀疑我做错了什么,因为我强烈期望找到很多人走上同一条路,但我的谷歌没有找到任何东西.
如何删除字符串的每个第n个元素?
我猜你会drop以某种方式使用这个功能.
像这样丢弃第一个n,你怎么能改变这个,所以只丢下第n个,然后是第n个,等等,而不是全部?
dropthem n xs = drop n xs
Run Code Online (Sandbox Code Playgroud)