我想知道以下两种策略对于重载函数(在我的例子中是teX函数)来说哪一种更加高效。
Using
data
and pattern matching:data TeX = TeXt String | TeXmath String deriving (Show,Read,Eq) teX (TeXt t) = t teX (TeXmath t) = "$$" ++ t ++ "$$"
Or using a bit of abstraction:
class TeX t where teX :: t -> String newtype TeXt = TeXt String deriving (Show,Read,Eq) instance TeX TeXt where teX (TeXt t) = t newtype TeXmath = TeXmath String deriving (Show,Read,Eq) instance TeX TeXmath where teX (TeXmath t) = "$$" ++ t ++ "$$"
第一种方法使用起来更容易,第二种方法更容易丰富;但我想知道它们中哪一个运行速度更快,或者Haskell是否会以完全相同的方式实现它们。
String
,而是应该渲染为Text
(或LaTeX
,当然)。 - leftaroundaboutteX
函数在这里呈现的。 - applicativehtml :: t -> String
和markdown :: t -> String
,以及在该包中定义的其他类似函数? - applicative