如何使用haddock文档工具继续编号列表?黑线鳕的以下几行
-- 1. First line.
--
-- 2. Second line with instructions to do something
--
-- >>> command-linecmd param
--
-- 3. Third line..
--
Run Code Online (Sandbox Code Playgroud)
生成下一个html:
</p><ol><li> First line.
</li><li> Second line with instructions to do something
</li></ol><pre class="screen"><code class="prompt">>>> </code><strong class="userinput"><code>command-linecmd param
</code></strong></pre><ol><li> Third line..
</li></ol>
Run Code Online (Sandbox Code Playgroud)
这打破了编号.有没有办法让黑线鳕继续使用HTML中的第三个数字,或者我应该尝试其他的东西(>>>给出一个很好的格式,我为什么要使用它)?
假设
class A a where
m1 :: a -> a
m2 :: a -> a
m3 :: a -> a
...
Run Code Online (Sandbox Code Playgroud)
可以使用m1为m2和m3编写默认实现.
离开m2并m3进入A或将它们写为A m2 :: A a => a -> a之外的额外函数是否更好?或者换句话说,值得最小化类API还是重要?
我检查了(快速)一些样式指南,比如programmin指南和大型设计中的一些链接-问题,以及一些书籍(工艺和rwh),但找不到这个指南.如果有关于此类问题的演示文稿,博客或书籍,请您分享一些指示?
电子邮件列表线程类型类设计讨论了这一点,并可能强调最小化.
是否有可能为其提供Eq实例B a,如果给予额外帮助,例如Eq a某处?
{-# LANGUAGE TypeFamilies #-}
class A a where
type B a
somef :: a -> B a -> B a -> Bool
Run Code Online (Sandbox Code Playgroud)
使用类型族和类型族的实例定义派生实例的问题很接近.以下内容在type B a-line 上不起作用或类似修改(或者只是尝试了错误的修改).
{-# LANGUAGE StandaloneDeriving #-}
-- deriving instance Eq (B a) -- illegal application
-- deriving instance Eq a => Eq (B a) -- illegal application
Run Code Online (Sandbox Code Playgroud)
约束Eq a => A a并没有帮助.将约束添加到somefcompiles(somef :: Eq a => ... …
让我们有两个没有任何方法的类,另一个是子类.此外,假设功能f5和f6那些unsafeCoerce从类型等.
现在,ghci可以组合这些函数并找到它们的签名(在ScopedTypeVariables的帮助下),见f56, f56b and f56'下文.这些本质上是具有约束的函数Hmm.
是否可以编写f56c,即在没有引用SHmm约束中的类的情况下编写它?例如,ghci可以在一些language-pragma的帮助下编译吗?
unsafeCoerce当班级没有任何方法时,使用会有什么样的危险?(或者当子类SHmm
没有任何方法?)有没有写别的办法/推荐的方式f5和f6?
作为最后一个,在下面的代码中f5,f6有他们的签名,为什么不可能只写f56 = f5 . f6?(特别是在SHmm空的情况下,这就是SHmm在编写时很容易认为不需要约束的原因f56.)
{-# LANGUAGE ScopedTypeVariables, KindSignatures, MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes, FlexibleInstances, FlexibleContexts #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
import Unsafe.Coerce
class Hmm (f :: *)
class Hmm f => SHmm f
f5 :: (Hmm m1, SHmm m) …Run Code Online (Sandbox Code Playgroud)