packages feed

hakaru-0.7.0: commands/Momiji.hs

{-# LANGUAGE OverloadedStrings, DataKinds, GADTs #-}

module Main where

import qualified Language.Hakaru.Pretty.Maple as Maple
import           Language.Hakaru.Syntax.AST.Transforms
import           Language.Hakaru.Syntax.TypeCheck
import           Language.Hakaru.Command

import           Data.Text
import qualified Data.Text.Utf8 as U

import           System.IO (stderr)

main :: IO ()
main = simpleCommand runPretty "momiji"

runPretty :: Text -> IO ()
runPretty prog =
    case parseAndInfer prog of
    Left  err              -> U.hPut stderr err
    Right (TypedAST typ ast) -> do
      U.putStrLnS $ Maple.pretty (expandTransformations ast)
      U.putStrLn  $ ","
      U.putStrLnS $ Maple.mapleType typ ""