Este es mi primer programa con Haskell. Lo escribo para poner en práctica todo lo que he leído sobre FP. Lo primero que trato de averiguar es cómo modelar los datos que sacaré de mi base de datos (eventualmente escribiré en la base de datos). Empecé con mi mesa users
y escribí algo como estoEstructuras de datos de Haskell para la aplicación respaldada por DB
module Model (User) where
class Audited a where
creationDate :: a -> Integer
lastUpdatedDate :: a -> Integer
creationUser :: a -> User
lastUpdatedUser :: a -> User
class Identified a where
id :: a -> Integer
data User = User {userId :: Integer}
instance Identified User where
id u = userId u
y
module Main (main) where
import Model (User)
data Point = Pt {pointx, pointy :: Float}
instance Show Point where
show (Pt x y) = "(" ++ show x ++ ", " ++ show y ++ ")"
main :: IO()
main = do
print $ Pt 1 2
(El Point
material es sólo yo probando ... este es mi primer código Haskell nunca)
Este código no se compila, pero aún no estoy realmente preocupado por eso, lo más importante es configurar mis tipos de una buena manera.
Aquí es una lista de preguntas que tengo
- ¿Cuál es la mejor manera de modelar los datos basados en registros en Haskell?
- La mayoría de mis tablas tienen información de auditoría e identidades opacas. ¿Cómo puedo aprovechar esto usando el sistema de tipo Haskell? Puede ver que creé clases auditadas e identificadas. ¿Es este un buen enfoque?
- ¿Es esta una buena aplicación para Haskell? Estaba considerando usar Clojure porque podría interactuar con Java (esta aplicación está actualmente escrita en Java).
Por cierto, no es una buena idea definir una función 'id'. Por lo general, 'id' es la función de identidad definida como' id x = x' y, por lo tanto, bastante importante. – fuz
Hola. Veo que estás usando Haskell con una base de datos, y también código en Scala. ¿Puedes echar un vistazo a mi pregunta, por favor? ¿Cómo lidiar con una base de datos cuando tienes objetos inmutables como generalmente hacemos en FP? ¿Utiliza clases mutables para el acceso a datos? http://stackoverflow.com/questions/12882099/how-to-update-object-in-mongo-with-an-immutable-salat-case-class –