-- This is written in Haskell. {-- HScheme -- a Scheme interpreter written in Haskell Copyright (C) 2002 Ashley Yakeley This file is part of HScheme. HScheme is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. HScheme is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with HScheme; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --} module Language.HScheme.Bind ( module Language.HScheme.Bind.Add, module Language.HScheme.Bind.Macro, module Language.HScheme.Bind.TopLevel, module Language.HScheme.Bind.Run, module Language.HScheme.Bind.FMapBindings, module Language.HScheme.Bind ) where { import Language.HScheme.Bind.FMapBindings; import Language.HScheme.Bind.Run; import Language.HScheme.Bind.TopLevel; import Language.HScheme.Bind.Macro; import Language.HScheme.Bind.Add; import Language.HScheme.Interpret; import Language.HScheme.Core; import HBase; mutualBind :: ((?syntacticbindings :: SymbolBindings syntax) => MacroBindings cm r obj m) -> ((?syntacticbindings :: SymbolBindings syntax) => TopLevelBindings cm r obj m) -> ((?syntacticbindings :: SymbolBindings syntax, ?macrobindings :: Symbol -> Maybe (Macro cm r obj m), ?toplevelbindings :: Symbol -> Maybe (TopLevelMacro cm r obj m)) => a) -> a; mutualBind macroBinds tlBinds a = let { ?syntacticbindings = emptyBindings; } in let { mb = let {?macrobindings = mb;?toplevelbindings = tlb} in getBinding (macroBinds emptyBindings); tlb = let {?macrobindings = mb;?toplevelbindings = tlb} in getBinding (tlBinds emptyBindings); } in let { ?macrobindings = mb; ?toplevelbindings = tlb; } in a; }