我正在尝试使用reST风格的文档字符串,即
def foo(bar):
"""a method that takes a bar
:param bar: a Bar instance
:type bar: Bar
Run Code Online (Sandbox Code Playgroud)
是否有标准的文件记录方式yields?我查看了http://sphinx-doc.org/domains.html#info-field-lists,a-la这个问题[ 使用javadoc for Python文档 ],但没有运气.我想象的是,
:yields: transformed bars
:yield type: Baz
Run Code Online (Sandbox Code Playgroud)
谢谢!
Constraint当我尝试编写一个简单的例子时,我收到的错误不在范围内,
{-# LANGUAGE UndecidableInstances,
MultiParamTypeClasses,
KindSignatures,
Rank2Types,
ConstraintKinds,
FlexibleInstances,
OverlappingInstances,
TypeFamilies #-}
type family A a :: Constraint
Run Code Online (Sandbox Code Playgroud)
错误是,
> ghci test.hs
[1 of 1] Compiling Main ( test.hs, interpreted )
test.hs:10:20: Not in scope: type constructor or class `Constraint'
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
约束同义词似乎按预期工作,
type ShowOrd a = (Ord a, Show a)
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在编写一个elm程序,它应该在HTML列表中格式化其输出.我想要的功能,
inputs = ["first", "second", "third"]
Run Code Online (Sandbox Code Playgroud)
并输出某种Element基本上是榆树的,
<ul>
<li>first</li>
<li>second</li>
<li>third</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
可悲的是,我找不到任何内置函数来执行此操作.也许markdown语法可以扩展为采用类似Mustache的模板,
[markdown|
{{#inputs}}
* {{text}}
{{/inputs}}
]
Run Code Online (Sandbox Code Playgroud)
(抱歉,我不确定对于字符串数组而不是对象数组,正确的Mustache语法是什么.
原始的HTML元素发射也很好.提前致谢!
覆盖像"+"这样的方法的正确方法是什么?现在我有
(defn- + [x y] (replacement x y))
Run Code Online (Sandbox Code Playgroud)
但这会在命令行上产生警告.
WARNING: + already refers to: #'clojure.core/+ in namespace: <MY-NAMESPACE>, being replaced by #'<MY-NAMESPACE>/+
Run Code Online (Sandbox Code Playgroud) 我有一些代码目前使用ST monad进行评估.我不喜欢将IO放在任何地方,因为该runST方法产生纯粹的结果,并指示这样的结果可以安全地调用(相对unsafePerformIO).但是,由于我的一些代码变得更长,我确实希望将调试打印语句放入.
是否有任何类提供双重个性monad [或类型类机制],可以是ST或IO(取决于其类型或"isDebug"标志)?我记得SPJ在他的"Fun with Type Functions"论文中引入了一个"Mutation"类,它使用关联类型将IO与IORef和ST关联到STRef.这样的包存在某个地方吗?
非常感谢[第n次],CA McCann!使用该解决方案,我能够为支持pdebug函数的monad引入一个额外的类.该ST单子会忽略这些呼叫,而IO将运行putStrLn.
class DebugMonad m where
pdebug :: String -> m ()
instance DebugMonad (ST s) where
pdebug _ = return ()
instance DebugMonad IO where
pdebug = putStrLn
test initV = do
v <- newRef initV
modifyRef v (+1)
pdebug "debug"
readRef v
testR v = runST $ test v
Run Code Online (Sandbox Code Playgroud)
这在ghci中有一个非常幸运的结果.由于默认情况下表达式是IO类型,因此运行类似"test 3"的操作将导致IO monad运行,因此您可以轻松地调试它,然后在您真正想要运行时使用类似"testR"的方法调用它它.
是否有一个高级API用于在Haskell中使用正则表达式进行搜索和替换?特别是,我正在看Text.Regex.TDFA或Text.Regex.Posix包.我真的很喜欢某种类型:
f :: Regex -> (ResultInfo -> m String) -> String -> m String
Run Code Online (Sandbox Code Playgroud)
所以,例如,用"cat"代替"dog"你可以写
runIdentity . f "dog" (return . const "cat") -- :: String -> String
Run Code Online (Sandbox Code Playgroud)
或者使用monad做更高级的事情,比如计算事件等.
Haskell的文档非常缺乏.一些低级别的API说明是这里.
有没有办法在makefile make中手动抑制echo命令@?我在帮助或手册页中找不到这个,只是说"--quiet"做相反的事情.
我正在尝试使用Criterion框架来衡量一个简单的Haar DWT程序的性能.(这是错误的慢,但我会留下另一个问题).遗憾的是,我无法在网上找到任何好的文档.我的两个主要问题是
这个来源相对减少了; 第一个函数getRandList生成一个随机数列表; haarStep将输入信号转换为差值和求和,并haarDWT调用前者并对求和进行递归.我试图传递getRandList给haarDWT通过懒惰的评价,但也许我的使用是不正确/不支持.时间似乎没有意义.
{-# LANGUAGE ViewPatterns #-}
import Control.Arrow
import qualified Data.Vector.Unboxed as V
import System.Random
import Criterion.Main
invSqrt2 = 0.70710678118654752440
getRandList :: RandomGen g => g -> Int -> [Float]
getRandList gen 0 = []
getRandList gen n = v:rest where
(v, gen') = random gen
rest = getRandList gen' (n - 1)
haarStep :: V.Vector Float -> (V.Vector Float, V.Vector Float)
haarStep = (alternatingOp (-) …Run Code Online (Sandbox Code Playgroud) 有没有办法打印出嵌套变量的推断类型ghci?考虑一下代码,
let f = g where
g (x :: Int) = x
Run Code Online (Sandbox Code Playgroud)
然后,查询类型会很好g,例如:t f.g打印出来Int -> Int.
我有两种数据类型,用于hastache模板.在我的代码中有两种不同的类型是有意义的,都有一个名为"name"的字段.当然,这会引发冲突.似乎有一种机制可以消除对"name"的任何调用的歧义,但实际的定义会导致问题.是否有任何解决方法,比如让记录字段名称合格?
data DeviceArray = DeviceArray
{ name :: String,
bytes :: Int }
deriving (Eq, Show, Data, Typeable)
data TemplateParams = TemplateParams
{ arrays :: [DeviceArray],
input :: DeviceArray }
deriving (Eq, Show, Data, Typeable)
data MakefileParams = MakefileParams
{ name :: String }
deriving (Eq, Show, Data, Typeable)
Run Code Online (Sandbox Code Playgroud)
即如果字段现在在代码中使用,它们将是"DeviceArray.name"和"MakefileParams.name"?