无论如何(内部或通过插件),以防止标记被覆盖?我的意思是一种方式,所以你不能设置一个标记,如果它已经被使用(我特别考虑全局标记).
我想在我的vimrc或会话中添加它们,但我更喜欢另一种方式.
不要给我发一个脚本来做.我可以做我自己,我的问题是更多的,如果有在VIM一个隐藏的方式做到这一点,或者如果我不得不写一个脚本自己.答案显然不是.
非常感谢那些已经发给我脚本的人.我会用它们来写我自己的(因为发送的脚本不是我想要的)
我正在尝试使用HList,我需要注释它,但我无法弄清楚如何做到这一点.
如果在ghci中键入以下内容
>:t "hello" .*. HNil
Run Code Online (Sandbox Code Playgroud)
我得到以下类型签名:
HList((':)*[Char]('[]*))
我真的不明白.如果尝试使用此签名,我收到错误
"你好" .*.HNil :: HList((':)*[Char]('[]*))
我收到了一个错误
<interactive>:21:15: parse error on input `:'
Run Code Online (Sandbox Code Playgroud)
我该怎么办 ?
(我已经看到了使用的东西,:*:所以我理论上可以做String :*: HNil但却无法找到:*:.
我正在尝试实例化我PrintfArg的盒装字符串.我遵循文档中给出的示例但它不起作用,因为它找不到`formatArg'.这是一个简化版本
import Text.Printf
data MyString = MyString String
instance PrintfArg MyString where
formatArg (MyString s) format = formatArg s format
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
`formatArg' is not a (visible) method of class `PrintfArg'
Run Code Online (Sandbox Code Playgroud)
我查看了源码,Text.Printf确实formatArg没有出口?我做错了什么还是错误?
在Haskell中设计数据类型时,我经常遇到的一个问题是使用sum类型或Maybe Eithers的记录.
一个简单的例子是对FX操作,现货或远期操作进行建模,其中唯一的区别在于是否存在"到期日"(一种方式是使用和类型,如果它是一个点或前方则明确指定.
data Amount = Amount { amount :: Double, currency :: String }
data Fx = Spot { tranDate :: Day, soldAmount :: Amount, boughtAmount :: Amount }
| Forward { tranDate :: Day, paidAmount :: Amount, boughtAmount :: Amount , maturity :: Day}
Run Code Online (Sandbox Code Playgroud)
另一种方法就是把它maturity作为"可能"
data Fx = Fx { tranDate :: Day
, soldAmount :: Amount
, boughtAmount :: Amount
, maturity (Maybe Day)
}
Run Code Online (Sandbox Code Playgroud)
或其他任何东西
我是 Nix 的新手,对此感到非常兴奋(到目前为止,我一直在为 Haskell 使用它)。我打算用它来部署 PHP 应用程序。但是,Nix 如何处理 PHP 包(正常安装或使用 pear 安装)。
正如问题所述,是否有可能改变比例文本的角度ggplot?
我的意思是,我希望x轴上使用的标签旋转90度.
您显然可以使用angle图例,但它似乎不适用于比例.
任何的想法 ?
我写了一些东西Data.List.groupBy.它没有按预期工作,所以我最终写了我自己的版本groupBy:毕竟我不确定那个Data.List应该做什么(没有真正的文档).
无论如何,我的测试通过我的版本,groupBy而它失败了Data.List.我发现(感谢quickcheck)两个函数表现不同的情况,我仍然不明白为什么两个版本之间存在差异.是Data.List版本马车或者是我的?(当然我的是一个天真的实现,可能不是最有效的方法).
这是代码:
import qualified Data.List as DL
import Data.Function (on)
import Test.QuickCheck
groupBy' :: (a -> a -> Bool) -> [a] -> [[a]]
groupBy' _ [] = []
groupBy' eq (x:xs) = xLike:(groupBy' eq xNotLike) where
xLike = x:[ e | e <- xs, x `eq` e ]
xNotLike = [ e | e <- xs, not $ x `eq` e ]
head' [] = …Run Code Online (Sandbox Code Playgroud) 我正在尝试从可选参数构建一个字符串.例如,从标题和名称生成问候语字符串这在命令式语言中是微不足道的,看起来像这样
def greeting(title, name):
s = "Hello"
if a :
s += "Mr"
if b:
s += b
Run Code Online (Sandbox Code Playgroud)
我在haskell的第一次尝试是:
greeting :: Bool-> Maybe String -> String
greeting title name = foldl (++) "Hello" (catMaybes [title' title, name])
where
title' True = Just "Mr"
title' False = Nothing
Run Code Online (Sandbox Code Playgroud)
我敢肯定有一种更好的方式来做到这一点.首先,我确信这种foldl catMaybes组合存在于某个地方,但我找不到它.其次,折叠在这里工作,因为我使用相同的操作(和相同的类型).那么有什么更好的方法呢?我也在考虑使用Writer,但我不确定如何做到这一点.
这只是一个例子(可能是坏的或太简单).我的问题更多,如何将其概括为许多论点.
所以真正的问题不只是关于连接2个字符串,而是更多如何使用可选的部分和参数从模板生成字母,就像在Word中使用邮件合并工具一样.
你有一个csv文件,其中包含客户名称,电话号码,逾期等等.某些字段可能是可选的.另一方面,您有一个模板,目标是根据*模板为每个客户(行)生成一个字母.那么问题是你如何在haskell中编写这个模板(没有任何模板库的帮助).在我的第一个例子中,模板将是"hello(Mr){name}",但实际上,模板可以是发票,声明信,甚至是完整的会计报告.
我是新用的cabal,我需要我的包包含一个小的可执行文件以及整个库.是否可以这样做(导出可执行文件和库)或者cabal包是否具有type(可执行的OR二进制文件).是否也可以在同一个packagke中导出许多可执行文件?
我有以下问题,我正在解析一个read用于转换Int为的文件String.问题是当它失败时,我无法显示无法解析的字符串.我得到了Exception: Prelude.read : no parse.
我试着编写自己的myRead函数,它将使用read并抛出更有意义的消息,但我不知道如何捕获所引发的错误read.
或者,有没有其他方法可以找到未正确读取的内容(使用调试器或跟踪?)