小编Ale*_*x R的帖子

我如何在Haskell中使用镜头来复制Python的枚举?

Python 列表中的枚举可以写成zip [0..].我查看了Control.Lens.Traversal和Control.Lens.Indexed,但我无法弄清楚如何使用镜头将其概括为任何合理的容器(我犹豫说"Traversable").

我猜itraverse或是itraverseOf关键.

haskell haskell-lens

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

如何根据哪个monad位于变换器堆栈的基础上编写一个行为不同的函数

(在这一点上,这更像是一个我想知道如何解决的难题,而不是我希望在实践中使用的解决方案)

我正在尝试编写一个runDebug具有以下规范的函数:它的参数有类型IO (); 它的返回类型是(Monad m) => m (); 取决于它m,它表现为两种不同的方式之一; 如果MonadIO m,那么runDebug = liftIO,否则runDebug = const (return ()).

我试过的方法依赖于类型类

class MonadDebug m where
  runDebug :: IO () -> m ()
Run Code Online (Sandbox Code Playgroud)

我尝试过使用MonadBase,我尝试过使用MonadIO重叠的实例,但是所有这些实例都遇到了歧义问题.

我想我可以通过为每个变换器编写实例来获得一些工作,但我一直希望避免这种情况.

haskell

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

如何使用"冒号斜线"修订简表并仍然引用提交的父级?

假设我想引用最新提交的父级,其提交消息包含"foo".

HEAD^{/foo}^会做的.
这可以略微缩短为@^{/foo}^(我认为).

<rev>^{/<text>}尽管如此,结构还是简化了::/<text>.

有没有办法使用简短形式仍然可以引用生成的提交的父级?

git

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

避免在没有类型注释的情况下进行绑定的单态

我有一些代码使用类型消除实例的歧义(真正的代码使用GHC.TypeLits单例作为类型标签,但我不认为这是密切相关的)我想使用let绑定来避免文本级重复; 不幸的是,这使结果单形化.

以下是该问题的一个示例:

class Foo a where
  foo :: a

instance Foo Int where
  foo = 0

instance Foo Char where
  foo = 'a'

data Bar a = Bar String
  deriving (Show)

bar :: forall a. (Show a, Foo a) => a -> Bar a
bar _ = Bar $ show (foo :: a)

idInt :: Bar Int -> Bar Int
idInt = id

idChar :: Bar Char -> Bar Char
idChar = id

main = let quux = bar …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell let monomorphism

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

wl-pprint-extras中的可选空间和多个备选方案

是否有一种好的/可接受的方式来获得两种以上的替代布局,特别是以支持可选空间的方式?

特别是,我可能想以三种方式之一打印列表:

[1, 2, 3, 4, 5]

[1,2,3,4,5]

[ 1
, 2
, 3
, 4
, 5
]
Run Code Online (Sandbox Code Playgroud)

按照优先顺序排列.

haskell pretty-print

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

python中的排列,有一个扭曲

我有一个对象列表(例如,让我们说5).我想要一些可能的排列列表.具体来说,鉴于有些对不在一起,而有些三元组不能制作三明治,我怎样才能产生所有其他排列?我意识到我首先生成所有这些并检查它们是否有效,但我认为甚至不考虑不起作用的对和三元组会更快.

我错了,先检查并稍后生成会更快吗?

我该怎么办?

python

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

地图函数中的Haskell条件

是否有可能在地图功能中有条件?

例如 :

map (> 0 < 100 )[1..10]
Run Code Online (Sandbox Code Playgroud)

如果不可能,那怎么能实现呢?

haskell map

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