小编use*_*476的帖子

Haskell:为什么“ id”使该功能不再单调?

我试图理解为什么id在下面序列的最后一行中添加会消除单声道方面:

Prelude> :t id
id :: a -> a
Prelude> :t Control.Monad.liftM2
Control.Monad.liftM2
  :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
Prelude> :t  (==)
(==) :: Eq a => a -> a -> Bool
Prelude> :t Control.Monad.liftM2 (==)
Control.Monad.liftM2 (==)
  :: (Monad m, Eq a) => m a -> m a -> m Bool
Prelude> :t Control.Monad.liftM2 (==) id
Control.Monad.liftM2 (==) id :: Eq a => (a -> …
Run Code Online (Sandbox Code Playgroud)

haskell

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

在VIM中,为什么光标移动4yk而不是4yj?

要从当前位置+当前行向上拉4行,我可以使用4yk,并从当前位置+当前行向下划线4行,我可以使用4yj

但是4yk移动光标,而4yj不是(至少在我正在使用的vim版本中,neovim).

为什么是这样 ?

vim neovim

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

Haskell:试图理解fmap(+)的类型(1)

我试图理解为什么没有类型错误 fmap (+) (1)

我确实理解以下顺序:

Prelude> :t  fmap 
fmap :: Functor f => (a -> b) -> f a -> f b
Prelude> :t  (+)  
(+) :: Num a => a -> a -> a                          # like a-> b with b = a -> a
Prelude> :t  fmap (+)
fmap (+) :: (Functor f, Num a) => f a -> f (a -> a)
Prelude> :t  fmap (+) (Just 1)                       
fmap (+) (Just 1) :: Num a => Maybe (a …
Run Code Online (Sandbox Code Playgroud)

haskell

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

使用Haskell @更新记录中的单个字段

我需要更新非常大的默认记录的一个字段。

由于默认值可能会更改,因此我不想手动重建整个记录。

现在,我遇到了以下方法,但是我不确定它是如何工作的:

unaggregate :: MyResult -> MyResult
unaggregate calc@MyResult{..} = calc{ the_defaults = the_override
                                         `mappend` the_defaults }
  where
    the_override = create ("aggregation" := False)
Run Code Online (Sandbox Code Playgroud)

我尝试在Google中搜索“ Haskell @运算符”,但是它不会立即返回有用的信息。

我看到某个地方calc@MyResult{..} 对变量进行模式匹配,但我看不到calcMyResult记录有什么变量...

我也查了一下mappend(和Monoids),也不确定它们是如何工作的...

感谢您的任何帮助

haskell

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

一键重复上次搜索?

在 vim 中,我可以开始搜索 'doc',例如,输入/doc然后 ENTER

要重复该搜索,我知道我可以输入/然后 ENTER(2 次按键)

我的问题是,我可以一键重复搜索吗?

在记事本中,您可以,尽管需要重复单击鼠标左键。

例如,我发现这种能力对于 SHIFT-# 或 SHIFT-* 非常方便,但这些仅适用于整个单词。

vim neovim

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

在Vim中:搜索文本,但将光标放在比赛的结尾?

有没有一种搜索模式的方法,但是当存在匹配项时,将光标放在模式的末尾而不是开头?

例如,/ my ENTER会将光标置于'myvariable'('m')的开头。

我经常发现,如果将光标放置在搜索模式的结尾之后(这里,在“ v”上),这将很方便。这可能吗 ?

vim neovim

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

带有 4 个参数的文件夹?

我很难理解为什么这段代码取自haskell.org 练习页面类型检查 (并用作列表反转功能):

myReverse :: [a] -> [a]
myReverse xs = foldr (\x fId empty -> fId (x : empty)) id xs []
Run Code Online (Sandbox Code Playgroud)

我的第一个困惑点是 foldr 接受 3 个参数,而不是 4 个:

foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
Run Code Online (Sandbox Code Playgroud)

所以我猜这myReverse相当于:

myReverse xs = foldr ((\x fId empty -> fId (x : empty)) id) xs []
Run Code Online (Sandbox Code Playgroud)

但是这也不应该起作用,因为在 lambda 中,它x是一个列表元素而不是一个函数......

haskell

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

Haskell:“ {”,“}”和“,”的定义是什么?

我试图LO查找的定义{,并},如以下例如使用,但我无法找到他们。这些功能吗?

data Person = Person { 
  pID :: Int, 
  pName :: String 
} deriving (Show)
Run Code Online (Sandbox Code Playgroud)

haskell

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

标签 统计

haskell ×5

neovim ×3

vim ×3