hsc3-lang-0.13: Haskell SuperCollider Language

Safe HaskellNone

Sound.SC3.Lang.Collection.Universal.Datum

Description

Functions to allow using the Sound.OpenSoundControl Datum as a universal data type. In addition to the functions defined below it provides instances for IsString, Num, Fractional, Floating, Real, RealFrac, Ord, Enum and Random.

Synopsis

Documentation

datum_lift :: (Int -> Int) -> (Double -> Double) -> Datum -> DatumSource

Lift an equivalent set of Int and Double unary functions to Datum.

 map (datum_lift negate negate) [Int 5,Float 5] == [Int (-5),Float (-5)]

datum_promote :: Datum -> DatumSource

Promote Int and Float Datum to Double Datum.

 map datum_promote [Int 5,Float 5] == [Double 5,Double 5]

datum_lift' :: (Double -> Double) -> Datum -> DatumSource

Lift a Double unary operator to Datum via datum_promote.

 datum_lift' negate (Int 5) == Double (-5)

type I_Binop = Int -> Int -> IntSource

An Int binary operator.

type F_Binop = Double -> Double -> DoubleSource

A Double binary operator.

datum_lift2 :: I_Binop -> F_Binop -> Datum -> Datum -> DatumSource

Given Int and Double binary operators generate Datum operator. If Datum are of equal type result type is equal, else result type is Double.

 datum_lift2 (+) (+) (Float 1) (Float 2) == Float 3
 datum_lift2 (*) (*) (Int 3) (Float 4) == Double 12

datum_lift2' :: F_Binop -> Datum -> Datum -> DatumSource

A datum_promote variant of datum_lift2.

 datum_lift2' (+) (Float 1) (Float 2) == Double 3

at_d1 :: (Int -> a) -> (Double -> a) -> Datum -> aSource

Direct unary Int and Double functions at Datum fields, or error.

 at_d1 show show (Int 5) == "5"

at_d2 :: (Int -> Int -> a) -> (Double -> Double -> a) -> Datum -> Datum -> aSource

Direct binary Int and Double functions at Datum fields, or error.

at_d3 :: (Int -> Int -> Int -> a) -> (Double -> Double -> Double -> a) -> Datum -> Datum -> Datum -> aSource

Direct ternary Int and Double functions at Datum fields, or error.