小编jac*_*bsa的帖子

如果元素包含某些字符串,则从数组中删除它

假设我有一个包含以下数据的数组:

@array[0] = "hello this is a text"
@array[1] = "this is a cat" 
@array[2] = "this is a dog"
@array[3] = "this is a person"
@array[4] = "this is a computer"
@array[5] = "this is a code"
@array[6] = "this is an array"
@array[7] = "this is an element"
@array[8] = "this is a number"
Run Code Online (Sandbox Code Playgroud)

我希望有一个循环,它遍历所有的数组元素,并发现如果元素确实有狗,任何元素中是否有值"dog",然后删除元素.结果将是:

@array[0] = "hello this is a text"
@array[1] = "this is a cat" 
@array[2] = "this is a person"
@array[3] = "this is …
Run Code Online (Sandbox Code Playgroud)

arrays perl

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

在 Haskell 中如何使用两个映射来遍历 2 元组?

我有一个m支持以下操作的 monad:

someName :: (t1 -> m u1) -> (t2 -> m u2) -> ((t1, t2) -> m (u1, u2))
Run Code Online (Sandbox Code Playgroud)

用更像英语的方式来说:给定一个可用于将inbind转换为另一个映射的映射,用于另一对类型的映射,返回这两种类型对的映射。m t1m u1

这个概念有名字吗?它对所有 monad 都有明确定义吗?只有一些?没有,我的事实对于我正在研究的事实来说是错误的吗?


这让人想起traverseTraversables 的操作,只不过涉及两个映射。另外,traverse对于 2 元组似乎仅将映射应用于第二个元素:

ghci> f a = Just (a + 1)
ghci> traverse f (0, 1)
Just (0,2)
ghci> traverse f ("Hello", 1)
Just ("Hello",2)
Run Code Online (Sandbox Code Playgroud)

monads haskell traversal

2
推荐指数
2
解决办法
119
查看次数

Haskell 中双序列和位遍历之间的关系如何运作?

bisequence我在“心理类型检查”Haskell 中和之间的关系时遇到了一些麻烦bitraverse。根据文档,这是他们的签名:

\n
bisequence :: (Bitraversable t, Applicative f) => t (f a) (f b) -> f (t a b)\nbitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> t a b -> f (t c d)\n
Run Code Online (Sandbox Code Playgroud)\n

另外根据文档,以下关系成立:

\n
bisequence \xe2\x89\xa1 bitraverse id id\n
Run Code Online (Sandbox Code Playgroud)\n

但这种关系对我来说没有意义:

\n
    \n
  • 的签名ida -> a,那么它如何被接受为bitraverse需要eg的第一个或第二个参数呢a -> f c

    \n
  • \n
  • 即使我们克服了第一点, 的类型bitraverse id id也应该是Bitraversable …

haskell applicative

2
推荐指数
1
解决办法
65
查看次数

Haskell 中有“[ma] -> ma”的名称吗?

假设我有一个Futuremonad,soFuture a代表一个a可能可用或尚不可用的。然后sequenceA自动给我语义“等待所有这些 future 准备好并给我所有它们的值”:

sequenceA :: [Future a] -> Future [a]
Run Code Online (Sandbox Code Playgroud)

这类似于逻辑“与”,因为直到所有输入都准备好后它才准备好。进一步深化这个比喻,我们可以定义逻辑或:“用第一个准备好的输入的值来准备好”。

firstReady: [Future a] -> Future a
Run Code Online (Sandbox Code Playgroud)

这个隐喻是否可以推广到其他单子/可遍历对象?此操作有标准名称吗?

monads haskell traversable

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

标签 统计

haskell ×3

monads ×2

applicative ×1

arrays ×1

perl ×1

traversable ×1

traversal ×1