相关疑难解决方法(0)

不同类型的列表?

data Plane = Plane { point :: Point, normal :: Vector Double }
data Sphere = Sphere { center :: Point, radius :: Double }

class Shape s where
    intersect :: s -> Ray -> Maybe Point
    surfaceNormal :: s -> Point -> Vector Double
Run Code Online (Sandbox Code Playgroud)

我也做了两个PlaneSphere实例Shape.

我试图将球体和平面存储在同一个列表中,但它不起作用.据我所知,它不应该工作,因为SpherePlane两种不同的类型,但他们的两个实例Shape,所以它不应该工作?如何在列表中存储形状和平面?

shapes :: (Shape t) => [t]
shapes = [ Sphere { center = Point [0, 0, 0], radius = 2.0 }, …
Run Code Online (Sandbox Code Playgroud)

haskell

39
推荐指数
2
解决办法
7443
查看次数

标签 统计

haskell ×1