考虑一种在一类函数符号node
和一类变量上参数化的术语var:
data Term node var
= VarTerm !var
| FunTerm !node !(Vector (Term node var))
deriving (Eq, Ord, Show)
instance Functor (Term node) where
fmap f (VarTerm var) = VarTerm (f var)
fmap f (FunTerm n cs) = FunTerm n (Vector.map (fmap f) cs)
instance Monad (Term node) where
pure = VarTerm
join (VarTerm term) = term
join (FunTerm n cs) = FunTerm n (Vector.map join cs)
Run Code Online (Sandbox Code Playgroud)
这是一个有用的类型,因为我们用开放的术语编码,用Term node Var,关闭术语Term node Void …
我正在使用Mathematica 8,我正在努力进行纹理化.尽管多面体对象的纹理已被证明相对简单,但我在尝试纹理球体时遇到了问题.在文档中,纹理显示的球体的唯一方法是使用SphericalPlot3D,恕我直言,这是一个kludgey解决方案,特别是因为我正在尝试在球体上执行操作(例如:翻译).在toto,我的问题是:有没有办法纹理一个球体原语?