{-# LANGUAGE OverloadedStrings #-} module Funcons.Core.Values.Primitive.IntegersBuiltin where import Funcons.EDSL hiding (integers_) import qualified Funcons.Operations as VAL import Funcons.Core.Values.Primitive.BoolBuiltin library = libFromList [ ("integer-add", fromValOp integer_add_ VAL.integer_add_) , ("int-add", fromValOp integer_add_ VAL.integer_add_) , ("int-mul", fromValOp integer_multiply_ VAL.integer_multiply_) , ("integer-multiply", fromValOp integer_multiply_ VAL.integer_multiply_) , ("integer-divide", fromValOp integer_divide_ VAL.integer_divide_) , ("int-div", fromValOp integer_divide_ VAL.integer_divide_) , ("integer-subtract", fromValOp integer_subtract_ VAL.integer_subtract_) , ("integer-sub", fromValOp integer_subtract_ VAL.integer_subtract_) , ("integer-power", fromValOp integer_power_ VAL.integer_power_) , ("int-pow", fromValOp integer_power_ VAL.integer_power_) , ("integer-list", fromValOp integer_list_ VAL.integer_list_) , ("integer-modulo", fromValOp integer_modulo_ VAL.integer_modulo_) , ("int-mod", fromValOp integer_modulo_ VAL.integer_modulo_) , ("integer-absolute-value", fromValOp integer_absolute_value_ VAL.integer_absolute_value_) , ("integer-abs", fromValOp integer_absolute_value_ VAL.integer_absolute_value_) , ("decimal-natural", fromValOp decimal_natural_ VAL.decimal_natural_) , ("decimal", fromValOp decimal_natural_ VAL.decimal_natural_) , ("hexadecimal-natural", fromValOp hexadecimal_natural_ VAL.hexadecimal_natural_) , ("hexadecimal", fromValOp hexadecimal_natural_ VAL.hexadecimal_natural_) , ("octal-natural", fromValOp octal_natural_ VAL.octal_natural_) , ("octal", fromValOp octal_natural_ VAL.octal_natural_) , ("binary-natural", fromValOp binary_natural_ VAL.binary_natural_) , ("binary", fromValOp binary_natural_ VAL.binary_natural_) , ("natural-predecessor", fromValOp natural_predecessor_ VAL.natural_predecessor_) , ("nat-pred", fromValOp natural_predecessor_ VAL.natural_predecessor_) , ("natural-successor", fromValOp natural_successor_ VAL.natural_successor_) , ("nat-succ", fromValOp natural_successor_ VAL.natural_successor_) , ("integer-is-less", fromValOp is_less_ VAL.is_less_) , ("is-less", fromValOp is_less_ VAL.is_less_) , ("integer-is-greater", fromValOp is_greater_ VAL.is_greater_) , ("is-greater", fromValOp is_greater_ VAL.is_greater_) , ("integer-is-greater-or-equal", fromValOp is_greater_or_equal_ VAL.is_greater_or_equal_) , ("is-greater-or-equal", fromValOp is_greater_or_equal_ VAL.is_greater_or_equal_) , ("integer-is-less-or-equal", fromValOp is_less_or_equal_ VAL.is_less_or_equal_) , ("is-less-or-equal", fromValOp is_less_or_equal_ VAL.is_less_or_equal_) , ("integers", fromNullaryValOp integers_ VAL.integers_) , ("ints", fromNullaryValOp integers_ VAL.integers_) , ("integers-from", fromValOp integers_from_ VAL.integers_from_) , ("from", fromValOp integers_from_ VAL.integers_from_) , ("integers-up-to", fromValOp integers_up_to_ VAL.integers_up_to_) , ("up-to", fromValOp integers_up_to_ VAL.integers_up_to_) ] ints_ = integers_ integers_ = applyFuncon "integers" integers_from_ = applyFuncon "integers-from" from_ = applyFuncon "from" integers_up_to_ = applyFuncon "integers-up-to" up_to_ = applyFuncon "up-to" natural_predecessor_, nat_pred_ :: [Funcons] -> Funcons natural_predecessor_ = applyFuncon "natural-predecessor" nat_pred_ = applyFuncon "nat-pred" natural_successor_, nat_succ_ :: [Funcons] -> Funcons natural_successor_ = applyFuncon "natural-successor" nat_succ_ = applyFuncon "nat-succ" int_add_ = FApp "integer-add" integer_add_ = FApp "integer-add" integer_multiply_ = FApp "integer-multiply" integer_divide_ = FApp "integer-divide" integer_subtract_ = applyFuncon "integer-subtract" integer_power_ = applyFuncon "integer-power" integer_power_op vx = sortErr (applyFuncon "integer-power" (fvalues vx)) "integer-power not applied to two integers" integer_list_ = applyFuncon "integer-list" integer_modulo_ = applyFuncon "integer-modulo" int_mod_ = applyFuncon "int-mod" integer_mod_ = applyFuncon "integer-modulo" integer_absolute_value_ = applyFuncon "integer-absolute-value" decimal_natural_ = FApp "decimal-natural" decimal_ = FApp "decimal" octal_natural_ = FApp "octal-natural" octal_ = FApp "octal" binary_natural_ = FApp "binary-natural" binary_ = FApp "binary" hexadecimal_natural_ = FApp "hexadecimal-natural" hexadecimal_ = FApp "hexadecimal" is_less_ = applyFuncon "is-less" integer_is_less_ = applyFuncon "is-less" is_less_or_equal_ = FApp "is-less-or-equal" integer_is_less_or_equal_ = FApp "is-less-or-equal" is_greater_ = FApp "is-greater" integer_is_greater_ = FApp "is-greater" is_greater_or_equal_ = FApp "is-greater-or-equal" integer_is_greater_or_equal_ = FApp "is-greater-or-equal"