aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Reducer.hs
blob: f71605a5d478988e5dc6fb53a49912a65b1a0cd9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-- MIT License, Copyright (c) 2024 Marvin Borner
module Reducer
  ( reduce
  , reduceNoIO
  ) where

import           Config
import           Helper
import qualified Reducer.HigherOrder           as HigherOrder
import qualified Reducer.ION                   as ION
import qualified Reducer.RKNL                  as RKNL

reduce :: EvalConf -> Expression -> IO Expression
reduce conf e = case _reducer conf of
  "RKNL"        -> RKNL.reduce e
  "ION"         -> pure $ ION.reduce e
  "HigherOrder" -> pure $ HigherOrder.reduce e
  _             -> error "Invalid reducer"

reduceNoIO :: Expression -> Expression
reduceNoIO = HigherOrder.reduce