dmzlj (dmzlj) wrote in ru_lambda,
dmzlj
dmzlj
ru_lambda

Как сделать ЭТО без FlexibleContexts ?

{-# Language TypeFamilies, FlexibleContexts #-}

module Main where

import qualified Data.List as L

class (Num (Elem c)) => DataSet c  where
    type Elem c :: *
    data TObservation c :: *
    observations :: c -> [TObservation c]
    measurements :: TObservation c -> [Elem c]

instance DataSet () where
  type Elem () = Float
  data TObservation () = TObservationUnit [Float]
  observations () = replicate 10 (TObservationUnit [0,0,0,0])
  measurements (TObservationUnit xs) = xs 

kMeans :: DataSet c => c -> [TObservation c]
kMeans s = undefined
  where
    wtf1 = L.foldl wtf2 0 (observations s)
    wtf2 acc xs = acc + L.sum (measurements xs)

main = do
  putStrLn "jopa"



Если убрать FlexibleContexts в частности на Num (Elem c) - то собираться перестанет,
выведение типов отсыхает.

Как это делать без FlexibleContexts или как это вообще делать правильно?
Tags: haskell, typefamilies
Subscribe

  • Пакеты программ на haskell под RHEL

    Всем доброго времени суток! На всякий случай напишу, что готов помочь в сборке пакетов программ на haskell под RHEL 5/6 32/64. Вдруг кому-то будет…

  • Я не понимаю Type Classes

    Копая расширяемые записи для Haskell столкнулся с проблемой. мне нужна функция: cast' :: ISubset fs' fs => PlainRec fs -> PlainRec fs'…

  • Как дебажить FFI?

    Пару лет назад написал привязку к библиотеке pam, чтобы можно было по паролю рута или другого системного юзера авторизовываться. Для утилит всяких.…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments

  • Пакеты программ на haskell под RHEL

    Всем доброго времени суток! На всякий случай напишу, что готов помочь в сборке пакетов программ на haskell под RHEL 5/6 32/64. Вдруг кому-то будет…

  • Я не понимаю Type Classes

    Копая расширяемые записи для Haskell столкнулся с проблемой. мне нужна функция: cast' :: ISubset fs' fs => PlainRec fs -> PlainRec fs'…

  • Как дебажить FFI?

    Пару лет назад написал привязку к библиотеке pam, чтобы можно было по паролю рута или другого системного юзера авторизовываться. Для утилит всяких.…