我试图理解为什么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) 要从当前位置+当前行向上拉4行,我可以使用4yk,并从当前位置+当前行向下划线4行,我可以使用4yj
但是4yk移动光标,而4yj不是(至少在我正在使用的vim版本中,neovim).
为什么是这样 ?
我试图理解为什么没有类型错误 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) 我需要更新非常大的默认记录的一个字段。
由于默认值可能会更改,因此我不想手动重建整个记录。
现在,我遇到了以下方法,但是我不确定它是如何工作的:
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{..} 对变量进行模式匹配,但我看不到calc该 MyResult记录有什么变量...
我也查了一下mappend(和Monoids),也不确定它们是如何工作的...
感谢您的任何帮助
在 vim 中,我可以开始搜索 'doc',例如,输入/doc然后 ENTER
要重复该搜索,我知道我可以输入/然后 ENTER(2 次按键)
我的问题是,我可以一键重复搜索吗?
在记事本中,您可以,尽管需要重复单击鼠标左键。
例如,我发现这种能力对于 SHIFT-# 或 SHIFT-* 非常方便,但这些仅适用于整个单词。
有没有一种搜索模式的方法,但是当存在匹配项时,将光标放在模式的末尾而不是开头?
例如,/ my ENTER会将光标置于'myvariable'('m')的开头。
我经常发现,如果将光标放置在搜索模式的结尾之后(这里,在“ v”上),这将很方便。这可能吗 ?
我很难理解为什么这段代码取自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是一个列表元素而不是一个函数......
我试图LO查找的定义{,并}与,如以下例如使用,但我无法找到他们。这些功能吗?
data Person = Person {
pID :: Int,
pName :: String
} deriving (Show)
Run Code Online (Sandbox Code Playgroud)