[Haskell-cafe] Handling Postgresql array types

Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Sat Jan 3 11:25:33 UTC 2015


This will create an orphan instance but there's not much that can be done
about that short of wrapping Matrix in a newtype.


{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}

import Opaleye
import Data.Profunctor (rmap)
import Data.Profunctor.Product.Default (Default, def)
import Data.Matrix (Matrix)

-- You have to fill this in yourself
matrixFromList :: [[Double]] -> Matrix Double
matrixFromList = undefined

instance Default QueryRunner (Column (PGArray (PGArray PGFloat8))) (Matrix Double) where
  def = rmap matrixFromList def



On Tue, Dec 30, 2014 at 05:01:06PM -0800, info at rotnetix.com wrote:
> Would you be willing to send me an example of how I would do that please?
> 
> Thanks
> Riaan
> 
> On Tuesday, December 30, 2014 9:01:19 PM UTC+11, Tom Ellis wrote:
> >
> > On Sun, Dec 28, 2014 at 06:59:26PM -0800, in... at rotnetix.com <javascript:> 
> > wrote: 
> > > I am curious as to how easy it will be for me to create a different 
> > mapping 
> > > for PGArray, so that instead of (PGArray (PGArray PGFloat8)) -> 
> > [[Double]] 
> > > I can do (PGArray (PGArray Float8)) -> Matrix Double.  It is not a big 
> > deal 
> > > to do the conversion later but if the library allows that kind of thing 
> > to 
> > > be easily done it can make the code more readable. 
> >
> > Sure, you could do it by adding a QueryRunnerDefault instance or just a 
> > QueryRunner instance for a compound type like the FromRow instance for 
> > IIM. 
> >
> > Tom 
> > _______________________________________________ 
> > Haskell-Cafe mailing list 
> > Haskel... at haskell.org <javascript:> 
> > http://www.haskell.org/mailman/listinfo/haskell-cafe 
> >

> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list