相关疑难解决方法(0)

在Haskell中防守与if-then-else对比案例

我有三个函数可以找到列表的第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)

haskell if-statement case

98
推荐指数
3
解决办法
6万
查看次数

在Haskell中获取一个子列表

可能是一个简单的,但我查看了文档并搜索了示例,我仍然不确定答案.

如果我有这样的列表:

[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中这样做的惯用方法是什么?

haskell

20
推荐指数
3
解决办法
1万
查看次数

采用ByteString的子串的惯用法

我需要广泛使用:

slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start
Run Code Online (Sandbox Code Playgroud)

两部分问题:

  1. 这已经有了名字吗?我找不到任何在Hoogle上搜索该类型的内容,但它似乎应该是一个非常普遍的需求.我也尝试过搜索(Int, Int) -> ByteString -> ByteString和flip版本相同的版本.我也试过寻找[a]版本,看看是否有一个常用名称.
  2. 有没有更好的方法来写它?

我怀疑我做错了什么,因为我强烈期望找到很多人走上同一条路,但我的谷歌没有找到任何东西.

haskell bytestring

8
推荐指数
1
解决办法
569
查看次数

从字符串中删除每个第n个元素

如何删除字符串的每个第n个元素?

我猜你会drop以某种方式使用这个功能.

像这样丢弃第一个n,你怎么能改变这个,所以只丢下第n个,然后是第n个,等等,而不是全部?

dropthem n xs = drop n xs
Run Code Online (Sandbox Code Playgroud)

haskell

7
推荐指数
3
解决办法
5435
查看次数

标签 统计

haskell ×4

bytestring ×1

case ×1

if-statement ×1