Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module provides template-haskell functions for various Haspara definitions.
Synopsis
- quantityTH :: KnownNat s => Scientific -> Code Q (Quantity s)
- currencyTH :: Text -> Code Q Currency
- currencyPairTH :: Text -> Text -> Code Q CurrencyPair
Documentation
quantityTH :: KnownNat s => Scientific -> Code Q (Quantity s) Source #
Constructs a Quantity
value at compile-time using -XTemplateHaskell
.
>>>
:set -XDataKinds
>>>
:set -XOverloadedStrings
>>>
:set -XTemplateHaskell
>>>
$$(quantityTH 0.00) :: Quantity 2
0.00>>>
$$(quantityTH 0.09) :: Quantity 2
0.09>>>
$$(quantityTH 0.009) :: Quantity 2
... ..."Underflow while trying to create quantity: 9.0e-3" ...>>>
$$(quantityTH 0.009) :: Quantity 3
0.009
currencyTH :: Text -> Code Q Currency Source #
Constructs a Currency
value at compile-time using -XTemplateHaskell
.
>>>
:set -XOverloadedStrings
>>>
:set -XTemplateHaskell
>>>
$$(currencyTH "USD")
USD>>>
$$(currencyTH "usd")
... ...Currency code error! Expecting at least 3 uppercase ASCII letters, but received: usd ...
currencyPairTH :: Text -> Text -> Code Q CurrencyPair Source #
Constructs a CurrencyPair
value at compile-time using -XTemplateHaskell
.
>>>
:set -XOverloadedStrings
>>>
:set -XTemplateHaskell
>>>
$$(currencyPairTH "EUR" "USD")
EUR/USD>>>
$$(currencyPairTH "USD" "USD")
USD/USD>>>
$$(currencyPairTH "USD" "eur")
... ... Currency code error! Expecting at least 3 uppercase ASCII letters, but received: eur ...