packages feed

hydra-0.1.0: src/main/haskell/Hydra/Impl/Haskell/Sources/CoreLang.hs

{-# LANGUAGE OverloadedStrings #-}

module Hydra.Impl.Haskell.Sources.CoreLang where

import Hydra.All
import Hydra.Compute
import Hydra.Impl.Haskell.Dsl.Base as Base
import qualified Hydra.Impl.Haskell.Dsl.Terms as Terms
import qualified Hydra.Impl.Haskell.Dsl.Types as Types
import qualified Hydra.Impl.Haskell.Dsl.Standard as Standard
import Hydra.Impl.Haskell.Sources.Basics

import qualified Data.Set as S


coreLanguageNs = Namespace "hydra/coreLang"

cl :: String -> Datum a -> Definition a
cl = Definition . fromQname coreLanguageNs

coreLangModule :: Module Meta
coreLangModule = Module coreLanguageNs elements [hydraBasicsModule] Nothing
  where
    elements = [
--      el defHydraCoreLanguage
      ]


----defHydraCoreLanguage :: Definition [Language]
--defHydraCoreLanguage :: Definition [LanguageConstraints m]
--defHydraCoreLanguage = cl "hydraCoreLanguage" $
--  doc "The trivial language of hydra/core, which admits all types and terms" $
----  nominal _Language $ ... [
----  lambda "m" $ record _LanguageConstraints [
--  record _LanguageConstraints [
--    "eliminationVariants">: set S.empty]

--ref eliminationVariantsSource


--hydraCoreLanguage :: Language m
--hydraCoreLanguage = Language (LanguageName "hydra/core") $ LanguageConstraints {
--  languageConstraintsEliminationVariants = S.fromList eliminationVariants,
--  languageConstraintsLiteralVariants = S.fromList literalVariants,
--  languageConstraintsFloatTypes = S.fromList floatTypes,
--  languageConstraintsFunctionVariants = S.fromList functionVariants,
--  languageConstraintsIntegerTypes = S.fromList integerTypes,
--  languageConstraintsTermVariants = S.fromList termVariants,
--  languageConstraintsTypeVariants = S.fromList typeVariants,
--  languageConstraintsTypes = const True }