[Haskell] Мой первый обощеный вектор
От: barn_czn  
Дата: 21.02.14 20:20
Оценка:
Уважаемые гуру Хаскеля, представляю на суд мою реализацию вектора. Попинайте плиз.
Кто то писал что Хаскель это проще чем пишут. Очень тяжело далось, просто вывих мозга получил.
И я не смог обойтись без type family, а в книжках (переведеных) не пишут про это расширение.



{-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, InstanceSigs #-}


module Graphics.XiRay where


type family TFloat
type family TInt


class (Floating TFloat, Integral TInt) => Vector v where

    e::v->TInt->TFloat
    
type family TVector

class (Floating TFloat, Integral TInt, Vector TVector) => Matrix m where
    
    row::m->TInt->TVector


-- Ниже пробуем заинстансить

data Vector4 f = Vector4 f f f f deriving Show
--
type Vector4Float = Vector4 Float

type instance TInt = Int
type instance TFloat = Float

instance Vector Vector4Float where
            
    e::Vector4Float->TInt->TFloat
    e (Vector4 x _ _ _) 0 = x
    e (Vector4 _ x _ _) 1 = x
    e (Vector4 _ _ x _) 2 = x
    e (Vector4 _ _ _ x) 3 = x
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.