Meta => null,
The_Function => Unquote,
The_Operand => Read_Form);
+ elsif MT.Symbol = ACL.Commercial_At then
+ return new Mal_Type'
+ (Sym_Type => Unitary,
+ Meta => null,
+ The_Function => Deref,
+ The_Operand => Read_Form);
else
return MT;
end if;
when Splice_Unquote =>
return
"(splice-unquote " & To_String (T.The_Operand.all) & ")";
+ when Deref =>
+ return
+ "(deref " & To_String (T.The_Operand.all) & ")";
end case;
when Error =>
return To_String (T.Error_Msg);
type Sym_Types is (Int, Floating, List, Sym, Str, Atom, Unitary, Error);
- type Unitary_Functions is (Quote, Unquote, Quasiquote, Splice_Unquote);
+ type Unitary_Functions is
+ (Quote, Unquote, Quasiquote, Splice_Unquote, Deref);
type List_Types is (List_List, Vector_List, Hashed_List);
function Opening (LT : List_Types) return Character;