on dev help sign in
Add utility function to morph over an AlignedList
5c0eec5Raveline
squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+6
@@ -85,6 +85,7 @@ module Squeal.PostgreSQL.Schema
85 -- * Aligned lists
85 -- * Aligned lists
86 , AlignedList (..)
86 , AlignedList (..)
87 , single
87 , single
88+ , extractList
88 -- * Data Definitions
89 -- * Data Definitions
89 , Create
90 , Create
90 , Drop
91 , Drop
@@ -876,6 +877,11 @@ instance (forall t0 t1. RenderSQL (p t0 t1))
876 step :>> Done -> renderSQL step
877 step :>> Done -> renderSQL step
877 step :>> steps -> renderSQL step <> ", " <> renderSQL steps
878 step :>> steps -> renderSQL step <> ", " <> renderSQL steps
878
879
880+extractList :: (forall a0 a1. p a0 a1 -> b) -> AlignedList p x0 x1 -> [b]
881+extractList f = \case
882+ Done -> []
883+ step :>> steps -> (f step):extractList f steps
884+
879-- | A `single` step.
885-- | A `single` step.
880single :: p x0 x1 -> AlignedList p x0 x1
886single :: p x0 x1 -> AlignedList p x0 x1
881single step = step :>> Done
887single step = step :>> Done