rem给出了这个:
Prelude> rem 9 8
1
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
Prelude> nonIntRem 9.1 8
1.0999999999999996
Run Code Online (Sandbox Code Playgroud)
我这样实现了:
nonIntRem x y = x - (y * (fromIntegral $ truncate (x/y)))
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我希望能够在ghci中键入以下内容:
map showTypeSignature [(+),(-),show]
Run Code Online (Sandbox Code Playgroud)
我希望ghci返回以下字符串列表:
["(+) :: Num a => a -> a -> a","(-) :: Num a => a -> a -> a","show :: Show a => a -> String"]
Run Code Online (Sandbox Code Playgroud)
当然,我遇到麻烦的第一个地方是我无法构造第一个列表,因为函数的类型签名不匹配.我该怎么做才能构建这样一个列表?ghci如何完成类型签名的打印?ghci命令在哪里:t定义(其来源)?
当我在ghci中开始一个会话时,我使用:
:set prompt >>
Run Code Online (Sandbox Code Playgroud)
但是,某些函数调用在评估时仍会在提示符处显示模块名称.我想,除了我的自定义提示,我从不想要任何其他内容.
实际ghci输出:
>>m00 <- iOIandRTfromPhrase 0.25 2 2 4 [2] 2 [2] 4.0 3
>>rs <- newMMap [("100",m00)]
>>:{
*ExperimentalConductive ExperimentalConductive Music.Theory.Bjorklund SuperDirtAction NonlinearEnsemble EnsembleNew Control.Concurrent Data.List| let lsysTest rules axiom gen phraseLength = do
*ExperimentalConductive ExperimentalConductive Music.Theory.Bjorklund SuperDirtAction NonlinearEnsemble EnsembleNew Control.Concurrent Data.List| f <- flatRandomPattern gen rules axiom [0.25,0.5..1.5] phraseLength
*ExperimentalConductive ExperimentalConductive Music.Theory.Bjorklund SuperDirtAction NonlinearEnsemble EnsembleNew Control.Concurrent Data.List| return f
*ExperimentalConductive ExperimentalConductive Music.Theory.Bjorklund SuperDirtAction NonlinearEnsemble EnsembleNew Control.Concurrent Data.List| :}
>>:{
*ExperimentalConductive ExperimentalConductive Music.Theory.Bjorklund …Run Code Online (Sandbox Code Playgroud) 我的.vimrc中有这个命令:
vip:normal @g<CR>
Run Code Online (Sandbox Code Playgroud)
当我通过键入缓冲区来设置寄存器'g'时,它会起作用:
qg<CR>jq
Run Code Online (Sandbox Code Playgroud)
如果我输入:register,它显示:
--- Registers ---
"g ^Mj
Run Code Online (Sandbox Code Playgroud)
之后,键入@g会导致回车,然后光标移动到下一行.^ M以特殊颜色显示.
但是,当我在我的vimrc中使用setreg命令时,如果我输入@g,则没有任何反应.
call setreg('g','^Mj')
Run Code Online (Sandbox Code Playgroud)
如果我输入:register,它显示:
--- Registers ---
"g ^Mj
Run Code Online (Sandbox Code Playgroud)
^ M不是特殊颜色.
我的.vimrc中有以下内容:
map <CR> :call MyFunction<CR>
Run Code Online (Sandbox Code Playgroud)
我想要存储在寄存器中的回车是运行MyFunction.只要我手动填充缓冲区而不是使用setreg,MyFunction就会被完美地调用.
我哪里出错了?我的平台是Linux.
就像标题所说的那样.我已经实现了这个,但是这个函数可能已经有了一个通用的名称,并且存在于标准库中.
关于此功能的其他建议是受欢迎的.也许有更清洁的实施.
let transform x funcList = transform' x [x] funcList
where transform' startVal accum funcList
| null funcList = reverse accum
| otherwise = let result = (head funcList) startVal
in transform' result (result:accum) $ tail funcList
Run Code Online (Sandbox Code Playgroud)
执行时,它执行以下操作:
> transform 2 [(2 + ),((-1) +),(3 *)]
[2,4,3,9]
Run Code Online (Sandbox Code Playgroud)