|
|
@ -10,14 +10,14 @@ module Crisp |
|
|
|
when Nil then "nil" |
|
|
|
when Bool then value.to_s |
|
|
|
when Int32 then value.to_s |
|
|
|
when Crisp::List then "(#{value.map{|v| ">pr_str(v, @print_readably) as String}.join(" ")})" |
|
|
|
when Crisp::Vector then "[#{value.map{|v| ">pr_str(v, @print_readably) as String}.join(" ")}]" |
|
|
|
when Crisp::List then "(#{value.map{|v| b">print(v) as String}.join(" ")})" |
|
|
|
when Crisp::Vector then "[#{value.map{|v| b">print(v) as String}.join(" ")}]" |
|
|
|
when Crisp::Symbol then value.str.to_s |
|
|
|
when Crisp::Func then "<function>" |
|
|
|
when Crisp::Closure then "<closure>" |
|
|
|
when Crisp::HashMap |
|
|
|
# step1_read_print.cr requires specifying type |
|
|
|
"{#{value.map{|k, v| "#{">pr_str(k, @print_readably)} #{">pr_str(v, @print_readably)}" as String}.join(" ")}}" |
|
|
|
"{#{value.map{|k, v| "#{b">print(k)} #{b">print(v)}"}.join(" ")}}" |
|
|
|
when String |
|
|
|
case |
|
|
|
when value.empty?() |
|
|
@ -28,14 +28,14 @@ module Crisp |
|
|
|
@print_readably ? value.inspect : value |
|
|
|
end |
|
|
|
when Crisp::Atom |
|
|
|
"(atom #{">pr_str(value.val, @print_readably)})" |
|
|
|
"(atom #{b">print(value.val)})" |
|
|
|
else |
|
|
|
raise "invalid CrispType: #{value.to_s}" |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def print(t : Crisp::Type) |
|
|
|
print(t.unwrap, @print_readably) + (t.macro? ? " (macro)" : "") |
|
|
|
print(t.unwrap) + (t.macro? ? " (macro)" : "") |
|
|
|
end |
|
|
|
end |
|
|
|
end |