0
저는 haskell 프로그램에서 CSG를 구현하고 있습니다. OOP lahguage에서 그렇게했을 때 나는 복합 수호 영감에 영감을 받았다.함수형 프로그래밍에서의 단단한 도형
나는 추상 클래스 "Object", 몇 가지 구체적인 객체 (Sphere, plane, 등) 및 연산자에 대한 구체적인 클래스 "CompositeObject"와 Object에 대한 두 개의 포인터를 가졌습니다.
내가 재귀 데이터 형식에 생각 하스켈에서 그런 식으로 CSG 트리를 구현하려면 :data Shape = Sphere (..some types here..)
| ..other primitive objects..
| Composite Shape Op Shape
은 그 때 나는 패턴 일치를 사용하여 객체를 통해 기능을 정의합니다. 여기서 문제는 모든 개체가이 모듈에 있어야한다는 것입니다. 모든 물체는 단일체에 집중되어 있습니다. 등
하지만 복합 객체에 대한,
class Shape a where
intersection :: Ray -> a -> [Points]
normal :: Point -> a -> Vector
...
지금 내가 구, 비행기, cilinder에 대한 인스턴스를 정의
는 그 객체에 대한 typeclass을 갖는 좋은 아이디어라고 생각? 생성자에 따라 클래스 함수를 사용하거나 두 가지 유형의 클래스로 구성된 유형을 만들려면 어떻게해야합니까?