我是編程新手,在解決任務時遇到問題。
我必須使用該功能。在那種情況下,我必須在三角形上實作它。
我嘗試了不同的方法,但我只是遇到錯誤,這就是我想尋求幫助的原因。
data Triangle = Triangle {
tP1 :: Point,
tP2 :: Point,
tP3 :: Point}
deriving (Show)
uj5u.com熱心網友回復:
首先,點和向量是兩個獨立的概念,可能應該是不同的型別,而不僅僅是二元組的兩個不同別名。
data Point = Pt Float Float
data Vector = V Float Float
其次,您的型別類似乎抓住了使用相同向量轉換點集合的想法。回傳型別應與第一個引數型別相同,而不是硬編碼為Point.
class Polygon p where
translatePol :: p -> VectorD -> p
現在您可以從簡單開始,并為 定義一個Polygon實體Point。(將點視為退化的多邊形。)
instance Polygon Point where
translatePol (Pt x y) (Mvector v1 v2) = Pt (x v1) (y v2)
這可以用于Triangle更簡單地定義實體。
instance Polygon Triangle where
translatePol (MTriangle p1 p2 p3) v = MTriangle (t p1) (t p2) (t p3)
where t p = translatePol p v
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/537533.html
標籤:哈斯克尔
上一篇:Haskell任務實體一般
