ex.4.29 の対応前後で既存のテストプログラムの結果が同じ、ステップ数が減っているまたは同じであることを確認したので、
色々と突っ込みどころは満載ですが、ひとまず ex.4.29 を完了とさせていただきました。その後、ex.4.30 を解いています。
色々と突っ込みどころは満載ですが、ひとまず ex.4.29 を完了とさせていただきました。その後、ex.4.30 を解いています。
obj :: OpenSCADM Model3d obj = do let (Right r) = sketch do a <- point & x 0 & y 0 b <- point & x 4 & y 0 v1 <- line & from a & degree 30 v2 <- line & from b & degree 90 c <- intersectionPoint v1 v2 poly =<< traverse (chamfer 0.5 . pure) [a, b, c] pure $ linearExtrudeDefault 1 r
instance (Models a) => Models (a, a) where type Res (a, a) = (Res a, Res a) toList (a, b) = toList a <> toList b <&> fmap (const Proxy) fromList [(a, pa), (b, pb)] = (fromList [(a, unsafeCoerce pa :: Proxy a)], fromList [(b, unsafeCoerce pb :: Proxy a)]) fromList _ = error "fromList: (a, b)"
data Hoge = Hoge { honi :: Polygon, fuwa :: Point, poyo :: Polygon }
data HogeRes = HogeRes { honi :: Model2d, fuwa :: Vector2d, poyo :: Model2d }
(next|prev)permutation(By)?
のうち存在しない3関数を追加する)にbenchmarkとchangelogを足す作業をしようと思います。