{-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Strict #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE ViewPatterns #-} module Backend.Sys where import Control.Monad.Except import Control.Parallel import Environment import Core.Primitives as Primitives import Backend.Utils import Core.Types import Core.Utils import Wrap import Backend.Toplevel import Backend.Core {- Copyright (c) 2015, Mark Tarver All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of Mark Tarver may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY Mark Tarver ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Mark Tarver BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -} kl_thaw :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_thaw (!kl_V2632) = do applyWrapper kl_V2632 [] kl_eval :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_eval (!kl_V2634) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Macroexpand) -> do !kl_if_1 <- kl_Macroexpand `pseq` kl_shen_packagedP kl_Macroexpand case kl_if_1 of Atom (B (True)) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do kl_Z `pseq` kl_shen_eval_without_macros kl_Z))) !appl_3 <- kl_Macroexpand `pseq` kl_shen_package_contents kl_Macroexpand appl_2 `pseq` (appl_3 `pseq` kl_map appl_2 appl_3) Atom (B (False)) -> do do kl_Macroexpand `pseq` kl_shen_eval_without_macros kl_Macroexpand _ -> throwError "if: expected boolean"))) let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Y) -> do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "macroexpand") kl_Y `pseq` applyWrapper aw_5 [kl_Y]))) !appl_6 <- appl_4 `pseq` (kl_V2634 `pseq` kl_shen_walk appl_4 kl_V2634) appl_6 `pseq` applyWrapper appl_0 [appl_6] kl_shen_eval_without_macros :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_eval_without_macros (!kl_V2636) = do !appl_0 <- kl_V2636 `pseq` kl_shen_proc_inputPlus kl_V2636 !appl_1 <- appl_0 `pseq` kl_shen_elim_def appl_0 appl_1 `pseq` evalKL appl_1 kl_shen_proc_inputPlus :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_proc_inputPlus (!kl_V2638) = do !kl_if_0 <- let pat_cond_1 kl_V2638 kl_V2638h kl_V2638t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V2638t kl_V2638th kl_V2638tt = do !kl_if_6 <- let pat_cond_7 kl_V2638tt kl_V2638tth kl_V2638ttt = do let !appl_8 = Atom Nil !kl_if_9 <- appl_8 `pseq` (kl_V2638ttt `pseq` eq appl_8 kl_V2638ttt) case kl_if_9 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_10 = do do return (Atom (B False)) in case kl_V2638tt of !(kl_V2638tt@(Cons (!kl_V2638tth) (!kl_V2638ttt))) -> pat_cond_7 kl_V2638tt kl_V2638tth kl_V2638ttt _ -> pat_cond_10 case kl_if_6 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_11 = do do return (Atom (B False)) in case kl_V2638t of !(kl_V2638t@(Cons (!kl_V2638th) (!kl_V2638tt))) -> pat_cond_5 kl_V2638t kl_V2638th kl_V2638tt _ -> pat_cond_11 case kl_if_4 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_12 = do do return (Atom (B False)) in case kl_V2638h of kl_V2638h@(Atom (UnboundSym "input+")) -> pat_cond_3 kl_V2638h@(ApplC (PL "input+" _)) -> pat_cond_3 kl_V2638h@(ApplC (Func "input+" _)) -> pat_cond_3 _ -> pat_cond_12 case kl_if_2 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_13 = do do return (Atom (B False)) in case kl_V2638 of !(kl_V2638@(Cons (!kl_V2638h) (!kl_V2638t))) -> pat_cond_1 kl_V2638 kl_V2638h kl_V2638t _ -> pat_cond_13 case kl_if_0 of Atom (B (True)) -> do !appl_14 <- kl_V2638 `pseq` tl kl_V2638 !appl_15 <- appl_14 `pseq` hd appl_14 let !aw_16 = Core.Types.Atom (Core.Types.UnboundSym "shen.rcons_form") !appl_17 <- appl_15 `pseq` applyWrapper aw_16 [appl_15] !appl_18 <- kl_V2638 `pseq` tl kl_V2638 !appl_19 <- appl_18 `pseq` tl appl_18 !appl_20 <- appl_17 `pseq` (appl_19 `pseq` klCons appl_17 appl_19) appl_20 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "input+")) appl_20 Atom (B (False)) -> do !kl_if_21 <- let pat_cond_22 kl_V2638 kl_V2638h kl_V2638t = do !kl_if_23 <- let pat_cond_24 = do !kl_if_25 <- let pat_cond_26 kl_V2638t kl_V2638th kl_V2638tt = do !kl_if_27 <- let pat_cond_28 kl_V2638tt kl_V2638tth kl_V2638ttt = do let !appl_29 = Atom Nil !kl_if_30 <- appl_29 `pseq` (kl_V2638ttt `pseq` eq appl_29 kl_V2638ttt) case kl_if_30 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_31 = do do return (Atom (B False)) in case kl_V2638tt of !(kl_V2638tt@(Cons (!kl_V2638tth) (!kl_V2638ttt))) -> pat_cond_28 kl_V2638tt kl_V2638tth kl_V2638ttt _ -> pat_cond_31 case kl_if_27 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_32 = do do return (Atom (B False)) in case kl_V2638t of !(kl_V2638t@(Cons (!kl_V2638th) (!kl_V2638tt))) -> pat_cond_26 kl_V2638t kl_V2638th kl_V2638tt _ -> pat_cond_32 case kl_if_25 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_33 = do do return (Atom (B False)) in case kl_V2638h of kl_V2638h@(Atom (UnboundSym "shen.read+")) -> pat_cond_24 kl_V2638h@(ApplC (PL "shen.read+" _)) -> pat_cond_24 kl_V2638h@(ApplC (Func "shen.read+" _)) -> pat_cond_24 _ -> pat_cond_33 case kl_if_23 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_34 = do do return (Atom (B False)) in case kl_V2638 of !(kl_V2638@(Cons (!kl_V2638h) (!kl_V2638t))) -> pat_cond_22 kl_V2638 kl_V2638h kl_V2638t _ -> pat_cond_34 case kl_if_21 of Atom (B (True)) -> do !appl_35 <- kl_V2638 `pseq` tl kl_V2638 !appl_36 <- appl_35 `pseq` hd appl_35 let !aw_37 = Core.Types.Atom (Core.Types.UnboundSym "shen.rcons_form") !appl_38 <- appl_36 `pseq` applyWrapper aw_37 [appl_36] !appl_39 <- kl_V2638 `pseq` tl kl_V2638 !appl_40 <- appl_39 `pseq` tl appl_39 !appl_41 <- appl_38 `pseq` (appl_40 `pseq` klCons appl_38 appl_40) appl_41 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.read+")) appl_41 Atom (B (False)) -> do let pat_cond_42 kl_V2638 kl_V2638h kl_V2638t = do let !appl_43 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do kl_Z `pseq` kl_shen_proc_inputPlus kl_Z))) appl_43 `pseq` (kl_V2638 `pseq` kl_map appl_43 kl_V2638) pat_cond_44 = do do return kl_V2638 in case kl_V2638 of !(kl_V2638@(Cons (!kl_V2638h) (!kl_V2638t))) -> pat_cond_42 kl_V2638 kl_V2638h kl_V2638t _ -> pat_cond_44 _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" kl_shen_elim_def :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_elim_def (!kl_V2640) = do let pat_cond_0 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt = do kl_V2640th `pseq` (kl_V2640tt `pseq` kl_shen_RBkl kl_V2640th kl_V2640tt) pat_cond_1 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt = do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Default) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Def) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_MacroAdd) -> do return kl_Def))) !appl_5 <- kl_V2640th `pseq` kl_shen_add_macro kl_V2640th appl_5 `pseq` applyWrapper appl_4 [appl_5]))) !appl_6 <- kl_V2640tt `pseq` (kl_Default `pseq` kl_append kl_V2640tt kl_Default) !appl_7 <- kl_V2640th `pseq` (appl_6 `pseq` klCons kl_V2640th appl_6) !appl_8 <- appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "define")) appl_7 !appl_9 <- appl_8 `pseq` kl_shen_elim_def appl_8 appl_9 `pseq` applyWrapper appl_3 [appl_9]))) let !appl_10 = Atom Nil !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "X")) appl_10 !appl_12 <- appl_11 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "->")) appl_11 !appl_13 <- appl_12 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "X")) appl_12 appl_13 `pseq` applyWrapper appl_2 [appl_13] pat_cond_14 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt = do let !aw_15 = Core.Types.Atom (Core.Types.UnboundSym "shen.yacc") !appl_16 <- kl_V2640 `pseq` applyWrapper aw_15 [kl_V2640] appl_16 `pseq` kl_shen_elim_def appl_16 pat_cond_17 kl_V2640 kl_V2640h kl_V2640t = do let !appl_18 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do kl_Z `pseq` kl_shen_elim_def kl_Z))) appl_18 `pseq` (kl_V2640 `pseq` kl_map appl_18 kl_V2640) pat_cond_19 = do do return kl_V2640 in case kl_V2640 of !(kl_V2640@(Cons (Atom (UnboundSym "define")) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_0 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (ApplC (PL "define" _)) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_0 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (ApplC (Func "define" _)) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_0 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (Atom (UnboundSym "defmacro")) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_1 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (ApplC (PL "defmacro" _)) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_1 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (ApplC (Func "defmacro" _)) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_1 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (Atom (UnboundSym "defcc")) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_14 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (ApplC (PL "defcc" _)) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_14 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (ApplC (Func "defcc" _)) (!(kl_V2640t@(Cons (!kl_V2640th) (!kl_V2640tt)))))) -> pat_cond_14 kl_V2640 kl_V2640t kl_V2640th kl_V2640tt !(kl_V2640@(Cons (!kl_V2640h) (!kl_V2640t))) -> pat_cond_17 kl_V2640 kl_V2640h kl_V2640t _ -> pat_cond_19 kl_shen_add_macro :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_add_macro (!kl_V2642) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_MacroReg) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_NewMacroReg) -> do !kl_if_2 <- kl_MacroReg `pseq` (kl_NewMacroReg `pseq` eq kl_MacroReg kl_NewMacroReg) case kl_if_2 of Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.UnboundSym "shen.skip")) Atom (B (False)) -> do do !appl_3 <- kl_V2642 `pseq` kl_function kl_V2642 !appl_4 <- value (Core.Types.Atom (Core.Types.UnboundSym "*macros*")) !appl_5 <- appl_3 `pseq` (appl_4 `pseq` klCons appl_3 appl_4) appl_5 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "*macros*")) appl_5 _ -> throwError "if: expected boolean"))) !appl_6 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*macroreg*")) let !aw_7 = Core.Types.Atom (Core.Types.UnboundSym "adjoin") !appl_8 <- kl_V2642 `pseq` (appl_6 `pseq` applyWrapper aw_7 [kl_V2642, appl_6]) !appl_9 <- appl_8 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*macroreg*")) appl_8 appl_9 `pseq` applyWrapper appl_1 [appl_9]))) !appl_10 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*macroreg*")) appl_10 `pseq` applyWrapper appl_0 [appl_10] kl_shen_packagedP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_packagedP (!kl_V2650) = do let pat_cond_0 kl_V2650 kl_V2650t kl_V2650th kl_V2650tt kl_V2650tth kl_V2650ttt = do return (Atom (B True)) pat_cond_1 = do do return (Atom (B False)) in case kl_V2650 of !(kl_V2650@(Cons (Atom (UnboundSym "package")) (!(kl_V2650t@(Cons (!kl_V2650th) (!(kl_V2650tt@(Cons (!kl_V2650tth) (!kl_V2650ttt))))))))) -> pat_cond_0 kl_V2650 kl_V2650t kl_V2650th kl_V2650tt kl_V2650tth kl_V2650ttt !(kl_V2650@(Cons (ApplC (PL "package" _)) (!(kl_V2650t@(Cons (!kl_V2650th) (!(kl_V2650tt@(Cons (!kl_V2650tth) (!kl_V2650ttt))))))))) -> pat_cond_0 kl_V2650 kl_V2650t kl_V2650th kl_V2650tt kl_V2650tth kl_V2650ttt !(kl_V2650@(Cons (ApplC (Func "package" _)) (!(kl_V2650t@(Cons (!kl_V2650th) (!(kl_V2650tt@(Cons (!kl_V2650tth) (!kl_V2650ttt))))))))) -> pat_cond_0 kl_V2650 kl_V2650t kl_V2650th kl_V2650tt kl_V2650tth kl_V2650ttt _ -> pat_cond_1 kl_external :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_external (!kl_V2652) = do let !appl_0 = ApplC (PL "thunk" (do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_2 <- kl_V2652 `pseq` applyWrapper aw_1 [kl_V2652, Core.Types.Atom (Core.Types.Str " has not been used.\n"), Core.Types.Atom (Core.Types.UnboundSym "shen.a")] !appl_3 <- appl_2 `pseq` cn (Core.Types.Atom (Core.Types.Str "package ")) appl_2 appl_3 `pseq` simpleError appl_3)) !appl_4 <- value (Core.Types.Atom (Core.Types.UnboundSym "*property-vector*")) kl_V2652 `pseq` (appl_0 `pseq` (appl_4 `pseq` kl_getDivor kl_V2652 (Core.Types.Atom (Core.Types.UnboundSym "shen.external-symbols")) appl_0 appl_4)) kl_internal :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_internal (!kl_V2654) = do let !appl_0 = ApplC (PL "thunk" (do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_2 <- kl_V2654 `pseq` applyWrapper aw_1 [kl_V2654, Core.Types.Atom (Core.Types.Str " has not been used.\n"), Core.Types.Atom (Core.Types.UnboundSym "shen.a")] !appl_3 <- appl_2 `pseq` cn (Core.Types.Atom (Core.Types.Str "package ")) appl_2 appl_3 `pseq` simpleError appl_3)) !appl_4 <- value (Core.Types.Atom (Core.Types.UnboundSym "*property-vector*")) kl_V2654 `pseq` (appl_0 `pseq` (appl_4 `pseq` kl_getDivor kl_V2654 (Core.Types.Atom (Core.Types.UnboundSym "shen.internal-symbols")) appl_0 appl_4)) kl_shen_package_contents :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_package_contents (!kl_V2658) = do let pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt = do return kl_V2658ttt pat_cond_1 kl_V2658 kl_V2658t kl_V2658th kl_V2658tt kl_V2658tth kl_V2658ttt = do let !aw_2 = Core.Types.Atom (Core.Types.UnboundSym "shen.packageh") kl_V2658th `pseq` (kl_V2658tth `pseq` (kl_V2658ttt `pseq` applyWrapper aw_2 [kl_V2658th, kl_V2658tth, kl_V2658ttt])) pat_cond_3 = do do let !aw_4 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_4 [ApplC (wrapNamed "shen.package-contents" kl_shen_package_contents)] in case kl_V2658 of !(kl_V2658@(Cons (Atom (UnboundSym "package")) (!(kl_V2658t@(Cons (Atom (UnboundSym "null")) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (Atom (UnboundSym "package")) (!(kl_V2658t@(Cons (ApplC (PL "null" _)) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (Atom (UnboundSym "package")) (!(kl_V2658t@(Cons (ApplC (Func "null" _)) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (PL "package" _)) (!(kl_V2658t@(Cons (Atom (UnboundSym "null")) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (PL "package" _)) (!(kl_V2658t@(Cons (ApplC (PL "null" _)) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (PL "package" _)) (!(kl_V2658t@(Cons (ApplC (Func "null" _)) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (Func "package" _)) (!(kl_V2658t@(Cons (Atom (UnboundSym "null")) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (Func "package" _)) (!(kl_V2658t@(Cons (ApplC (PL "null" _)) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (Func "package" _)) (!(kl_V2658t@(Cons (ApplC (Func "null" _)) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_0 kl_V2658 kl_V2658t kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (Atom (UnboundSym "package")) (!(kl_V2658t@(Cons (!kl_V2658th) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_1 kl_V2658 kl_V2658t kl_V2658th kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (PL "package" _)) (!(kl_V2658t@(Cons (!kl_V2658th) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_1 kl_V2658 kl_V2658t kl_V2658th kl_V2658tt kl_V2658tth kl_V2658ttt !(kl_V2658@(Cons (ApplC (Func "package" _)) (!(kl_V2658t@(Cons (!kl_V2658th) (!(kl_V2658tt@(Cons (!kl_V2658tth) (!kl_V2658ttt))))))))) -> pat_cond_1 kl_V2658 kl_V2658t kl_V2658th kl_V2658tt kl_V2658tth kl_V2658ttt _ -> pat_cond_3 kl_shen_walk :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_walk (!kl_V2661) (!kl_V2662) = do let pat_cond_0 kl_V2662 kl_V2662h kl_V2662t = do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do kl_V2661 `pseq` (kl_Z `pseq` kl_shen_walk kl_V2661 kl_Z)))) !appl_2 <- appl_1 `pseq` (kl_V2662 `pseq` kl_map appl_1 kl_V2662) appl_2 `pseq` applyWrapper kl_V2661 [appl_2] pat_cond_3 = do do kl_V2662 `pseq` applyWrapper kl_V2661 [kl_V2662] in case kl_V2662 of !(kl_V2662@(Cons (!kl_V2662h) (!kl_V2662t))) -> pat_cond_0 kl_V2662 kl_V2662h kl_V2662t _ -> pat_cond_3 kl_compile :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_compile (!kl_V2666) (!kl_V2667) (!kl_V2668) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_O) -> do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "fail") !appl_2 <- applyWrapper aw_1 [] !kl_if_3 <- appl_2 `pseq` (kl_O `pseq` eq appl_2 kl_O) !kl_if_4 <- case kl_if_3 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do !appl_5 <- kl_O `pseq` hd kl_O !appl_6 <- appl_5 `pseq` kl_emptyP appl_5 !kl_if_7 <- appl_6 `pseq` kl_not appl_6 case kl_if_7 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" case kl_if_4 of Atom (B (True)) -> do kl_O `pseq` applyWrapper kl_V2668 [kl_O] Atom (B (False)) -> do do let !aw_8 = Core.Types.Atom (Core.Types.UnboundSym "shen.hdtl") kl_O `pseq` applyWrapper aw_8 [kl_O] _ -> throwError "if: expected boolean"))) let !appl_9 = Atom Nil let !appl_10 = Atom Nil !appl_11 <- appl_9 `pseq` (appl_10 `pseq` klCons appl_9 appl_10) !appl_12 <- kl_V2667 `pseq` (appl_11 `pseq` klCons kl_V2667 appl_11) !appl_13 <- appl_12 `pseq` applyWrapper kl_V2666 [appl_12] appl_13 `pseq` applyWrapper appl_0 [appl_13] kl_fail_if :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_fail_if (!kl_V2671) (!kl_V2672) = do !kl_if_0 <- kl_V2672 `pseq` applyWrapper kl_V2671 [kl_V2672] case kl_if_0 of Atom (B (True)) -> do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "fail") applyWrapper aw_1 [] Atom (B (False)) -> do do return kl_V2672 _ -> throwError "if: expected boolean" kl_Ats :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_Ats (!kl_V2675) (!kl_V2676) = do kl_V2675 `pseq` (kl_V2676 `pseq` cn kl_V2675 kl_V2676) kl_tcP :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_tcP = do value (Core.Types.Atom (Core.Types.UnboundSym "shen.*tc*")) kl_ps :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_ps (!kl_V2678) = do let !appl_0 = ApplC (PL "thunk" (do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_2 <- kl_V2678 `pseq` applyWrapper aw_1 [kl_V2678, Core.Types.Atom (Core.Types.Str " not found.\n"), Core.Types.Atom (Core.Types.UnboundSym "shen.a")] appl_2 `pseq` simpleError appl_2)) !appl_3 <- value (Core.Types.Atom (Core.Types.UnboundSym "*property-vector*")) kl_V2678 `pseq` (appl_0 `pseq` (appl_3 `pseq` kl_getDivor kl_V2678 (Core.Types.Atom (Core.Types.UnboundSym "shen.source")) appl_0 appl_3)) kl_stinput :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_stinput = do value (Core.Types.Atom (Core.Types.UnboundSym "*stinput*")) kl_LB_addressDivor :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_LB_addressDivor (!kl_V2682) (!kl_V2683) (!kl_V2684) = do (do kl_V2682 `pseq` (kl_V2683 `pseq` addressFrom kl_V2682 kl_V2683)) `catchError` (\(!kl_E) -> do kl_V2684 `pseq` kl_thaw kl_V2684) kl_valueDivor :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_valueDivor (!kl_V2687) (!kl_V2688) = do (do kl_V2687 `pseq` value kl_V2687) `catchError` (\(!kl_E) -> do kl_V2688 `pseq` kl_thaw kl_V2688) kl_vector :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_vector (!kl_V2690) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_ZeroStamp) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Standard) -> do return kl_Standard))) !appl_3 <- let pat_cond_4 = do return kl_ZeroStamp pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "fail") !appl_7 <- applyWrapper aw_6 [] kl_ZeroStamp `pseq` (kl_V2690 `pseq` (appl_7 `pseq` kl_shen_fillvector kl_ZeroStamp (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2690 appl_7)) in case kl_V2690 of kl_V2690@(Atom (N (KI 0))) -> pat_cond_4 _ -> pat_cond_5 appl_3 `pseq` applyWrapper appl_2 [appl_3]))) !appl_8 <- kl_Vector `pseq` (kl_V2690 `pseq` addressTo kl_Vector (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_V2690) appl_8 `pseq` applyWrapper appl_1 [appl_8]))) !appl_9 <- kl_V2690 `pseq` add kl_V2690 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_10 <- appl_9 `pseq` absvector appl_9 appl_10 `pseq` applyWrapper appl_0 [appl_10] kl_shen_fillvector :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_fillvector (!kl_V2696) (!kl_V2697) (!kl_V2698) (!kl_V2699) = do !kl_if_0 <- kl_V2698 `pseq` (kl_V2697 `pseq` eq kl_V2698 kl_V2697) case kl_if_0 of Atom (B (True)) -> do kl_V2696 `pseq` (kl_V2698 `pseq` (kl_V2699 `pseq` addressTo kl_V2696 kl_V2698 kl_V2699)) Atom (B (False)) -> do do !appl_1 <- kl_V2696 `pseq` (kl_V2697 `pseq` (kl_V2699 `pseq` addressTo kl_V2696 kl_V2697 kl_V2699)) !appl_2 <- kl_V2697 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2697 appl_1 `pseq` (appl_2 `pseq` (kl_V2698 `pseq` (kl_V2699 `pseq` kl_shen_fillvector appl_1 appl_2 kl_V2698 kl_V2699))) _ -> throwError "if: expected boolean" kl_vectorP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_vectorP (!kl_V2701) = do !kl_if_0 <- kl_V2701 `pseq` absvectorP kl_V2701 case kl_if_0 of Atom (B (True)) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_X) -> do !kl_if_2 <- kl_X `pseq` numberP kl_X case kl_if_2 of Atom (B (True)) -> do !kl_if_3 <- kl_X `pseq` greaterThanOrEqualTo kl_X (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) case kl_if_3 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean"))) let !appl_4 = ApplC (PL "thunk" (do return (Core.Types.Atom (Core.Types.N (Core.Types.KI (-1)))))) !appl_5 <- kl_V2701 `pseq` (appl_4 `pseq` kl_LB_addressDivor kl_V2701 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) appl_4) !kl_if_6 <- appl_5 `pseq` applyWrapper appl_1 [appl_5] case kl_if_6 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_vector_RB :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_vector_RB (!kl_V2705) (!kl_V2706) (!kl_V2707) = do let pat_cond_0 = do simpleError (Core.Types.Atom (Core.Types.Str "cannot access 0th element of a vector\n")) pat_cond_1 = do do kl_V2705 `pseq` (kl_V2706 `pseq` (kl_V2707 `pseq` addressTo kl_V2705 kl_V2706 kl_V2707)) in case kl_V2706 of kl_V2706@(Atom (N (KI 0))) -> pat_cond_0 _ -> pat_cond_1 kl_LB_vector :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_LB_vector (!kl_V2710) (!kl_V2711) = do let pat_cond_0 = do simpleError (Core.Types.Atom (Core.Types.Str "cannot access 0th element of a vector\n")) pat_cond_1 = do do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_VectorElement) -> do let !aw_3 = Core.Types.Atom (Core.Types.UnboundSym "fail") !appl_4 <- applyWrapper aw_3 [] !kl_if_5 <- kl_VectorElement `pseq` (appl_4 `pseq` eq kl_VectorElement appl_4) case kl_if_5 of Atom (B (True)) -> do simpleError (Core.Types.Atom (Core.Types.Str "vector element not found\n")) Atom (B (False)) -> do do return kl_VectorElement _ -> throwError "if: expected boolean"))) !appl_6 <- kl_V2710 `pseq` (kl_V2711 `pseq` addressFrom kl_V2710 kl_V2711) appl_6 `pseq` applyWrapper appl_2 [appl_6] in case kl_V2711 of kl_V2711@(Atom (N (KI 0))) -> pat_cond_0 _ -> pat_cond_1 kl_LB_vectorDivor :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_LB_vectorDivor (!kl_V2715) (!kl_V2716) (!kl_V2717) = do let pat_cond_0 = do simpleError (Core.Types.Atom (Core.Types.Str "cannot access 0th element of a vector\n")) pat_cond_1 = do do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_VectorElement) -> do let !aw_3 = Core.Types.Atom (Core.Types.UnboundSym "fail") !appl_4 <- applyWrapper aw_3 [] !kl_if_5 <- kl_VectorElement `pseq` (appl_4 `pseq` eq kl_VectorElement appl_4) case kl_if_5 of Atom (B (True)) -> do kl_V2717 `pseq` kl_thaw kl_V2717 Atom (B (False)) -> do do return kl_VectorElement _ -> throwError "if: expected boolean"))) !appl_6 <- kl_V2715 `pseq` (kl_V2716 `pseq` (kl_V2717 `pseq` kl_LB_addressDivor kl_V2715 kl_V2716 kl_V2717)) appl_6 `pseq` applyWrapper appl_2 [appl_6] in case kl_V2716 of kl_V2716@(Atom (N (KI 0))) -> pat_cond_0 _ -> pat_cond_1 kl_shen_posintP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_posintP (!kl_V2719) = do !kl_if_0 <- kl_V2719 `pseq` kl_integerP kl_V2719 case kl_if_0 of Atom (B (True)) -> do !kl_if_1 <- kl_V2719 `pseq` greaterThanOrEqualTo kl_V2719 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) case kl_if_1 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_limit :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_limit (!kl_V2721) = do kl_V2721 `pseq` addressFrom kl_V2721 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_symbolP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_symbolP (!kl_V2723) = do !kl_if_0 <- kl_V2723 `pseq` kl_booleanP kl_V2723 !kl_if_1 <- case kl_if_0 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do !kl_if_2 <- kl_V2723 `pseq` numberP kl_V2723 !kl_if_3 <- case kl_if_2 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do !kl_if_4 <- kl_V2723 `pseq` stringP kl_V2723 case kl_if_4 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" case kl_if_3 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" case kl_if_1 of Atom (B (True)) -> do return (Atom (B False)) Atom (B (False)) -> do do (do let !appl_5 = ApplC (Func "lambda" (Context (\(!kl_String) -> do kl_String `pseq` kl_shen_analyse_symbolP kl_String))) !appl_6 <- kl_V2723 `pseq` str kl_V2723 appl_6 `pseq` applyWrapper appl_5 [appl_6]) `catchError` (\(!kl_E) -> do return (Atom (B False))) _ -> throwError "if: expected boolean" kl_shen_analyse_symbolP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_analyse_symbolP (!kl_V2725) = do let pat_cond_0 = do return (Atom (B False)) pat_cond_1 = do !kl_if_2 <- kl_V2725 `pseq` kl_shen_PlusstringP kl_V2725 case kl_if_2 of Atom (B (True)) -> do !appl_3 <- kl_V2725 `pseq` pos kl_V2725 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) !kl_if_4 <- appl_3 `pseq` kl_shen_alphaP appl_3 case kl_if_4 of Atom (B (True)) -> do !appl_5 <- kl_V2725 `pseq` tlstr kl_V2725 !kl_if_6 <- appl_5 `pseq` kl_shen_alphanumsP appl_5 case kl_if_6 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do let !aw_7 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_7 [ApplC (wrapNamed "shen.analyse-symbol?" kl_shen_analyse_symbolP)] _ -> throwError "if: expected boolean" in case kl_V2725 of kl_V2725@(Atom (Str "")) -> pat_cond_0 _ -> pat_cond_1 kl_shen_alphaP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_alphaP (!kl_V2727) = do let !appl_0 = Atom Nil !appl_1 <- appl_0 `pseq` klCons (Core.Types.Atom (Core.Types.Str ".")) appl_0 !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.Str "'")) appl_1 !appl_3 <- appl_2 `pseq` klCons (Core.Types.Atom (Core.Types.Str "#")) appl_2 !appl_4 <- appl_3 `pseq` klCons (Core.Types.Atom (Core.Types.Str "`")) appl_3 !appl_5 <- appl_4 `pseq` klCons (Core.Types.Atom (Core.Types.Str ";")) appl_4 !appl_6 <- appl_5 `pseq` klCons (Core.Types.Atom (Core.Types.Str ":")) appl_5 !appl_7 <- appl_6 `pseq` klCons (Core.Types.Atom (Core.Types.Str "}")) appl_6 !appl_8 <- appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.Str "{")) appl_7 !appl_9 <- appl_8 `pseq` klCons (Core.Types.Atom (Core.Types.Str "%")) appl_8 !appl_10 <- appl_9 `pseq` klCons (Core.Types.Atom (Core.Types.Str "&")) appl_9 !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.Str "<")) appl_10 !appl_12 <- appl_11 `pseq` klCons (Core.Types.Atom (Core.Types.Str ">")) appl_11 !appl_13 <- appl_12 `pseq` klCons (Core.Types.Atom (Core.Types.Str "~")) appl_12 !appl_14 <- appl_13 `pseq` klCons (Core.Types.Atom (Core.Types.Str "@")) appl_13 !appl_15 <- appl_14 `pseq` klCons (Core.Types.Atom (Core.Types.Str "!")) appl_14 !appl_16 <- appl_15 `pseq` klCons (Core.Types.Atom (Core.Types.Str "$")) appl_15 !appl_17 <- appl_16 `pseq` klCons (Core.Types.Atom (Core.Types.Str "?")) appl_16 !appl_18 <- appl_17 `pseq` klCons (Core.Types.Atom (Core.Types.Str "_")) appl_17 !appl_19 <- appl_18 `pseq` klCons (Core.Types.Atom (Core.Types.Str "-")) appl_18 !appl_20 <- appl_19 `pseq` klCons (Core.Types.Atom (Core.Types.Str "+")) appl_19 !appl_21 <- appl_20 `pseq` klCons (Core.Types.Atom (Core.Types.Str "/")) appl_20 !appl_22 <- appl_21 `pseq` klCons (Core.Types.Atom (Core.Types.Str "*")) appl_21 !appl_23 <- appl_22 `pseq` klCons (Core.Types.Atom (Core.Types.Str "=")) appl_22 !appl_24 <- appl_23 `pseq` klCons (Core.Types.Atom (Core.Types.Str "z")) appl_23 !appl_25 <- appl_24 `pseq` klCons (Core.Types.Atom (Core.Types.Str "y")) appl_24 !appl_26 <- appl_25 `pseq` klCons (Core.Types.Atom (Core.Types.Str "x")) appl_25 !appl_27 <- appl_26 `pseq` klCons (Core.Types.Atom (Core.Types.Str "w")) appl_26 !appl_28 <- appl_27 `pseq` klCons (Core.Types.Atom (Core.Types.Str "v")) appl_27 !appl_29 <- appl_28 `pseq` klCons (Core.Types.Atom (Core.Types.Str "u")) appl_28 !appl_30 <- appl_29 `pseq` klCons (Core.Types.Atom (Core.Types.Str "t")) appl_29 !appl_31 <- appl_30 `pseq` klCons (Core.Types.Atom (Core.Types.Str "s")) appl_30 !appl_32 <- appl_31 `pseq` klCons (Core.Types.Atom (Core.Types.Str "r")) appl_31 !appl_33 <- appl_32 `pseq` klCons (Core.Types.Atom (Core.Types.Str "q")) appl_32 !appl_34 <- appl_33 `pseq` klCons (Core.Types.Atom (Core.Types.Str "p")) appl_33 !appl_35 <- appl_34 `pseq` klCons (Core.Types.Atom (Core.Types.Str "o")) appl_34 !appl_36 <- appl_35 `pseq` klCons (Core.Types.Atom (Core.Types.Str "n")) appl_35 !appl_37 <- appl_36 `pseq` klCons (Core.Types.Atom (Core.Types.Str "m")) appl_36 !appl_38 <- appl_37 `pseq` klCons (Core.Types.Atom (Core.Types.Str "l")) appl_37 !appl_39 <- appl_38 `pseq` klCons (Core.Types.Atom (Core.Types.Str "k")) appl_38 !appl_40 <- appl_39 `pseq` klCons (Core.Types.Atom (Core.Types.Str "j")) appl_39 !appl_41 <- appl_40 `pseq` klCons (Core.Types.Atom (Core.Types.Str "i")) appl_40 !appl_42 <- appl_41 `pseq` klCons (Core.Types.Atom (Core.Types.Str "h")) appl_41 !appl_43 <- appl_42 `pseq` klCons (Core.Types.Atom (Core.Types.Str "g")) appl_42 !appl_44 <- appl_43 `pseq` klCons (Core.Types.Atom (Core.Types.Str "f")) appl_43 !appl_45 <- appl_44 `pseq` klCons (Core.Types.Atom (Core.Types.Str "e")) appl_44 !appl_46 <- appl_45 `pseq` klCons (Core.Types.Atom (Core.Types.Str "d")) appl_45 !appl_47 <- appl_46 `pseq` klCons (Core.Types.Atom (Core.Types.Str "c")) appl_46 !appl_48 <- appl_47 `pseq` klCons (Core.Types.Atom (Core.Types.Str "b")) appl_47 !appl_49 <- appl_48 `pseq` klCons (Core.Types.Atom (Core.Types.Str "a")) appl_48 !appl_50 <- appl_49 `pseq` klCons (Core.Types.Atom (Core.Types.Str "Z")) appl_49 !appl_51 <- appl_50 `pseq` klCons (Core.Types.Atom (Core.Types.Str "Y")) appl_50 !appl_52 <- appl_51 `pseq` klCons (Core.Types.Atom (Core.Types.Str "X")) appl_51 !appl_53 <- appl_52 `pseq` klCons (Core.Types.Atom (Core.Types.Str "W")) appl_52 !appl_54 <- appl_53 `pseq` klCons (Core.Types.Atom (Core.Types.Str "V")) appl_53 !appl_55 <- appl_54 `pseq` klCons (Core.Types.Atom (Core.Types.Str "U")) appl_54 !appl_56 <- appl_55 `pseq` klCons (Core.Types.Atom (Core.Types.Str "T")) appl_55 !appl_57 <- appl_56 `pseq` klCons (Core.Types.Atom (Core.Types.Str "S")) appl_56 !appl_58 <- appl_57 `pseq` klCons (Core.Types.Atom (Core.Types.Str "R")) appl_57 !appl_59 <- appl_58 `pseq` klCons (Core.Types.Atom (Core.Types.Str "Q")) appl_58 !appl_60 <- appl_59 `pseq` klCons (Core.Types.Atom (Core.Types.Str "P")) appl_59 !appl_61 <- appl_60 `pseq` klCons (Core.Types.Atom (Core.Types.Str "O")) appl_60 !appl_62 <- appl_61 `pseq` klCons (Core.Types.Atom (Core.Types.Str "N")) appl_61 !appl_63 <- appl_62 `pseq` klCons (Core.Types.Atom (Core.Types.Str "M")) appl_62 !appl_64 <- appl_63 `pseq` klCons (Core.Types.Atom (Core.Types.Str "L")) appl_63 !appl_65 <- appl_64 `pseq` klCons (Core.Types.Atom (Core.Types.Str "K")) appl_64 !appl_66 <- appl_65 `pseq` klCons (Core.Types.Atom (Core.Types.Str "J")) appl_65 !appl_67 <- appl_66 `pseq` klCons (Core.Types.Atom (Core.Types.Str "I")) appl_66 !appl_68 <- appl_67 `pseq` klCons (Core.Types.Atom (Core.Types.Str "H")) appl_67 !appl_69 <- appl_68 `pseq` klCons (Core.Types.Atom (Core.Types.Str "G")) appl_68 !appl_70 <- appl_69 `pseq` klCons (Core.Types.Atom (Core.Types.Str "F")) appl_69 !appl_71 <- appl_70 `pseq` klCons (Core.Types.Atom (Core.Types.Str "E")) appl_70 !appl_72 <- appl_71 `pseq` klCons (Core.Types.Atom (Core.Types.Str "D")) appl_71 !appl_73 <- appl_72 `pseq` klCons (Core.Types.Atom (Core.Types.Str "C")) appl_72 !appl_74 <- appl_73 `pseq` klCons (Core.Types.Atom (Core.Types.Str "B")) appl_73 !appl_75 <- appl_74 `pseq` klCons (Core.Types.Atom (Core.Types.Str "A")) appl_74 kl_V2727 `pseq` (appl_75 `pseq` kl_elementP kl_V2727 appl_75) kl_shen_alphanumsP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_alphanumsP (!kl_V2729) = do let pat_cond_0 = do return (Atom (B True)) pat_cond_1 = do !kl_if_2 <- kl_V2729 `pseq` kl_shen_PlusstringP kl_V2729 case kl_if_2 of Atom (B (True)) -> do !appl_3 <- kl_V2729 `pseq` pos kl_V2729 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) !kl_if_4 <- appl_3 `pseq` kl_shen_alphanumP appl_3 case kl_if_4 of Atom (B (True)) -> do !appl_5 <- kl_V2729 `pseq` tlstr kl_V2729 !kl_if_6 <- appl_5 `pseq` kl_shen_alphanumsP appl_5 case kl_if_6 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do let !aw_7 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_7 [ApplC (wrapNamed "shen.alphanums?" kl_shen_alphanumsP)] _ -> throwError "if: expected boolean" in case kl_V2729 of kl_V2729@(Atom (Str "")) -> pat_cond_0 _ -> pat_cond_1 kl_shen_alphanumP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_alphanumP (!kl_V2731) = do !kl_if_0 <- kl_V2731 `pseq` kl_shen_alphaP kl_V2731 case kl_if_0 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do !kl_if_1 <- kl_V2731 `pseq` kl_shen_digitP kl_V2731 case kl_if_1 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" kl_shen_digitP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_digitP (!kl_V2733) = do let !appl_0 = Atom Nil !appl_1 <- appl_0 `pseq` klCons (Core.Types.Atom (Core.Types.Str "0")) appl_0 !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.Str "9")) appl_1 !appl_3 <- appl_2 `pseq` klCons (Core.Types.Atom (Core.Types.Str "8")) appl_2 !appl_4 <- appl_3 `pseq` klCons (Core.Types.Atom (Core.Types.Str "7")) appl_3 !appl_5 <- appl_4 `pseq` klCons (Core.Types.Atom (Core.Types.Str "6")) appl_4 !appl_6 <- appl_5 `pseq` klCons (Core.Types.Atom (Core.Types.Str "5")) appl_5 !appl_7 <- appl_6 `pseq` klCons (Core.Types.Atom (Core.Types.Str "4")) appl_6 !appl_8 <- appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.Str "3")) appl_7 !appl_9 <- appl_8 `pseq` klCons (Core.Types.Atom (Core.Types.Str "2")) appl_8 !appl_10 <- appl_9 `pseq` klCons (Core.Types.Atom (Core.Types.Str "1")) appl_9 kl_V2733 `pseq` (appl_10 `pseq` kl_elementP kl_V2733 appl_10) kl_variableP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_variableP (!kl_V2735) = do !kl_if_0 <- kl_V2735 `pseq` kl_booleanP kl_V2735 !kl_if_1 <- case kl_if_0 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do !kl_if_2 <- kl_V2735 `pseq` numberP kl_V2735 !kl_if_3 <- case kl_if_2 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do !kl_if_4 <- kl_V2735 `pseq` stringP kl_V2735 case kl_if_4 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" case kl_if_3 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" case kl_if_1 of Atom (B (True)) -> do return (Atom (B False)) Atom (B (False)) -> do do (do let !appl_5 = ApplC (Func "lambda" (Context (\(!kl_String) -> do kl_String `pseq` kl_shen_analyse_variableP kl_String))) !appl_6 <- kl_V2735 `pseq` str kl_V2735 appl_6 `pseq` applyWrapper appl_5 [appl_6]) `catchError` (\(!kl_E) -> do return (Atom (B False))) _ -> throwError "if: expected boolean" kl_shen_analyse_variableP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_analyse_variableP (!kl_V2737) = do !kl_if_0 <- kl_V2737 `pseq` kl_shen_PlusstringP kl_V2737 case kl_if_0 of Atom (B (True)) -> do !appl_1 <- kl_V2737 `pseq` pos kl_V2737 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) !kl_if_2 <- appl_1 `pseq` kl_shen_uppercaseP appl_1 case kl_if_2 of Atom (B (True)) -> do !appl_3 <- kl_V2737 `pseq` tlstr kl_V2737 !kl_if_4 <- appl_3 `pseq` kl_shen_alphanumsP appl_3 case kl_if_4 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "shen.analyse-variable?" kl_shen_analyse_variableP)] _ -> throwError "if: expected boolean" kl_shen_uppercaseP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_uppercaseP (!kl_V2739) = do let !appl_0 = Atom Nil !appl_1 <- appl_0 `pseq` klCons (Core.Types.Atom (Core.Types.Str "Z")) appl_0 !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.Str "Y")) appl_1 !appl_3 <- appl_2 `pseq` klCons (Core.Types.Atom (Core.Types.Str "X")) appl_2 !appl_4 <- appl_3 `pseq` klCons (Core.Types.Atom (Core.Types.Str "W")) appl_3 !appl_5 <- appl_4 `pseq` klCons (Core.Types.Atom (Core.Types.Str "V")) appl_4 !appl_6 <- appl_5 `pseq` klCons (Core.Types.Atom (Core.Types.Str "U")) appl_5 !appl_7 <- appl_6 `pseq` klCons (Core.Types.Atom (Core.Types.Str "T")) appl_6 !appl_8 <- appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.Str "S")) appl_7 !appl_9 <- appl_8 `pseq` klCons (Core.Types.Atom (Core.Types.Str "R")) appl_8 !appl_10 <- appl_9 `pseq` klCons (Core.Types.Atom (Core.Types.Str "Q")) appl_9 !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.Str "P")) appl_10 !appl_12 <- appl_11 `pseq` klCons (Core.Types.Atom (Core.Types.Str "O")) appl_11 !appl_13 <- appl_12 `pseq` klCons (Core.Types.Atom (Core.Types.Str "N")) appl_12 !appl_14 <- appl_13 `pseq` klCons (Core.Types.Atom (Core.Types.Str "M")) appl_13 !appl_15 <- appl_14 `pseq` klCons (Core.Types.Atom (Core.Types.Str "L")) appl_14 !appl_16 <- appl_15 `pseq` klCons (Core.Types.Atom (Core.Types.Str "K")) appl_15 !appl_17 <- appl_16 `pseq` klCons (Core.Types.Atom (Core.Types.Str "J")) appl_16 !appl_18 <- appl_17 `pseq` klCons (Core.Types.Atom (Core.Types.Str "I")) appl_17 !appl_19 <- appl_18 `pseq` klCons (Core.Types.Atom (Core.Types.Str "H")) appl_18 !appl_20 <- appl_19 `pseq` klCons (Core.Types.Atom (Core.Types.Str "G")) appl_19 !appl_21 <- appl_20 `pseq` klCons (Core.Types.Atom (Core.Types.Str "F")) appl_20 !appl_22 <- appl_21 `pseq` klCons (Core.Types.Atom (Core.Types.Str "E")) appl_21 !appl_23 <- appl_22 `pseq` klCons (Core.Types.Atom (Core.Types.Str "D")) appl_22 !appl_24 <- appl_23 `pseq` klCons (Core.Types.Atom (Core.Types.Str "C")) appl_23 !appl_25 <- appl_24 `pseq` klCons (Core.Types.Atom (Core.Types.Str "B")) appl_24 !appl_26 <- appl_25 `pseq` klCons (Core.Types.Atom (Core.Types.Str "A")) appl_25 kl_V2739 `pseq` (appl_26 `pseq` kl_elementP kl_V2739 appl_26) kl_gensym :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_gensym (!kl_V2741) = do !appl_0 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*gensym*")) !appl_1 <- appl_0 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_0 !appl_2 <- appl_1 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*gensym*")) appl_1 kl_V2741 `pseq` (appl_2 `pseq` kl_concat kl_V2741 appl_2) kl_concat :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_concat (!kl_V2744) (!kl_V2745) = do !appl_0 <- kl_V2744 `pseq` str kl_V2744 !appl_1 <- kl_V2745 `pseq` str kl_V2745 !appl_2 <- appl_0 `pseq` (appl_1 `pseq` cn appl_0 appl_1) appl_2 `pseq` intern appl_2 kl_Atp :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_Atp (!kl_V2748) (!kl_V2749) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Tag) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Fst) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Snd) -> do return kl_Vector))) !appl_4 <- kl_Vector `pseq` (kl_V2749 `pseq` addressTo kl_Vector (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_V2749) appl_4 `pseq` applyWrapper appl_3 [appl_4]))) !appl_5 <- kl_Vector `pseq` (kl_V2748 `pseq` addressTo kl_Vector (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2748) appl_5 `pseq` applyWrapper appl_2 [appl_5]))) !appl_6 <- kl_Vector `pseq` addressTo kl_Vector (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) (Core.Types.Atom (Core.Types.UnboundSym "shen.tuple")) appl_6 `pseq` applyWrapper appl_1 [appl_6]))) !appl_7 <- absvector (Core.Types.Atom (Core.Types.N (Core.Types.KI 3))) appl_7 `pseq` applyWrapper appl_0 [appl_7] kl_fst :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_fst (!kl_V2751) = do kl_V2751 `pseq` addressFrom kl_V2751 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_snd :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_snd (!kl_V2753) = do kl_V2753 `pseq` addressFrom kl_V2753 (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_tupleP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_tupleP (!kl_V2755) = do !kl_if_0 <- kl_V2755 `pseq` absvectorP kl_V2755 case kl_if_0 of Atom (B (True)) -> do let !appl_1 = ApplC (PL "thunk" (do return (Core.Types.Atom (Core.Types.UnboundSym "shen.not-tuple")))) !appl_2 <- kl_V2755 `pseq` (appl_1 `pseq` kl_LB_addressDivor kl_V2755 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) appl_1) !kl_if_3 <- appl_2 `pseq` eq (Core.Types.Atom (Core.Types.UnboundSym "shen.tuple")) appl_2 case kl_if_3 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_append :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_append (!kl_V2758) (!kl_V2759) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2758 `pseq` eq appl_0 kl_V2758) case kl_if_1 of Atom (B (True)) -> do return kl_V2759 Atom (B (False)) -> do let pat_cond_2 kl_V2758 kl_V2758h kl_V2758t = do !appl_3 <- kl_V2758t `pseq` (kl_V2759 `pseq` kl_append kl_V2758t kl_V2759) kl_V2758h `pseq` (appl_3 `pseq` klCons kl_V2758h appl_3) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "append" kl_append)] in case kl_V2758 of !(kl_V2758@(Cons (!kl_V2758h) (!kl_V2758t))) -> pat_cond_2 kl_V2758 kl_V2758h kl_V2758t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_Atv :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_Atv (!kl_V2762) (!kl_V2763) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Limit) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_NewVector) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_XPlusNewVector) -> do let pat_cond_3 = do return kl_XPlusNewVector pat_cond_4 = do do kl_V2763 `pseq` (kl_Limit `pseq` (kl_XPlusNewVector `pseq` kl_shen_Atv_help kl_V2763 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_Limit kl_XPlusNewVector)) in case kl_Limit of kl_Limit@(Atom (N (KI 0))) -> pat_cond_3 _ -> pat_cond_4))) !appl_5 <- kl_NewVector `pseq` (kl_V2762 `pseq` kl_vector_RB kl_NewVector (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2762) appl_5 `pseq` applyWrapper appl_2 [appl_5]))) !appl_6 <- kl_Limit `pseq` add kl_Limit (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_7 <- appl_6 `pseq` kl_vector appl_6 appl_7 `pseq` applyWrapper appl_1 [appl_7]))) !appl_8 <- kl_V2763 `pseq` kl_limit kl_V2763 appl_8 `pseq` applyWrapper appl_0 [appl_8] kl_shen_Atv_help :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_Atv_help (!kl_V2769) (!kl_V2770) (!kl_V2771) (!kl_V2772) = do !kl_if_0 <- kl_V2771 `pseq` (kl_V2770 `pseq` eq kl_V2771 kl_V2770) case kl_if_0 of Atom (B (True)) -> do !appl_1 <- kl_V2771 `pseq` add kl_V2771 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2769 `pseq` (kl_V2772 `pseq` (kl_V2771 `pseq` (appl_1 `pseq` kl_shen_copyfromvector kl_V2769 kl_V2772 kl_V2771 appl_1))) Atom (B (False)) -> do do !appl_2 <- kl_V2770 `pseq` add kl_V2770 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_3 <- kl_V2770 `pseq` add kl_V2770 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_4 <- kl_V2769 `pseq` (kl_V2772 `pseq` (kl_V2770 `pseq` (appl_3 `pseq` kl_shen_copyfromvector kl_V2769 kl_V2772 kl_V2770 appl_3))) kl_V2769 `pseq` (appl_2 `pseq` (kl_V2771 `pseq` (appl_4 `pseq` kl_shen_Atv_help kl_V2769 appl_2 kl_V2771 appl_4))) _ -> throwError "if: expected boolean" kl_shen_copyfromvector :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_copyfromvector (!kl_V2777) (!kl_V2778) (!kl_V2779) (!kl_V2780) = do (do !appl_0 <- kl_V2777 `pseq` (kl_V2779 `pseq` kl_LB_vector kl_V2777 kl_V2779) kl_V2778 `pseq` (kl_V2780 `pseq` (appl_0 `pseq` kl_vector_RB kl_V2778 kl_V2780 appl_0))) `catchError` (\(!kl_E) -> do return kl_V2778) kl_hdv :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_hdv (!kl_V2782) = do let !appl_0 = ApplC (PL "thunk" (do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_2 <- kl_V2782 `pseq` applyWrapper aw_1 [kl_V2782, Core.Types.Atom (Core.Types.Str "\n"), Core.Types.Atom (Core.Types.UnboundSym "shen.s")] !appl_3 <- appl_2 `pseq` cn (Core.Types.Atom (Core.Types.Str "hdv needs a non-empty vector as an argument; not ")) appl_2 appl_3 `pseq` simpleError appl_3)) kl_V2782 `pseq` (appl_0 `pseq` kl_LB_vectorDivor kl_V2782 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_0) kl_tlv :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_tlv (!kl_V2784) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Limit) -> do let pat_cond_1 = do simpleError (Core.Types.Atom (Core.Types.Str "cannot take the tail of the empty vector\n")) pat_cond_2 = do do let pat_cond_3 = do kl_vector (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) pat_cond_4 = do do let !appl_5 = ApplC (Func "lambda" (Context (\(!kl_NewVector) -> do !appl_6 <- kl_Limit `pseq` Primitives.subtract kl_Limit (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_7 <- appl_6 `pseq` kl_vector appl_6 kl_V2784 `pseq` (kl_Limit `pseq` (appl_7 `pseq` kl_shen_tlv_help kl_V2784 (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_Limit appl_7))))) !appl_8 <- kl_Limit `pseq` Primitives.subtract kl_Limit (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_9 <- appl_8 `pseq` kl_vector appl_8 appl_9 `pseq` applyWrapper appl_5 [appl_9] in case kl_Limit of kl_Limit@(Atom (N (KI 1))) -> pat_cond_3 _ -> pat_cond_4 in case kl_Limit of kl_Limit@(Atom (N (KI 0))) -> pat_cond_1 _ -> pat_cond_2))) !appl_10 <- kl_V2784 `pseq` kl_limit kl_V2784 appl_10 `pseq` applyWrapper appl_0 [appl_10] kl_shen_tlv_help :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_tlv_help (!kl_V2790) (!kl_V2791) (!kl_V2792) (!kl_V2793) = do !kl_if_0 <- kl_V2792 `pseq` (kl_V2791 `pseq` eq kl_V2792 kl_V2791) case kl_if_0 of Atom (B (True)) -> do !appl_1 <- kl_V2792 `pseq` Primitives.subtract kl_V2792 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2790 `pseq` (kl_V2793 `pseq` (kl_V2792 `pseq` (appl_1 `pseq` kl_shen_copyfromvector kl_V2790 kl_V2793 kl_V2792 appl_1))) Atom (B (False)) -> do do !appl_2 <- kl_V2791 `pseq` add kl_V2791 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_3 <- kl_V2791 `pseq` Primitives.subtract kl_V2791 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_4 <- kl_V2790 `pseq` (kl_V2793 `pseq` (kl_V2791 `pseq` (appl_3 `pseq` kl_shen_copyfromvector kl_V2790 kl_V2793 kl_V2791 appl_3))) kl_V2790 `pseq` (appl_2 `pseq` (kl_V2792 `pseq` (appl_4 `pseq` kl_shen_tlv_help kl_V2790 appl_2 kl_V2792 appl_4))) _ -> throwError "if: expected boolean" kl_assoc :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_assoc (!kl_V2805) (!kl_V2806) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2806 `pseq` eq appl_0 kl_V2806) case kl_if_1 of Atom (B (True)) -> do return (Atom Nil) Atom (B (False)) -> do let pat_cond_2 kl_V2806 kl_V2806h kl_V2806hh kl_V2806ht kl_V2806t = do return kl_V2806h pat_cond_3 kl_V2806 kl_V2806h kl_V2806t = do kl_V2805 `pseq` (kl_V2806t `pseq` kl_assoc kl_V2805 kl_V2806t) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "assoc" kl_assoc)] in case kl_V2806 of !(kl_V2806@(Cons (!(kl_V2806h@(Cons (!kl_V2806hh) (!kl_V2806ht)))) (!kl_V2806t))) | eqCore kl_V2806hh kl_V2805 -> pat_cond_2 kl_V2806 kl_V2806h kl_V2806hh kl_V2806ht kl_V2806t !(kl_V2806@(Cons (!kl_V2806h) (!kl_V2806t))) -> pat_cond_3 kl_V2806 kl_V2806h kl_V2806t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_booleanP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_booleanP (!kl_V2812) = do let pat_cond_0 = do return (Atom (B True)) pat_cond_1 = do return (Atom (B True)) pat_cond_2 = do do return (Atom (B False)) in case kl_V2812 of kl_V2812@(Atom (UnboundSym "true")) -> pat_cond_0 kl_V2812@(Atom (B (True))) -> pat_cond_0 kl_V2812@(Atom (UnboundSym "false")) -> pat_cond_1 kl_V2812@(Atom (B (False))) -> pat_cond_1 _ -> pat_cond_2 kl_nl :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_nl (!kl_V2814) = do let pat_cond_0 = do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) pat_cond_1 = do do !appl_2 <- kl_stoutput let !aw_3 = Core.Types.Atom (Core.Types.UnboundSym "shen.prhush") !appl_4 <- appl_2 `pseq` applyWrapper aw_3 [Core.Types.Atom (Core.Types.Str "\n"), appl_2] !appl_5 <- kl_V2814 `pseq` Primitives.subtract kl_V2814 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) !appl_6 <- appl_5 `pseq` kl_nl appl_5 appl_4 `pseq` (appl_6 `pseq` kl_do appl_4 appl_6) in case kl_V2814 of kl_V2814@(Atom (N (KI 0))) -> pat_cond_0 _ -> pat_cond_1 kl_difference :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_difference (!kl_V2819) (!kl_V2820) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2819 `pseq` eq appl_0 kl_V2819) case kl_if_1 of Atom (B (True)) -> do return (Atom Nil) Atom (B (False)) -> do let pat_cond_2 kl_V2819 kl_V2819h kl_V2819t = do !kl_if_3 <- kl_V2819h `pseq` (kl_V2820 `pseq` kl_elementP kl_V2819h kl_V2820) case kl_if_3 of Atom (B (True)) -> do kl_V2819t `pseq` (kl_V2820 `pseq` kl_difference kl_V2819t kl_V2820) Atom (B (False)) -> do do !appl_4 <- kl_V2819t `pseq` (kl_V2820 `pseq` kl_difference kl_V2819t kl_V2820) kl_V2819h `pseq` (appl_4 `pseq` klCons kl_V2819h appl_4) _ -> throwError "if: expected boolean" pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "difference" kl_difference)] in case kl_V2819 of !(kl_V2819@(Cons (!kl_V2819h) (!kl_V2819t))) -> pat_cond_2 kl_V2819 kl_V2819h kl_V2819t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_do :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_do (!kl_V2823) (!kl_V2824) = do return kl_V2824 kl_elementP :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_elementP (!kl_V2836) (!kl_V2837) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2837 `pseq` eq appl_0 kl_V2837) case kl_if_1 of Atom (B (True)) -> do return (Atom (B False)) Atom (B (False)) -> do let pat_cond_2 kl_V2837 kl_V2837h kl_V2837t = do return (Atom (B True)) pat_cond_3 kl_V2837 kl_V2837h kl_V2837t = do kl_V2836 `pseq` (kl_V2837t `pseq` kl_elementP kl_V2836 kl_V2837t) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "element?" kl_elementP)] in case kl_V2837 of !(kl_V2837@(Cons (!kl_V2837h) (!kl_V2837t))) | eqCore kl_V2837h kl_V2836 -> pat_cond_2 kl_V2837 kl_V2837h kl_V2837t !(kl_V2837@(Cons (!kl_V2837h) (!kl_V2837t))) -> pat_cond_3 kl_V2837 kl_V2837h kl_V2837t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_emptyP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_emptyP (!kl_V2843) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2843 `pseq` eq appl_0 kl_V2843) case kl_if_1 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_fix :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_fix (!kl_V2846) (!kl_V2847) = do !appl_0 <- kl_V2847 `pseq` applyWrapper kl_V2846 [kl_V2847] kl_V2846 `pseq` (kl_V2847 `pseq` (appl_0 `pseq` kl_shen_fix_help kl_V2846 kl_V2847 appl_0)) kl_shen_fix_help :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_fix_help (!kl_V2858) (!kl_V2859) (!kl_V2860) = do !kl_if_0 <- kl_V2860 `pseq` (kl_V2859 `pseq` eq kl_V2860 kl_V2859) case kl_if_0 of Atom (B (True)) -> do return kl_V2860 Atom (B (False)) -> do do !appl_1 <- kl_V2860 `pseq` applyWrapper kl_V2858 [kl_V2860] kl_V2858 `pseq` (kl_V2860 `pseq` (appl_1 `pseq` kl_shen_fix_help kl_V2858 kl_V2860 appl_1)) _ -> throwError "if: expected boolean" kl_dict :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict (!kl_V2862) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_D) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Tag) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Capacity) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Count) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Fill) -> do return kl_D))) !appl_5 <- kl_V2862 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_V2862 let !appl_6 = Atom Nil !appl_7 <- kl_D `pseq` (appl_5 `pseq` (appl_6 `pseq` kl_shen_fillvector kl_D (Core.Types.Atom (Core.Types.N (Core.Types.KI 3))) appl_5 appl_6)) appl_7 `pseq` applyWrapper appl_4 [appl_7]))) !appl_8 <- kl_D `pseq` addressTo kl_D (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) appl_8 `pseq` applyWrapper appl_3 [appl_8]))) !appl_9 <- kl_D `pseq` (kl_V2862 `pseq` addressTo kl_D (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2862) appl_9 `pseq` applyWrapper appl_2 [appl_9]))) !appl_10 <- kl_D `pseq` addressTo kl_D (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) (Core.Types.Atom (Core.Types.UnboundSym "shen.dictionary")) appl_10 `pseq` applyWrapper appl_1 [appl_10]))) !appl_11 <- kl_V2862 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 3))) kl_V2862 !appl_12 <- appl_11 `pseq` absvector appl_11 appl_12 `pseq` applyWrapper appl_0 [appl_12] kl_dictP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dictP (!kl_V2864) = do !kl_if_0 <- kl_V2864 `pseq` absvectorP kl_V2864 case kl_if_0 of Atom (B (True)) -> do let !appl_1 = ApplC (PL "thunk" (do return (Core.Types.Atom (Core.Types.UnboundSym "shen.not-dictionary")))) !appl_2 <- kl_V2864 `pseq` (appl_1 `pseq` kl_LB_addressDivor kl_V2864 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) appl_1) !kl_if_3 <- appl_2 `pseq` eq appl_2 (Core.Types.Atom (Core.Types.UnboundSym "shen.dictionary")) case kl_if_3 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_shen_dict_capacity :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_dict_capacity (!kl_V2866) = do kl_V2866 `pseq` addressFrom kl_V2866 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_dict_count :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict_count (!kl_V2868) = do kl_V2868 `pseq` addressFrom kl_V2868 (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_shen_dict_count_RB :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_dict_count_RB (!kl_V2871) (!kl_V2872) = do kl_V2871 `pseq` (kl_V2872 `pseq` addressTo kl_V2871 (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_V2872) kl_shen_LB_dict_bucket :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_LB_dict_bucket (!kl_V2875) (!kl_V2876) = do !appl_0 <- kl_V2876 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 3))) kl_V2876 kl_V2875 `pseq` (appl_0 `pseq` addressFrom kl_V2875 appl_0) kl_shen_dict_bucket_RB :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_dict_bucket_RB (!kl_V2880) (!kl_V2881) (!kl_V2882) = do !appl_0 <- kl_V2881 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 3))) kl_V2881 kl_V2880 `pseq` (appl_0 `pseq` (kl_V2882 `pseq` addressTo kl_V2880 appl_0 kl_V2882)) kl_shen_set_key_entry_value :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_set_key_entry_value (!kl_V2889) (!kl_V2890) (!kl_V2891) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2891 `pseq` eq appl_0 kl_V2891) case kl_if_1 of Atom (B (True)) -> do !appl_2 <- kl_V2889 `pseq` (kl_V2890 `pseq` klCons kl_V2889 kl_V2890) let !appl_3 = Atom Nil appl_2 `pseq` (appl_3 `pseq` klCons appl_2 appl_3) Atom (B (False)) -> do let pat_cond_4 kl_V2891 kl_V2891h kl_V2891hh kl_V2891ht kl_V2891t = do !appl_5 <- kl_V2891hh `pseq` (kl_V2890 `pseq` klCons kl_V2891hh kl_V2890) appl_5 `pseq` (kl_V2891t `pseq` klCons appl_5 kl_V2891t) pat_cond_6 kl_V2891 kl_V2891h kl_V2891t = do !appl_7 <- kl_V2889 `pseq` (kl_V2890 `pseq` (kl_V2891t `pseq` kl_shen_set_key_entry_value kl_V2889 kl_V2890 kl_V2891t)) kl_V2891h `pseq` (appl_7 `pseq` klCons kl_V2891h appl_7) pat_cond_8 = do do let !aw_9 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_9 [ApplC (wrapNamed "shen.set-key-entry-value" kl_shen_set_key_entry_value)] in case kl_V2891 of !(kl_V2891@(Cons (!(kl_V2891h@(Cons (!kl_V2891hh) (!kl_V2891ht)))) (!kl_V2891t))) | eqCore kl_V2891hh kl_V2889 -> pat_cond_4 kl_V2891 kl_V2891h kl_V2891hh kl_V2891ht kl_V2891t !(kl_V2891@(Cons (!kl_V2891h) (!kl_V2891t))) -> pat_cond_6 kl_V2891 kl_V2891h kl_V2891t _ -> pat_cond_8 _ -> throwError "if: expected boolean" kl_shen_remove_key_entry_value :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_remove_key_entry_value (!kl_V2897) (!kl_V2898) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2898 `pseq` eq appl_0 kl_V2898) case kl_if_1 of Atom (B (True)) -> do return (Atom Nil) Atom (B (False)) -> do let pat_cond_2 kl_V2898 kl_V2898h kl_V2898hh kl_V2898ht kl_V2898t = do return kl_V2898t pat_cond_3 kl_V2898 kl_V2898h kl_V2898t = do !appl_4 <- kl_V2897 `pseq` (kl_V2898t `pseq` kl_shen_remove_key_entry_value kl_V2897 kl_V2898t) kl_V2898h `pseq` (appl_4 `pseq` klCons kl_V2898h appl_4) pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "shen.remove-key-entry-value" kl_shen_remove_key_entry_value)] in case kl_V2898 of !(kl_V2898@(Cons (!(kl_V2898h@(Cons (!kl_V2898hh) (!kl_V2898ht)))) (!kl_V2898t))) | eqCore kl_V2898hh kl_V2897 -> pat_cond_2 kl_V2898 kl_V2898h kl_V2898hh kl_V2898ht kl_V2898t !(kl_V2898@(Cons (!kl_V2898h) (!kl_V2898t))) -> pat_cond_3 kl_V2898 kl_V2898h kl_V2898t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_shen_dict_update_count :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_dict_update_count (!kl_V2902) (!kl_V2903) (!kl_V2904) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Diff) -> do !appl_1 <- kl_V2902 `pseq` kl_dict_count kl_V2902 !appl_2 <- kl_Diff `pseq` (appl_1 `pseq` add kl_Diff appl_1) kl_V2902 `pseq` (appl_2 `pseq` kl_shen_dict_count_RB kl_V2902 appl_2)))) !appl_3 <- kl_V2904 `pseq` kl_length kl_V2904 !appl_4 <- kl_V2903 `pseq` kl_length kl_V2903 !appl_5 <- appl_3 `pseq` (appl_4 `pseq` Primitives.subtract appl_3 appl_4) appl_5 `pseq` applyWrapper appl_0 [appl_5] kl_dict_RB :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict_RB (!kl_V2908) (!kl_V2909) (!kl_V2910) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_N) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Bucket) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_NewBucket) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Change) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Count) -> do return kl_V2910))) !appl_5 <- kl_V2908 `pseq` (kl_Bucket `pseq` (kl_NewBucket `pseq` kl_shen_dict_update_count kl_V2908 kl_Bucket kl_NewBucket)) appl_5 `pseq` applyWrapper appl_4 [appl_5]))) !appl_6 <- kl_V2908 `pseq` (kl_N `pseq` (kl_NewBucket `pseq` kl_shen_dict_bucket_RB kl_V2908 kl_N kl_NewBucket)) appl_6 `pseq` applyWrapper appl_3 [appl_6]))) !appl_7 <- kl_V2909 `pseq` (kl_V2910 `pseq` (kl_Bucket `pseq` kl_shen_set_key_entry_value kl_V2909 kl_V2910 kl_Bucket)) appl_7 `pseq` applyWrapper appl_2 [appl_7]))) !appl_8 <- kl_V2908 `pseq` (kl_N `pseq` kl_shen_LB_dict_bucket kl_V2908 kl_N) appl_8 `pseq` applyWrapper appl_1 [appl_8]))) !appl_9 <- kl_V2908 `pseq` kl_shen_dict_capacity kl_V2908 !appl_10 <- kl_V2909 `pseq` (appl_9 `pseq` kl_hash kl_V2909 appl_9) appl_10 `pseq` applyWrapper appl_0 [appl_10] kl_LB_dictDivor :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_LB_dictDivor (!kl_V2914) (!kl_V2915) (!kl_V2916) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_N) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Bucket) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Result) -> do !kl_if_3 <- kl_Result `pseq` kl_emptyP kl_Result case kl_if_3 of Atom (B (True)) -> do kl_V2916 `pseq` kl_thaw kl_V2916 Atom (B (False)) -> do do kl_Result `pseq` tl kl_Result _ -> throwError "if: expected boolean"))) !appl_4 <- kl_V2915 `pseq` (kl_Bucket `pseq` kl_assoc kl_V2915 kl_Bucket) appl_4 `pseq` applyWrapper appl_2 [appl_4]))) !appl_5 <- kl_V2914 `pseq` (kl_N `pseq` kl_shen_LB_dict_bucket kl_V2914 kl_N) appl_5 `pseq` applyWrapper appl_1 [appl_5]))) !appl_6 <- kl_V2914 `pseq` kl_shen_dict_capacity kl_V2914 !appl_7 <- kl_V2915 `pseq` (appl_6 `pseq` kl_hash kl_V2915 appl_6) appl_7 `pseq` applyWrapper appl_0 [appl_7] kl_LB_dict :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_LB_dict (!kl_V2919) (!kl_V2920) = do let !appl_0 = ApplC (PL "thunk" (do simpleError (Core.Types.Atom (Core.Types.Str "value not found\n")))) kl_V2919 `pseq` (kl_V2920 `pseq` (appl_0 `pseq` kl_LB_dictDivor kl_V2919 kl_V2920 appl_0)) kl_dict_rm :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict_rm (!kl_V2923) (!kl_V2924) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_N) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Bucket) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_NewBucket) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Change) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Count) -> do return kl_V2924))) !appl_5 <- kl_V2923 `pseq` (kl_Bucket `pseq` (kl_NewBucket `pseq` kl_shen_dict_update_count kl_V2923 kl_Bucket kl_NewBucket)) appl_5 `pseq` applyWrapper appl_4 [appl_5]))) !appl_6 <- kl_V2923 `pseq` (kl_N `pseq` (kl_NewBucket `pseq` kl_shen_dict_bucket_RB kl_V2923 kl_N kl_NewBucket)) appl_6 `pseq` applyWrapper appl_3 [appl_6]))) !appl_7 <- kl_V2924 `pseq` (kl_Bucket `pseq` kl_shen_remove_key_entry_value kl_V2924 kl_Bucket) appl_7 `pseq` applyWrapper appl_2 [appl_7]))) !appl_8 <- kl_V2923 `pseq` (kl_N `pseq` kl_shen_LB_dict_bucket kl_V2923 kl_N) appl_8 `pseq` applyWrapper appl_1 [appl_8]))) !appl_9 <- kl_V2923 `pseq` kl_shen_dict_capacity kl_V2923 !appl_10 <- kl_V2924 `pseq` (appl_9 `pseq` kl_hash kl_V2924 appl_9) appl_10 `pseq` applyWrapper appl_0 [appl_10] kl_dict_fold :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict_fold (!kl_V2928) (!kl_V2929) (!kl_V2930) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Limit) -> do kl_V2928 `pseq` (kl_V2929 `pseq` (kl_V2930 `pseq` (kl_Limit `pseq` kl_shen_dict_fold_h kl_V2928 kl_V2929 kl_V2930 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_Limit)))))) !appl_1 <- kl_V2929 `pseq` kl_shen_dict_capacity kl_V2929 appl_1 `pseq` applyWrapper appl_0 [appl_1] kl_shen_dict_fold_h :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_dict_fold_h (!kl_V2937) (!kl_V2938) (!kl_V2939) (!kl_V2940) (!kl_V2941) = do !kl_if_0 <- kl_V2941 `pseq` (kl_V2940 `pseq` eq kl_V2941 kl_V2940) case kl_if_0 of Atom (B (True)) -> do return kl_V2939 Atom (B (False)) -> do do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_B) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Acc) -> do !appl_3 <- kl_V2940 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V2940 kl_V2937 `pseq` (kl_V2938 `pseq` (kl_Acc `pseq` (appl_3 `pseq` (kl_V2941 `pseq` kl_shen_dict_fold_h kl_V2937 kl_V2938 kl_Acc appl_3 kl_V2941))))))) !appl_4 <- kl_V2937 `pseq` (kl_B `pseq` (kl_V2939 `pseq` kl_shen_bucket_fold kl_V2937 kl_B kl_V2939)) appl_4 `pseq` applyWrapper appl_2 [appl_4]))) !appl_5 <- kl_V2938 `pseq` (kl_V2940 `pseq` kl_shen_LB_dict_bucket kl_V2938 kl_V2940) appl_5 `pseq` applyWrapper appl_1 [appl_5] _ -> throwError "if: expected boolean" kl_shen_bucket_fold :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_bucket_fold (!kl_V2945) (!kl_V2946) (!kl_V2947) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2946 `pseq` eq appl_0 kl_V2946) case kl_if_1 of Atom (B (True)) -> do return kl_V2947 Atom (B (False)) -> do let pat_cond_2 kl_V2946 kl_V2946h kl_V2946hh kl_V2946ht kl_V2946t = do !appl_3 <- kl_V2945 `pseq` (kl_V2946t `pseq` (kl_V2947 `pseq` kl_fold_right kl_V2945 kl_V2946t kl_V2947)) kl_V2946hh `pseq` (kl_V2946ht `pseq` (appl_3 `pseq` applyWrapper kl_V2945 [kl_V2946hh, kl_V2946ht, appl_3])) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "shen.bucket-fold" kl_shen_bucket_fold)] in case kl_V2946 of !(kl_V2946@(Cons (!(kl_V2946h@(Cons (!kl_V2946hh) (!kl_V2946ht)))) (!kl_V2946t))) -> pat_cond_2 kl_V2946 kl_V2946h kl_V2946hh kl_V2946ht kl_V2946t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_dict_keys :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict_keys (!kl_V2949) = kl_dict_fold (ApplC (wrapNamed "lambda" (\k (_ :: Core.Types.KLValue) (acc :: Core.Types.KLValue) -> klCons k acc))) kl_V2949 (Atom Nil) kl_dict_values :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_dict_values (!kl_V2951) = kl_dict_fold (ApplC (wrapNamed "lambda" (\(_ :: Core.Types.KLValue) v (acc :: Core.Types.KLValue) -> klCons v acc))) kl_V2951 (Atom Nil) kl_put :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_put (!kl_V2956) (!kl_V2957) (!kl_V2958) (!kl_V2959) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Curr) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Added) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Update) -> do return kl_V2958))) !appl_3 <- kl_V2959 `pseq` (kl_V2956 `pseq` (kl_Added `pseq` kl_dict_RB kl_V2959 kl_V2956 kl_Added)) appl_3 `pseq` applyWrapper appl_2 [appl_3]))) !appl_4 <- kl_V2957 `pseq` (kl_V2958 `pseq` (kl_Curr `pseq` kl_shen_set_key_entry_value kl_V2957 kl_V2958 kl_Curr)) appl_4 `pseq` applyWrapper appl_1 [appl_4]))) let !appl_5 = ApplC (PL "thunk" (do return (Atom Nil))) !appl_6 <- kl_V2959 `pseq` (kl_V2956 `pseq` (appl_5 `pseq` kl_LB_dictDivor kl_V2959 kl_V2956 appl_5)) appl_6 `pseq` applyWrapper appl_0 [appl_6] kl_unput :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_unput (!kl_V2963) (!kl_V2964) (!kl_V2965) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Curr) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Removed) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Update) -> do return kl_V2963))) !appl_3 <- kl_V2965 `pseq` (kl_V2963 `pseq` (kl_Removed `pseq` kl_dict_RB kl_V2965 kl_V2963 kl_Removed)) appl_3 `pseq` applyWrapper appl_2 [appl_3]))) !appl_4 <- kl_V2964 `pseq` (kl_Curr `pseq` kl_shen_remove_key_entry_value kl_V2964 kl_Curr) appl_4 `pseq` applyWrapper appl_1 [appl_4]))) let !appl_5 = ApplC (PL "thunk" (do return (Atom Nil))) !appl_6 <- kl_V2965 `pseq` (kl_V2963 `pseq` (appl_5 `pseq` kl_LB_dictDivor kl_V2965 kl_V2963 appl_5)) appl_6 `pseq` applyWrapper appl_0 [appl_6] kl_getDivor :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_getDivor (!kl_V2970) (!kl_V2971) (!kl_V2972) (!kl_V2973) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Entry) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Result) -> do !kl_if_2 <- kl_Result `pseq` kl_emptyP kl_Result case kl_if_2 of Atom (B (True)) -> do kl_V2972 `pseq` kl_thaw kl_V2972 Atom (B (False)) -> do do kl_Result `pseq` tl kl_Result _ -> throwError "if: expected boolean"))) !appl_3 <- kl_V2971 `pseq` (kl_Entry `pseq` kl_assoc kl_V2971 kl_Entry) appl_3 `pseq` applyWrapper appl_1 [appl_3]))) let !appl_4 = ApplC (PL "thunk" (do return (Atom Nil))) !appl_5 <- kl_V2973 `pseq` (kl_V2970 `pseq` (appl_4 `pseq` kl_LB_dictDivor kl_V2973 kl_V2970 appl_4)) appl_5 `pseq` applyWrapper appl_0 [appl_5] kl_get :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_get (!kl_V2977) (!kl_V2978) (!kl_V2979) = do let !appl_0 = ApplC (PL "thunk" (do simpleError (Core.Types.Atom (Core.Types.Str "value not found\n")))) kl_V2977 `pseq` (kl_V2978 `pseq` (appl_0 `pseq` (kl_V2979 `pseq` kl_getDivor kl_V2977 kl_V2978 appl_0 kl_V2979))) kl_hash :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_hash (!kl_V2982) (!kl_V2983) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` stringToN kl_X))) !appl_1 <- kl_V2982 `pseq` kl_explode kl_V2982 !appl_2 <- appl_0 `pseq` (appl_1 `pseq` kl_map appl_0 appl_1) !appl_3 <- appl_2 `pseq` kl_sum appl_2 appl_3 `pseq` (kl_V2983 `pseq` kl_shen_mod appl_3 kl_V2983) kl_shen_mod :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_mod (!kl_V2986) (!kl_V2987) = do let !appl_0 = Atom Nil !appl_1 <- kl_V2987 `pseq` (appl_0 `pseq` klCons kl_V2987 appl_0) !appl_2 <- kl_V2986 `pseq` (appl_1 `pseq` kl_shen_multiples kl_V2986 appl_1) kl_V2986 `pseq` (appl_2 `pseq` kl_shen_modh kl_V2986 appl_2) kl_shen_multiples :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_multiples (!kl_V2990) (!kl_V2991) = do !kl_if_0 <- let pat_cond_1 kl_V2991 kl_V2991h kl_V2991t = do !kl_if_2 <- kl_V2991h `pseq` (kl_V2990 `pseq` greaterThan kl_V2991h kl_V2990) case kl_if_2 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_3 = do do return (Atom (B False)) in case kl_V2991 of !(kl_V2991@(Cons (!kl_V2991h) (!kl_V2991t))) -> pat_cond_1 kl_V2991 kl_V2991h kl_V2991t _ -> pat_cond_3 case kl_if_0 of Atom (B (True)) -> do kl_V2991 `pseq` tl kl_V2991 Atom (B (False)) -> do let pat_cond_4 kl_V2991 kl_V2991h kl_V2991t = do !appl_5 <- kl_V2991h `pseq` multiply (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) kl_V2991h !appl_6 <- appl_5 `pseq` (kl_V2991 `pseq` klCons appl_5 kl_V2991) kl_V2990 `pseq` (appl_6 `pseq` kl_shen_multiples kl_V2990 appl_6) pat_cond_7 = do do let !aw_8 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_8 [ApplC (wrapNamed "shen.multiples" kl_shen_multiples)] in case kl_V2991 of !(kl_V2991@(Cons (!kl_V2991h) (!kl_V2991t))) -> pat_cond_4 kl_V2991 kl_V2991h kl_V2991t _ -> pat_cond_7 _ -> throwError "if: expected boolean" kl_shen_modh :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_modh (!kl_V2996) (!kl_V2997) = do let pat_cond_0 = do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) pat_cond_1 = do let !appl_2 = Atom Nil !kl_if_3 <- appl_2 `pseq` (kl_V2997 `pseq` eq appl_2 kl_V2997) case kl_if_3 of Atom (B (True)) -> do return kl_V2996 Atom (B (False)) -> do !kl_if_4 <- let pat_cond_5 kl_V2997 kl_V2997h kl_V2997t = do !kl_if_6 <- kl_V2997h `pseq` (kl_V2996 `pseq` greaterThan kl_V2997h kl_V2996) case kl_if_6 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_7 = do do return (Atom (B False)) in case kl_V2997 of !(kl_V2997@(Cons (!kl_V2997h) (!kl_V2997t))) -> pat_cond_5 kl_V2997 kl_V2997h kl_V2997t _ -> pat_cond_7 case kl_if_4 of Atom (B (True)) -> do !appl_8 <- kl_V2997 `pseq` tl kl_V2997 !kl_if_9 <- appl_8 `pseq` kl_emptyP appl_8 case kl_if_9 of Atom (B (True)) -> do return kl_V2996 Atom (B (False)) -> do do !appl_10 <- kl_V2997 `pseq` tl kl_V2997 kl_V2996 `pseq` (appl_10 `pseq` kl_shen_modh kl_V2996 appl_10) _ -> throwError "if: expected boolean" Atom (B (False)) -> do let pat_cond_11 kl_V2997 kl_V2997h kl_V2997t = do !appl_12 <- kl_V2996 `pseq` (kl_V2997h `pseq` Primitives.subtract kl_V2996 kl_V2997h) appl_12 `pseq` (kl_V2997 `pseq` kl_shen_modh appl_12 kl_V2997) pat_cond_13 = do do let !aw_14 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_14 [ApplC (wrapNamed "shen.modh" kl_shen_modh)] in case kl_V2997 of !(kl_V2997@(Cons (!kl_V2997h) (!kl_V2997t))) -> pat_cond_11 kl_V2997 kl_V2997h kl_V2997t _ -> pat_cond_13 _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" in case kl_V2996 of kl_V2996@(Atom (N (KI 0))) -> pat_cond_0 _ -> pat_cond_1 kl_sum :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_sum (!kl_V2999) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V2999 `pseq` eq appl_0 kl_V2999) case kl_if_1 of Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) Atom (B (False)) -> do let pat_cond_2 kl_V2999 kl_V2999h kl_V2999t = do !appl_3 <- kl_V2999t `pseq` kl_sum kl_V2999t kl_V2999h `pseq` (appl_3 `pseq` add kl_V2999h appl_3) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "sum" kl_sum)] in case kl_V2999 of !(kl_V2999@(Cons (!kl_V2999h) (!kl_V2999t))) -> pat_cond_2 kl_V2999 kl_V2999h kl_V2999t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_head :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_head (!kl_V3007) = do let pat_cond_0 kl_V3007 kl_V3007h kl_V3007t = do return kl_V3007h pat_cond_1 = do do simpleError (Core.Types.Atom (Core.Types.Str "head expects a non-empty list")) in case kl_V3007 of !(kl_V3007@(Cons (!kl_V3007h) (!kl_V3007t))) -> pat_cond_0 kl_V3007 kl_V3007h kl_V3007t _ -> pat_cond_1 kl_tail :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_tail (!kl_V3015) = do let pat_cond_0 kl_V3015 kl_V3015h kl_V3015t = do return kl_V3015t pat_cond_1 = do do simpleError (Core.Types.Atom (Core.Types.Str "tail expects a non-empty list")) in case kl_V3015 of !(kl_V3015@(Cons (!kl_V3015h) (!kl_V3015t))) -> pat_cond_0 kl_V3015 kl_V3015h kl_V3015t _ -> pat_cond_1 kl_hdstr :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_hdstr (!kl_V3017) = do kl_V3017 `pseq` pos kl_V3017 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_intersection :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_intersection (!kl_V3022) (!kl_V3023) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3022 `pseq` eq appl_0 kl_V3022) case kl_if_1 of Atom (B (True)) -> do return (Atom Nil) Atom (B (False)) -> do let pat_cond_2 kl_V3022 kl_V3022h kl_V3022t = do !kl_if_3 <- kl_V3022h `pseq` (kl_V3023 `pseq` kl_elementP kl_V3022h kl_V3023) case kl_if_3 of Atom (B (True)) -> do !appl_4 <- kl_V3022t `pseq` (kl_V3023 `pseq` kl_intersection kl_V3022t kl_V3023) kl_V3022h `pseq` (appl_4 `pseq` klCons kl_V3022h appl_4) Atom (B (False)) -> do do kl_V3022t `pseq` (kl_V3023 `pseq` kl_intersection kl_V3022t kl_V3023) _ -> throwError "if: expected boolean" pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "intersection" kl_intersection)] in case kl_V3022 of !(kl_V3022@(Cons (!kl_V3022h) (!kl_V3022t))) -> pat_cond_2 kl_V3022 kl_V3022h kl_V3022t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_reverse :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_reverse (!kl_V3025) = do let !appl_0 = Atom Nil kl_V3025 `pseq` (appl_0 `pseq` kl_shen_reverse_help kl_V3025 appl_0) kl_shen_reverse_help :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_reverse_help (!kl_V3028) (!kl_V3029) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3028 `pseq` eq appl_0 kl_V3028) case kl_if_1 of Atom (B (True)) -> do return kl_V3029 Atom (B (False)) -> do let pat_cond_2 kl_V3028 kl_V3028h kl_V3028t = do !appl_3 <- kl_V3028h `pseq` (kl_V3029 `pseq` klCons kl_V3028h kl_V3029) kl_V3028t `pseq` (appl_3 `pseq` kl_shen_reverse_help kl_V3028t appl_3) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "shen.reverse_help" kl_shen_reverse_help)] in case kl_V3028 of !(kl_V3028@(Cons (!kl_V3028h) (!kl_V3028t))) -> pat_cond_2 kl_V3028 kl_V3028h kl_V3028t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_union :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_union (!kl_V3032) (!kl_V3033) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3032 `pseq` eq appl_0 kl_V3032) case kl_if_1 of Atom (B (True)) -> do return kl_V3033 Atom (B (False)) -> do let pat_cond_2 kl_V3032 kl_V3032h kl_V3032t = do !kl_if_3 <- kl_V3032h `pseq` (kl_V3033 `pseq` kl_elementP kl_V3032h kl_V3033) case kl_if_3 of Atom (B (True)) -> do kl_V3032t `pseq` (kl_V3033 `pseq` kl_union kl_V3032t kl_V3033) Atom (B (False)) -> do do !appl_4 <- kl_V3032t `pseq` (kl_V3033 `pseq` kl_union kl_V3032t kl_V3033) kl_V3032h `pseq` (appl_4 `pseq` klCons kl_V3032h appl_4) _ -> throwError "if: expected boolean" pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "union" kl_union)] in case kl_V3032 of !(kl_V3032@(Cons (!kl_V3032h) (!kl_V3032t))) -> pat_cond_2 kl_V3032 kl_V3032h kl_V3032t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_y_or_nP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_y_or_nP (!kl_V3035) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Message) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Y_or_N) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Input) -> do let pat_cond_3 = do return (Atom (B True)) pat_cond_4 = do do let pat_cond_5 = do return (Atom (B False)) pat_cond_6 = do do !appl_7 <- kl_stoutput let !aw_8 = Core.Types.Atom (Core.Types.UnboundSym "shen.prhush") !appl_9 <- appl_7 `pseq` applyWrapper aw_8 [Core.Types.Atom (Core.Types.Str "please answer y or n\n"), appl_7] !appl_10 <- kl_V3035 `pseq` kl_y_or_nP kl_V3035 appl_9 `pseq` (appl_10 `pseq` kl_do appl_9 appl_10) in case kl_Input of kl_Input@(Atom (Str "n")) -> pat_cond_5 _ -> pat_cond_6 in case kl_Input of kl_Input@(Atom (Str "y")) -> pat_cond_3 _ -> pat_cond_4))) !appl_11 <- kl_stinput let !aw_12 = Core.Types.Atom (Core.Types.UnboundSym "read") !appl_13 <- appl_11 `pseq` applyWrapper aw_12 [appl_11] let !aw_14 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_15 <- appl_13 `pseq` applyWrapper aw_14 [appl_13, Core.Types.Atom (Core.Types.Str ""), Core.Types.Atom (Core.Types.UnboundSym "shen.s")] appl_15 `pseq` applyWrapper appl_2 [appl_15]))) !appl_16 <- kl_stoutput let !aw_17 = Core.Types.Atom (Core.Types.UnboundSym "shen.prhush") !appl_18 <- appl_16 `pseq` applyWrapper aw_17 [Core.Types.Atom (Core.Types.Str " (y/n) "), appl_16] appl_18 `pseq` applyWrapper appl_1 [appl_18]))) let !aw_19 = Core.Types.Atom (Core.Types.UnboundSym "shen.proc-nl") !appl_20 <- kl_V3035 `pseq` applyWrapper aw_19 [kl_V3035] !appl_21 <- kl_stoutput let !aw_22 = Core.Types.Atom (Core.Types.UnboundSym "shen.prhush") !appl_23 <- appl_20 `pseq` (appl_21 `pseq` applyWrapper aw_22 [appl_20, appl_21]) appl_23 `pseq` applyWrapper appl_0 [appl_23] kl_not :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_not (!kl_V3037) = do case kl_V3037 of Atom (B (True)) -> do return (Atom (B False)) Atom (B (False)) -> do do return (Atom (B True)) _ -> throwError "if: expected boolean" kl_subst :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_subst (!kl_V3050) (!kl_V3051) (!kl_V3052) = do !kl_if_0 <- kl_V3052 `pseq` (kl_V3051 `pseq` eq kl_V3052 kl_V3051) case kl_if_0 of Atom (B (True)) -> do return kl_V3050 Atom (B (False)) -> do let pat_cond_1 kl_V3052 kl_V3052h kl_V3052t = do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_W) -> do kl_V3050 `pseq` (kl_V3051 `pseq` (kl_W `pseq` kl_subst kl_V3050 kl_V3051 kl_W))))) appl_2 `pseq` (kl_V3052 `pseq` kl_map appl_2 kl_V3052) pat_cond_3 = do do return kl_V3052 in case kl_V3052 of !(kl_V3052@(Cons (!kl_V3052h) (!kl_V3052t))) -> pat_cond_1 kl_V3052 kl_V3052h kl_V3052t _ -> pat_cond_3 _ -> throwError "if: expected boolean" kl_explode :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_explode (!kl_V3054) = do let !aw_0 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_1 <- kl_V3054 `pseq` applyWrapper aw_0 [kl_V3054, Core.Types.Atom (Core.Types.Str ""), Core.Types.Atom (Core.Types.UnboundSym "shen.a")] appl_1 `pseq` kl_shen_explode_h appl_1 kl_shen_explode_h :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_explode_h (!kl_V3056) = do let pat_cond_0 = do return (Atom Nil) pat_cond_1 = do !kl_if_2 <- kl_V3056 `pseq` kl_shen_PlusstringP kl_V3056 case kl_if_2 of Atom (B (True)) -> do !appl_3 <- kl_V3056 `pseq` pos kl_V3056 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) !appl_4 <- kl_V3056 `pseq` tlstr kl_V3056 !appl_5 <- appl_4 `pseq` kl_shen_explode_h appl_4 appl_3 `pseq` (appl_5 `pseq` klCons appl_3 appl_5) Atom (B (False)) -> do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "shen.explode-h" kl_shen_explode_h)] _ -> throwError "if: expected boolean" in case kl_V3056 of kl_V3056@(Atom (Str "")) -> pat_cond_0 _ -> pat_cond_1 kl_cd :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_cd (!kl_V3058) = do !appl_0 <- let pat_cond_1 = do return (Core.Types.Atom (Core.Types.Str "")) pat_cond_2 = do do let !aw_3 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") kl_V3058 `pseq` applyWrapper aw_3 [kl_V3058, Core.Types.Atom (Core.Types.Str "/"), Core.Types.Atom (Core.Types.UnboundSym "shen.a")] in case kl_V3058 of kl_V3058@(Atom (Str "")) -> pat_cond_1 _ -> pat_cond_2 appl_0 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "*home-directory*")) appl_0 kl_for_each :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_for_each (!kl_V3061) (!kl_V3062) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3062 `pseq` eq appl_0 kl_V3062) case kl_if_1 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do let pat_cond_2 kl_V3062 kl_V3062h kl_V3062t = do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl__) -> do kl_V3061 `pseq` (kl_V3062t `pseq` kl_for_each kl_V3061 kl_V3062t)))) !appl_4 <- kl_V3062h `pseq` applyWrapper kl_V3061 [kl_V3062h] appl_4 `pseq` applyWrapper appl_3 [appl_4] pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "for-each" kl_for_each)] in case kl_V3062 of !(kl_V3062@(Cons (!kl_V3062h) (!kl_V3062t))) -> pat_cond_2 kl_V3062 kl_V3062h kl_V3062t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_fold_right :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_fold_right (!kl_V3066) (!kl_V3067) (!kl_V3068) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3067 `pseq` eq appl_0 kl_V3067) case kl_if_1 of Atom (B (True)) -> do return kl_V3068 Atom (B (False)) -> do let pat_cond_2 kl_V3067 kl_V3067h kl_V3067t = do !appl_3 <- kl_V3066 `pseq` (kl_V3067t `pseq` (kl_V3068 `pseq` kl_fold_right kl_V3066 kl_V3067t kl_V3068)) kl_V3067h `pseq` (appl_3 `pseq` applyWrapper kl_V3066 [kl_V3067h, appl_3]) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "fold-right" kl_fold_right)] in case kl_V3067 of !(kl_V3067@(Cons (!kl_V3067h) (!kl_V3067t))) -> pat_cond_2 kl_V3067 kl_V3067h kl_V3067t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_fold_left :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_fold_left (!kl_V3072) (!kl_V3073) (!kl_V3074) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3074 `pseq` eq appl_0 kl_V3074) case kl_if_1 of Atom (B (True)) -> do return kl_V3073 Atom (B (False)) -> do let pat_cond_2 kl_V3074 kl_V3074h kl_V3074t = do !appl_3 <- kl_V3073 `pseq` (kl_V3074h `pseq` applyWrapper kl_V3072 [kl_V3073, kl_V3074h]) kl_V3072 `pseq` (appl_3 `pseq` (kl_V3074t `pseq` kl_fold_left kl_V3072 appl_3 kl_V3074t)) pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_5 [ApplC (wrapNamed "fold-left" kl_fold_left)] in case kl_V3074 of !(kl_V3074@(Cons (!kl_V3074h) (!kl_V3074t))) -> pat_cond_2 kl_V3074 kl_V3074h kl_V3074t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_filter :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_filter (!kl_V3077) (!kl_V3078) = do let !appl_0 = Atom Nil kl_V3077 `pseq` (appl_0 `pseq` (kl_V3078 `pseq` kl_shen_filter_h kl_V3077 appl_0 kl_V3078)) kl_shen_filter_h :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_filter_h (!kl_V3088) (!kl_V3089) (!kl_V3090) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3090 `pseq` eq appl_0 kl_V3090) case kl_if_1 of Atom (B (True)) -> do kl_V3089 `pseq` kl_reverse kl_V3089 Atom (B (False)) -> do !kl_if_2 <- let pat_cond_3 kl_V3090 kl_V3090h kl_V3090t = do !kl_if_4 <- kl_V3090h `pseq` applyWrapper kl_V3088 [kl_V3090h] case kl_if_4 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" pat_cond_5 = do do return (Atom (B False)) in case kl_V3090 of !(kl_V3090@(Cons (!kl_V3090h) (!kl_V3090t))) -> pat_cond_3 kl_V3090 kl_V3090h kl_V3090t _ -> pat_cond_5 case kl_if_2 of Atom (B (True)) -> do !appl_6 <- kl_V3090 `pseq` hd kl_V3090 !appl_7 <- appl_6 `pseq` (kl_V3089 `pseq` klCons appl_6 kl_V3089) !appl_8 <- kl_V3090 `pseq` tl kl_V3090 kl_V3088 `pseq` (appl_7 `pseq` (appl_8 `pseq` kl_shen_filter_h kl_V3088 appl_7 appl_8)) Atom (B (False)) -> do let pat_cond_9 kl_V3090 kl_V3090h kl_V3090t = do kl_V3088 `pseq` (kl_V3089 `pseq` (kl_V3090t `pseq` kl_shen_filter_h kl_V3088 kl_V3089 kl_V3090t)) pat_cond_10 = do do let !aw_11 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_11 [ApplC (wrapNamed "shen.filter-h" kl_shen_filter_h)] in case kl_V3090 of !(kl_V3090@(Cons (!kl_V3090h) (!kl_V3090t))) -> pat_cond_9 kl_V3090 kl_V3090h kl_V3090t _ -> pat_cond_10 _ -> throwError "if: expected boolean" _ -> throwError "if: expected boolean" kl_map :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_map (!kl_V3093) (!kl_V3094) = do let !appl_0 = Atom Nil kl_V3093 `pseq` (kl_V3094 `pseq` (appl_0 `pseq` kl_shen_map_h kl_V3093 kl_V3094 appl_0)) kl_shen_map_h :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_map_h (!kl_V3100) (!kl_V3101) (!kl_V3102) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3101 `pseq` eq appl_0 kl_V3101) case kl_if_1 of Atom (B (True)) -> do kl_V3102 `pseq` kl_reverse kl_V3102 Atom (B (False)) -> do let pat_cond_2 kl_V3101 kl_V3101h kl_V3101t = do !appl_3 <- kl_V3101h `pseq` applyWrapper kl_V3100 [kl_V3101h] !appl_4 <- appl_3 `pseq` (kl_V3102 `pseq` klCons appl_3 kl_V3102) kl_V3100 `pseq` (kl_V3101t `pseq` (appl_4 `pseq` kl_shen_map_h kl_V3100 kl_V3101t appl_4)) pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "shen.map-h" kl_shen_map_h)] in case kl_V3101 of !(kl_V3101@(Cons (!kl_V3101h) (!kl_V3101t))) -> pat_cond_2 kl_V3101 kl_V3101h kl_V3101t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_length :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_length (!kl_V3104) = do kl_V3104 `pseq` kl_shen_length_h kl_V3104 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_shen_length_h :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_length_h (!kl_V3107) (!kl_V3108) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3107 `pseq` eq appl_0 kl_V3107) case kl_if_1 of Atom (B (True)) -> do return kl_V3108 Atom (B (False)) -> do do !appl_2 <- kl_V3107 `pseq` tl kl_V3107 !appl_3 <- kl_V3108 `pseq` add kl_V3108 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_2 `pseq` (appl_3 `pseq` kl_shen_length_h appl_2 appl_3) _ -> throwError "if: expected boolean" kl_occurrences :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_occurrences (!kl_V3120) (!kl_V3121) = do !kl_if_0 <- kl_V3121 `pseq` (kl_V3120 `pseq` eq kl_V3121 kl_V3120) case kl_if_0 of Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) Atom (B (False)) -> do let pat_cond_1 kl_V3121 kl_V3121h kl_V3121t = do !appl_2 <- kl_V3120 `pseq` (kl_V3121h `pseq` kl_occurrences kl_V3120 kl_V3121h) !appl_3 <- kl_V3120 `pseq` (kl_V3121t `pseq` kl_occurrences kl_V3120 kl_V3121t) appl_2 `pseq` (appl_3 `pseq` add appl_2 appl_3) pat_cond_4 = do do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) in case kl_V3121 of !(kl_V3121@(Cons (!kl_V3121h) (!kl_V3121t))) -> pat_cond_1 kl_V3121 kl_V3121h kl_V3121t _ -> pat_cond_4 _ -> throwError "if: expected boolean" kl_nth :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_nth (!kl_V3130) (!kl_V3131) = do !kl_if_0 <- let pat_cond_1 = do let pat_cond_2 kl_V3131 kl_V3131h kl_V3131t = do return (Atom (B True)) pat_cond_3 = do do return (Atom (B False)) in case kl_V3131 of !(kl_V3131@(Cons (!kl_V3131h) (!kl_V3131t))) -> pat_cond_2 kl_V3131 kl_V3131h kl_V3131t _ -> pat_cond_3 pat_cond_4 = do do return (Atom (B False)) in case kl_V3130 of kl_V3130@(Atom (N (KI 1))) -> pat_cond_1 _ -> pat_cond_4 case kl_if_0 of Atom (B (True)) -> do kl_V3131 `pseq` hd kl_V3131 Atom (B (False)) -> do let pat_cond_5 kl_V3131 kl_V3131h kl_V3131t = do !appl_6 <- kl_V3130 `pseq` Primitives.subtract kl_V3130 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_6 `pseq` (kl_V3131t `pseq` kl_nth appl_6 kl_V3131t) pat_cond_7 = do do let !aw_8 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_8 [ApplC (wrapNamed "nth" kl_nth)] in case kl_V3131 of !(kl_V3131@(Cons (!kl_V3131h) (!kl_V3131t))) -> pat_cond_5 kl_V3131 kl_V3131h kl_V3131t _ -> pat_cond_7 _ -> throwError "if: expected boolean" kl_integerP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_integerP (Atom (N (KI _))) = return (Atom (B True)) kl_integerP (Atom (N (KD d))) = return (Atom (B (fromInteger (round d) == d))) kl_integerP !v = return (Atom (B False)) kl_shen_abs :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_abs (!kl_V3135) = do !kl_if_0 <- kl_V3135 `pseq` greaterThan kl_V3135 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) case kl_if_0 of Atom (B (True)) -> do return kl_V3135 Atom (B (False)) -> do do kl_V3135 `pseq` Primitives.subtract (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_V3135 _ -> throwError "if: expected boolean" kl_shen_magless :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_magless (!kl_V3138) (!kl_V3139) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Nx2) -> do !kl_if_1 <- kl_Nx2 `pseq` (kl_V3138 `pseq` greaterThan kl_Nx2 kl_V3138) case kl_if_1 of Atom (B (True)) -> do return kl_V3139 Atom (B (False)) -> do do kl_V3138 `pseq` (kl_Nx2 `pseq` kl_shen_magless kl_V3138 kl_Nx2) _ -> throwError "if: expected boolean"))) !appl_2 <- kl_V3139 `pseq` multiply kl_V3139 (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) appl_2 `pseq` applyWrapper appl_0 [appl_2] kl_shen_integer_testP :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_integer_testP (!kl_V3145) (!kl_V3146) = do let pat_cond_0 = do return (Atom (B True)) pat_cond_1 = do !kl_if_2 <- kl_V3145 `pseq` greaterThan (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V3145 case kl_if_2 of Atom (B (True)) -> do return (Atom (B False)) Atom (B (False)) -> do do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Abs_N) -> do !kl_if_4 <- kl_Abs_N `pseq` greaterThan (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_Abs_N case kl_if_4 of Atom (B (True)) -> do kl_V3145 `pseq` kl_integerP kl_V3145 Atom (B (False)) -> do do kl_Abs_N `pseq` (kl_V3146 `pseq` kl_shen_integer_testP kl_Abs_N kl_V3146) _ -> throwError "if: expected boolean"))) !appl_5 <- kl_V3145 `pseq` (kl_V3146 `pseq` Primitives.subtract kl_V3145 kl_V3146) appl_5 `pseq` applyWrapper appl_3 [appl_5] _ -> throwError "if: expected boolean" in case kl_V3145 of kl_V3145@(Atom (N (KI 0))) -> pat_cond_0 _ -> pat_cond_1 kl_mapcan :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_mapcan (!kl_V3151) (!kl_V3152) = do let !appl_0 = Atom Nil !kl_if_1 <- appl_0 `pseq` (kl_V3152 `pseq` eq appl_0 kl_V3152) case kl_if_1 of Atom (B (True)) -> do return (Atom Nil) Atom (B (False)) -> do let pat_cond_2 kl_V3152 kl_V3152h kl_V3152t = do !appl_3 <- kl_V3152h `pseq` applyWrapper kl_V3151 [kl_V3152h] !appl_4 <- kl_V3151 `pseq` (kl_V3152t `pseq` kl_mapcan kl_V3151 kl_V3152t) appl_3 `pseq` (appl_4 `pseq` kl_append appl_3 appl_4) pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error") applyWrapper aw_6 [ApplC (wrapNamed "mapcan" kl_mapcan)] in case kl_V3152 of !(kl_V3152@(Cons (!kl_V3152h) (!kl_V3152t))) -> pat_cond_2 kl_V3152 kl_V3152h kl_V3152t _ -> pat_cond_5 _ -> throwError "if: expected boolean" kl_EqEq :: Core.Types.KLValue -> Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_EqEq (!kl_V3164) (!kl_V3165) = do !kl_if_0 <- kl_V3165 `pseq` (kl_V3164 `pseq` eq kl_V3165 kl_V3164) case kl_if_0 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_abort :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_abort = do simpleError (Core.Types.Atom (Core.Types.Str "")) kl_boundP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_boundP (!kl_V3167) = do !kl_if_0 <- kl_V3167 `pseq` kl_symbolP kl_V3167 case kl_if_0 of Atom (B (True)) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Val) -> do let pat_cond_2 = do return (Atom (B False)) pat_cond_3 = do do return (Atom (B True)) in case kl_Val of kl_Val@(Atom (UnboundSym "shen.this-symbol-is-unbound")) -> pat_cond_2 kl_Val@(ApplC (PL "shen.this-symbol-is-unbound" _)) -> pat_cond_2 kl_Val@(ApplC (Func "shen.this-symbol-is-unbound" _)) -> pat_cond_2 _ -> pat_cond_3))) let !appl_4 = ApplC (PL "thunk" (do return (Core.Types.Atom (Core.Types.UnboundSym "shen.this-symbol-is-unbound")))) !appl_5 <- kl_V3167 `pseq` (appl_4 `pseq` kl_valueDivor kl_V3167 appl_4) !kl_if_6 <- appl_5 `pseq` applyWrapper appl_1 [appl_5] case kl_if_6 of Atom (B (True)) -> do return (Atom (B True)) Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" Atom (B (False)) -> do do return (Atom (B False)) _ -> throwError "if: expected boolean" kl_shen_string_RBbytes :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_string_RBbytes (!kl_V3169) = do let pat_cond_0 = do return (Atom Nil) pat_cond_1 = do do !appl_2 <- kl_V3169 `pseq` pos kl_V3169 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) !appl_3 <- appl_2 `pseq` stringToN appl_2 !appl_4 <- kl_V3169 `pseq` tlstr kl_V3169 !appl_5 <- appl_4 `pseq` kl_shen_string_RBbytes appl_4 appl_3 `pseq` (appl_5 `pseq` klCons appl_3 appl_5) in case kl_V3169 of kl_V3169@(Atom (Str "")) -> pat_cond_0 _ -> pat_cond_1 kl_maxinferences :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_maxinferences (!kl_V3171) = do kl_V3171 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*maxinferences*")) kl_V3171 kl_inferences :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_inferences = do value (Core.Types.Atom (Core.Types.UnboundSym "shen.*infs*")) kl_protect :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_protect (!kl_V3173) = do return kl_V3173 kl_stoutput :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_stoutput = do value (Core.Types.Atom (Core.Types.UnboundSym "*stoutput*")) kl_sterror :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_sterror = do value (Core.Types.Atom (Core.Types.UnboundSym "shen.*sterror*")) kl_string_RBsymbol :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_string_RBsymbol (!kl_V3175) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Symbol) -> do !kl_if_1 <- kl_Symbol `pseq` kl_symbolP kl_Symbol case kl_if_1 of Atom (B (True)) -> do return kl_Symbol Atom (B (False)) -> do do let !aw_2 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_3 <- kl_V3175 `pseq` applyWrapper aw_2 [kl_V3175, Core.Types.Atom (Core.Types.Str " to a symbol"), Core.Types.Atom (Core.Types.UnboundSym "shen.s")] !appl_4 <- appl_3 `pseq` cn (Core.Types.Atom (Core.Types.Str "cannot intern ")) appl_3 appl_4 `pseq` simpleError appl_4 _ -> throwError "if: expected boolean"))) !appl_5 <- kl_V3175 `pseq` intern kl_V3175 appl_5 `pseq` applyWrapper appl_0 [appl_5] kl_optimise :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_optimise (!kl_V3181) = do let pat_cond_0 = do klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*optimise*")) (Atom (B True)) pat_cond_1 = do klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*optimise*")) (Atom (B False)) pat_cond_2 = do do simpleError (Core.Types.Atom (Core.Types.Str "optimise expects a + or a -.\n")) in case kl_V3181 of kl_V3181@(Atom (UnboundSym "+")) -> pat_cond_0 kl_V3181@(ApplC (PL "+" _)) -> pat_cond_0 kl_V3181@(ApplC (Func "+" _)) -> pat_cond_0 kl_V3181@(Atom (UnboundSym "-")) -> pat_cond_1 kl_V3181@(ApplC (PL "-" _)) -> pat_cond_1 kl_V3181@(ApplC (Func "-" _)) -> pat_cond_1 _ -> pat_cond_2 kl_os :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_os = do value (Core.Types.Atom (Core.Types.UnboundSym "*os*")) kl_language :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_language = do value (Core.Types.Atom (Core.Types.UnboundSym "*language*")) kl_version :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_version = do value (Core.Types.Atom (Core.Types.UnboundSym "*version*")) kl_port :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_port = do value (Core.Types.Atom (Core.Types.UnboundSym "*port*")) kl_porters :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_porters = do value (Core.Types.Atom (Core.Types.UnboundSym "*porters*")) kl_implementation :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_implementation = do value (Core.Types.Atom (Core.Types.UnboundSym "*implementation*")) kl_release :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_release = do value (Core.Types.Atom (Core.Types.UnboundSym "*release*")) kl_packageP :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_packageP (!kl_V3183) = do (do !appl_0 <- kl_V3183 `pseq` kl_external kl_V3183 appl_0 `pseq` kl_do appl_0 (Atom (B True))) `catchError` (\(!kl_E) -> do return (Atom (B False))) kl_function :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_function (!kl_V3185) = do kl_V3185 `pseq` kl_shen_lookup_func kl_V3185 kl_shen_lookup_func :: Core.Types.KLValue -> Core.Types.KLContext Core.Types.Env Core.Types.KLValue kl_shen_lookup_func (!kl_V3187) = do let !appl_0 = ApplC (PL "thunk" (do let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app") !appl_2 <- kl_V3187 `pseq` applyWrapper aw_1 [kl_V3187, Core.Types.Atom (Core.Types.Str " has no lambda expansion\n"), Core.Types.Atom (Core.Types.UnboundSym "shen.a")] appl_2 `pseq` simpleError appl_2)) !appl_3 <- value (Core.Types.Atom (Core.Types.UnboundSym "*property-vector*")) kl_V3187 `pseq` (appl_0 `pseq` (appl_3 `pseq` kl_getDivor kl_V3187 (Core.Types.Atom (Core.Types.UnboundSym "shen.lambda-form")) appl_0 appl_3)) expr2 :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue expr2 = do (do return (Core.Types.Atom (Core.Types.Str "Copyright (c) 2015, Mark Tarver\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of Mark Tarver may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY Mark Tarver ''AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL Mark Tarver BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."))) `catchError` (\(!kl_E) -> do return (Core.Types.Atom (Core.Types.Str "E")))