make, swift3: fix parsing empty literal sequences.
[jackhill/mal.git] / bash / step4_if_fn_do.sh
index dd0db03..e701e9f 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 source $(dirname $0)/reader.sh
 source $(dirname $0)/printer.sh
@@ -25,7 +25,7 @@ EVAL_AST () {
     vector)
         _map_with_type _vector EVAL "${ast}" "${env}" ;;
     hash_map)
-        local res="" val="" hm="${ANON["${ast}"]}"
+        local res="" key= val="" hm="${ANON["${ast}"]}"
         _hash_map; local new_hm="${r}"
         eval local keys="\${!${hm}[@]}"
         for key in ${keys}; do
@@ -51,6 +51,8 @@ EVAL () {
     fi
 
     # apply list
+    _empty? "${ast}" && r="${ast}" && return
+
     _nth "${ast}" 0; local a0="${r}"
     _nth "${ast}" 1; local a1="${r}"
     _nth "${ast}" 2; local a2="${r}"
@@ -59,7 +61,7 @@ EVAL () {
               [[ "${__ERROR}" ]] && return 1
               ENV_SET "${env}" "${a1}" "${r}"
               return ;;
-        let*) ENV "${env}"; local let_env="${r}"
+        let__STAR__) ENV "${env}"; local let_env="${r}"
               local let_pairs=(${ANON["${a1}"]})
               local idx=0
               #echo "let: [${let_pairs[*]}] for ${a2}"
@@ -90,7 +92,7 @@ EVAL () {
                   EVAL "${a2}" "${env}"
               fi
               return ;;
-        fn*)  _function "ENV \"${env}\" \"${a1}\" \"\${@}\"; \
+        fn__STAR__)  _function "ENV \"${env}\" \"${a1}\" \"\${@}\"; \
                          EVAL \"${a2}\" \"\${r}\""
               return ;;
         *)    EVAL_AST "${ast}" "${env}"