rename deflocal localVar
This commit is contained in:
@@ -236,7 +236,7 @@ class Macros {
|
|||||||
var uniqueVarSymbol = b.symbol();
|
var uniqueVarSymbol = b.symbol();
|
||||||
|
|
||||||
b.begin([
|
b.begin([
|
||||||
b.call(b.symbol("deflocal"), [
|
b.call(b.symbol("localVar"), [
|
||||||
b.meta("mut", b.typed("Dynamic", uniqueVarSymbol)),
|
b.meta("mut", b.typed("Dynamic", uniqueVarSymbol)),
|
||||||
b.symbol("null")
|
b.symbol("null")
|
||||||
]),
|
]),
|
||||||
@@ -277,7 +277,7 @@ class Macros {
|
|||||||
|
|
||||||
b.begin([
|
b.begin([
|
||||||
b.call(
|
b.call(
|
||||||
b.symbol("deflocal"), [
|
b.symbol("localVar"), [
|
||||||
b.meta("mut", b.typed("Dynamic", uniqueVarSymbol)),
|
b.meta("mut", b.typed("Dynamic", uniqueVarSymbol)),
|
||||||
b.symbol("null")
|
b.symbol("null")
|
||||||
]),
|
]),
|
||||||
|
@@ -178,9 +178,10 @@ class SpecialForms {
|
|||||||
}
|
}
|
||||||
|
|
||||||
map["deflocal"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
|
map["deflocal"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
|
||||||
wholeExp.checkNumArgs(2, 3, "(deflocal [optional :type] [variable] [optional: &mut] [value])");
|
wholeExp.checkNumArgs(2, 3, "(localVar [optional :type] [variable] [optional: &mut] [value])");
|
||||||
EVars(toVars(args[0], args[1], k)).withMacroPosOf(wholeExp);
|
EVars(toVars(args[0], args[1], k)).withMacroPosOf(wholeExp);
|
||||||
};
|
};
|
||||||
|
renameAndDeprecate("deflocal", "localVar");
|
||||||
|
|
||||||
map["let"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
|
map["let"] = (wholeExp:ReaderExp, args:Array<ReaderExp>, k:KissState) -> {
|
||||||
wholeExp.checkNumArgs(2, null, "(let [[bindings...]] [body...])");
|
wholeExp.checkNumArgs(2, null, "(let [[bindings...]] [body...])");
|
||||||
|
@@ -174,7 +174,7 @@
|
|||||||
(defvar myAnd3 (and 5 false 6))
|
(defvar myAnd3 (and 5 false 6))
|
||||||
|
|
||||||
(defun mySetLocal []
|
(defun mySetLocal []
|
||||||
(deflocal &mut loc "one thing")
|
(localVar &mut loc "one thing")
|
||||||
(set loc "another thing")
|
(set loc "another thing")
|
||||||
loc)
|
loc)
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@
|
|||||||
(defvar myNot2 !5)
|
(defvar myNot2 !5)
|
||||||
|
|
||||||
(defvar myFilteredList (begin
|
(defvar myFilteredList (begin
|
||||||
(deflocal l [-1 -2 5 -3 6])
|
(localVar l [-1 -2 5 -3 6])
|
||||||
(l.filter (lambda [v] (< 0 v)))))
|
(l.filter (lambda [v] (< 0 v)))))
|
||||||
|
|
||||||
(defvar myWhen1 (when true 5 6))
|
(defvar myWhen1 (when true 5 6))
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
(Assert.equals 10 (last myListOfTen)))
|
(Assert.equals 10 (last myListOfTen)))
|
||||||
|
|
||||||
(defun _testListDestructuring []
|
(defun _testListDestructuring []
|
||||||
(deflocal [a b c d &mut e f g h i j] myListOfTen)
|
(localVar [a b c d &mut e f g h i j] myListOfTen)
|
||||||
(Assert.equals 1 a)
|
(Assert.equals 1 a)
|
||||||
(Assert.equals 2 b)
|
(Assert.equals 2 b)
|
||||||
(Assert.equals 3 c)
|
(Assert.equals 3 c)
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
(defvar myMetaList [myListOfTen myListOfTen myListOfTen])
|
(defvar myMetaList [myListOfTen myListOfTen myListOfTen])
|
||||||
|
|
||||||
(defun _testDoFor []
|
(defun _testDoFor []
|
||||||
(deflocal &mut c 0)
|
(localVar &mut c 0)
|
||||||
(doFor v myListOfTen
|
(doFor v myListOfTen
|
||||||
(Assert.equals (+ c 1) v)
|
(Assert.equals (+ c 1) v)
|
||||||
(set c v))
|
(set c v))
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
(Assert.equals 10 j)))
|
(Assert.equals 10 j)))
|
||||||
|
|
||||||
(defun _testFor []
|
(defun _testFor []
|
||||||
(deflocal incrementedList (for v myListOfTen (+ 1 v)))
|
(localVar incrementedList (for v myListOfTen (+ 1 v)))
|
||||||
(let [[a b c d e f g h i j] incrementedList]
|
(let [[a b c d e f g h i j] incrementedList]
|
||||||
(Assert.equals 2 a)
|
(Assert.equals 2 a)
|
||||||
(Assert.equals 3 b)
|
(Assert.equals 3 b)
|
||||||
@@ -264,7 +264,7 @@
|
|||||||
(Assert.equals 9 h)
|
(Assert.equals 9 h)
|
||||||
(Assert.equals 10 i)
|
(Assert.equals 10 i)
|
||||||
(Assert.equals 11 j))
|
(Assert.equals 11 j))
|
||||||
(deflocal smallerMetaList (for [a b c d e f g h i j] myMetaList [a e i]))
|
(localVar smallerMetaList (for [a b c d e f g h i j] myMetaList [a e i]))
|
||||||
(doFor [a e i] smallerMetaList
|
(doFor [a e i] smallerMetaList
|
||||||
(Assert.equals 1 a)
|
(Assert.equals 1 a)
|
||||||
(Assert.equals 5 e)
|
(Assert.equals 5 e)
|
||||||
@@ -276,7 +276,7 @@
|
|||||||
(Assert.equals 6 (or c 6))) // (or [optionalVar] [defaultValue]) is the convention for default values
|
(Assert.equals 6 (or c 6))) // (or [optionalVar] [defaultValue]) is the convention for default values
|
||||||
|
|
||||||
(defun myRestSum [firstOne &rest :List<Int> others]
|
(defun myRestSum [firstOne &rest :List<Int> others]
|
||||||
(deflocal &mut sum firstOne)
|
(localVar &mut sum firstOne)
|
||||||
(doFor nextOne others (set sum (+ sum nextOne)))
|
(doFor nextOne others (set sum (+ sum nextOne)))
|
||||||
sum)
|
sum)
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
(defvar myRest3 (myRestSum 1 2 2))
|
(defvar myRest3 (myRestSum 1 2 2))
|
||||||
|
|
||||||
(defun myCombinedOptRest [firstOne &opt secondOne &rest :List<String> thirdAndMore]
|
(defun myCombinedOptRest [firstOne &opt secondOne &rest :List<String> thirdAndMore]
|
||||||
(deflocal &mut concatString (+ firstOne (or secondOne "boop")))
|
(localVar &mut concatString (+ firstOne (or secondOne "boop")))
|
||||||
(doFor str thirdAndMore (set concatString (+ concatString str)))
|
(doFor str thirdAndMore (set concatString (+ concatString str)))
|
||||||
concatString)
|
concatString)
|
||||||
|
|
||||||
@@ -376,7 +376,7 @@
|
|||||||
(otherwise (Assert.fail))))
|
(otherwise (Assert.fail))))
|
||||||
|
|
||||||
(defun _testMaps []
|
(defun _testMaps []
|
||||||
(deflocal :Map<String,String> myMap [=>"hey" "you"
|
(localVar :Map<String,String> myMap [=>"hey" "you"
|
||||||
=>"found" "me"])
|
=>"found" "me"])
|
||||||
(Assert.equals "you" (dictGet myMap "hey"))
|
(Assert.equals "you" (dictGet myMap "hey"))
|
||||||
(Assert.equals "me" (dictGet myMap "found"))
|
(Assert.equals "me" (dictGet myMap "found"))
|
||||||
@@ -391,7 +391,7 @@
|
|||||||
|
|
||||||
(defun _testRange []
|
(defun _testRange []
|
||||||
// With just one arg, it's the max:
|
// With just one arg, it's the max:
|
||||||
(deflocal &mut :kiss.List<Int> myList (for i (range 5) i))
|
(localVar &mut :kiss.List<Int> myList (for i (range 5) i))
|
||||||
(Assert.equals 4 (nth myList -1))
|
(Assert.equals 4 (nth myList -1))
|
||||||
// with two args, they are min and max:
|
// with two args, they are min and max:
|
||||||
(set myList (for i (range 3 5) i))
|
(set myList (for i (range 3 5) i))
|
||||||
@@ -429,9 +429,9 @@
|
|||||||
|
|
||||||
(defvar &mut welcomeCount 0)
|
(defvar &mut welcomeCount 0)
|
||||||
(defmacro macroWithLogic [name]
|
(defmacro macroWithLogic [name]
|
||||||
(deflocal message1 (ReaderExp.StrExp "Welcome "))
|
(localVar message1 (ReaderExp.StrExp "Welcome "))
|
||||||
(deflocal message2 (ReaderExp.StrExp " (Guest #"))
|
(localVar message2 (ReaderExp.StrExp " (Guest #"))
|
||||||
(deflocal message3 (ReaderExp.StrExp ")"))
|
(localVar message3 (ReaderExp.StrExp ")"))
|
||||||
|
|
||||||
`(begin (set welcomeCount (+ welcomeCount 1))
|
`(begin (set welcomeCount (+ welcomeCount 1))
|
||||||
(+ ,message1 ,name ,message2 (Std.string welcomeCount) ,message3)))
|
(+ ,message1 ,name ,message2 (Std.string welcomeCount) ,message3)))
|
||||||
@@ -446,7 +446,7 @@
|
|||||||
(Assert.equals "you" (dictGet map "hey"))))
|
(Assert.equals "you" (dictGet map "hey"))))
|
||||||
|
|
||||||
(defun _testAssignArith []
|
(defun _testAssignArith []
|
||||||
(deflocal &mut num 5)
|
(localVar &mut num 5)
|
||||||
(+= num 5 6)
|
(+= num 5 6)
|
||||||
(Assert.equals 16 num)
|
(Assert.equals 16 num)
|
||||||
(%= num 5)
|
(%= num 5)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
(defun myFun []
|
(defun myFun []
|
||||||
(deflocal something 5)
|
(localVar something 5)
|
||||||
)
|
)
|
||||||
|
|
||||||
// This comment used to cause a hard-to-track-down error!
|
// This comment used to cause a hard-to-track-down error!
|
@@ -1,4 +1,4 @@
|
|||||||
(defun myFun []
|
(defun myFun []
|
||||||
(deflocal something 5)
|
(localVar something 5)
|
||||||
// This comment used to cause a hard-to-track-down error!
|
// This comment used to cause a hard-to-track-down error!
|
||||||
)
|
)
|
@@ -5,7 +5,7 @@
|
|||||||
(unless (<= 0 (line.indexOf "contain no other bags"))
|
(unless (<= 0 (line.indexOf "contain no other bags"))
|
||||||
(let [[containerStr contents] (line.split "contain ")
|
(let [[containerStr contents] (line.split "contain ")
|
||||||
contentStrs (contents.split ", ")]
|
contentStrs (contents.split ", ")]
|
||||||
(deflocal :Map<String,Int> innerMap (new Map))
|
(localVar :Map<String,Int> innerMap (new Map))
|
||||||
(doFor str contentStrs
|
(doFor str contentStrs
|
||||||
(let [parts (str.split " ")
|
(let [parts (str.split " ")
|
||||||
quantity (Std.parseInt (parts.shift))
|
quantity (Std.parseInt (parts.shift))
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
(defun totalChildBags [bag :ParentMap parentMap]
|
(defun totalChildBags [bag :ParentMap parentMap]
|
||||||
(if (parentMap.exists bag)
|
(if (parentMap.exists bag)
|
||||||
(begin
|
(begin
|
||||||
(deflocal &mut sum 0)
|
(localVar &mut sum 0)
|
||||||
(doFor =>childColor quantity (dictGet parentMap bag)
|
(doFor =>childColor quantity (dictGet parentMap bag)
|
||||||
(set sum (+ sum quantity (* quantity (totalChildBags childColor parentMap)))))
|
(set sum (+ sum quantity (* quantity (totalChildBags childColor parentMap)))))
|
||||||
sum)
|
sum)
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
(true fullSeat)))
|
(true fullSeat)))
|
||||||
|
|
||||||
(defun neighbors [x y :Array<Array<FerrySquare>> grid]
|
(defun neighbors [x y :Array<Array<FerrySquare>> grid]
|
||||||
(deflocal &mut n [])
|
(localVar &mut n [])
|
||||||
(doFor xx (range (- x 1) (+ x 2))
|
(doFor xx (range (- x 1) (+ x 2))
|
||||||
(doFor yy (range (- y 1) (+ y 2))
|
(doFor yy (range (- y 1) (+ y 2))
|
||||||
(unless (and (= x xx) (= y yy))
|
(unless (and (= x xx) (= y yy))
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
(defprop &mut :Array<Array<FerrySquare>> state [])
|
(defprop &mut :Array<Array<FerrySquare>> state [])
|
||||||
|
|
||||||
(defmethod simulate []
|
(defmethod simulate []
|
||||||
(deflocal changed (object changed false))
|
(localVar changed (object changed false))
|
||||||
(set state
|
(set state
|
||||||
(for rowIdx (range state.length)
|
(for rowIdx (range state.length)
|
||||||
(let [:Array<FerrySquare> row (nth state rowIdx)]
|
(let [:Array<FerrySquare> row (nth state rowIdx)]
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
(assert (= 673 (count (map (Util.readLines "src/year2020/inputs/day2-1.txt") (.bind Passwords.validateInputLine _ Passwords.parsePasswordCheck2)) (lambda [v] v)))))
|
(assert (= 673 (count (map (Util.readLines "src/year2020/inputs/day2-1.txt") (.bind Passwords.validateInputLine _ Passwords.parsePasswordCheck2)) (lambda [v] v)))))
|
||||||
|
|
||||||
(day 3
|
(day 3
|
||||||
(deflocal exampleHillTile [
|
(localVar exampleHillTile [
|
||||||
"..##......."
|
"..##......."
|
||||||
"#...#...#.."
|
"#...#...#.."
|
||||||
".#....#..#."
|
".#....#..#."
|
||||||
@@ -55,8 +55,8 @@
|
|||||||
(let [:kiss.List<Int> seatIds (map (Util.readLines "src/year2020/inputs/day5-1.txt") Seating.seatId)]
|
(let [:kiss.List<Int> seatIds (map (Util.readLines "src/year2020/inputs/day5-1.txt") Seating.seatId)]
|
||||||
(seatIds.sort (lambda [a b] (- a b)))
|
(seatIds.sort (lambda [a b] (- a b)))
|
||||||
(assert (= 947 (nth seatIds -1)))
|
(assert (= 947 (nth seatIds -1)))
|
||||||
(deflocal &mut lastId -1)
|
(localVar &mut lastId -1)
|
||||||
(deflocal &mut myId -1)
|
(localVar &mut myId -1)
|
||||||
(doFor id seatIds
|
(doFor id seatIds
|
||||||
(when (and (<= 0 lastId) !(= lastId (- id 1)))
|
(when (and (<= 0 lastId) !(= lastId (- id 1)))
|
||||||
(set myId (- id 1))
|
(set myId (- id 1))
|
||||||
@@ -71,11 +71,11 @@
|
|||||||
(assert (= 3122 (apply + (map (Util.readParagraphLines "src/year2020/inputs/day6-1.txt") Customs.countAllYes)))))
|
(assert (= 3122 (apply + (map (Util.readParagraphLines "src/year2020/inputs/day6-1.txt") Customs.countAllYes)))))
|
||||||
|
|
||||||
(day 7
|
(day 7
|
||||||
(deflocal parentMap (new ParentMap))
|
(localVar parentMap (new ParentMap))
|
||||||
(deflocal childMap (new ChildMap))
|
(localVar childMap (new ChildMap))
|
||||||
(doFor line (Util.readLines "src/year2020/inputs/day7.txt")
|
(doFor line (Util.readLines "src/year2020/inputs/day7.txt")
|
||||||
(Bags.parseRule line parentMap childMap))
|
(Bags.parseRule line parentMap childMap))
|
||||||
(deflocal :Map<String,Bool> shinyGoldParents (new Map))
|
(localVar :Map<String,Bool> shinyGoldParents (new Map))
|
||||||
(Bags.findIndirectContainers "shiny gold" childMap shinyGoldParents)
|
(Bags.findIndirectContainers "shiny gold" childMap shinyGoldParents)
|
||||||
(assert (= 172 (count shinyGoldParents)))
|
(assert (= 172 (count shinyGoldParents)))
|
||||||
(assert (= 39645 (Bags.totalChildBags "shiny gold" parentMap))))
|
(assert (= 39645 (Bags.totalChildBags "shiny gold" parentMap))))
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
(defun :kiss.List<Int> pairWithSum [sum :kiss.List<Int> numbers]
|
(defun :kiss.List<Int> pairWithSum [sum :kiss.List<Int> numbers]
|
||||||
// Put the numbers in a map for random access. This gives an O(n) solution
|
// Put the numbers in a map for random access. This gives an O(n) solution
|
||||||
(deflocal :Map<Int,Int> numbersMap (new Map))
|
(localVar :Map<Int,Int> numbersMap (new Map))
|
||||||
(doFor number numbers
|
(doFor number numbers
|
||||||
(dictSet numbersMap number (- sum number))
|
(dictSet numbersMap number (- sum number))
|
||||||
(let [requiredForPair (dictGet numbersMap number)]
|
(let [requiredForPair (dictGet numbersMap number)]
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
(defun contiguousSumTuple [sum :kiss.List<Int> numbers]
|
(defun contiguousSumTuple [sum :kiss.List<Int> numbers]
|
||||||
(doFor i (range numbers.length)
|
(doFor i (range numbers.length)
|
||||||
(deflocal &mut testSum (nth numbers i))
|
(localVar &mut testSum (nth numbers i))
|
||||||
(doFor j (range (+ i 1) numbers.length)
|
(doFor j (range (+ i 1) numbers.length)
|
||||||
(set testSum (+ testSum (nth numbers j)))
|
(set testSum (+ testSum (nth numbers j)))
|
||||||
(cond
|
(cond
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
(defun loadAll [:Array<String> paths :Function callback &opt :Array<PDFDocument> pdfs]
|
(defun loadAll [:Array<String> paths :Function callback &opt :Array<PDFDocument> pdfs]
|
||||||
(unless pdfs (set pdfs []))
|
(unless pdfs (set pdfs []))
|
||||||
(deflocal nextPdf (paths.shift))
|
(localVar nextPdf (paths.shift))
|
||||||
(if (nextPdf.endsWith ".pdf")
|
(if (nextPdf.endsWith ".pdf")
|
||||||
(awaitLet [pdf (PDFDocument.load (Fs.readFileSync (print nextPdf)))]
|
(awaitLet [pdf (PDFDocument.load (Fs.readFileSync (print nextPdf)))]
|
||||||
(pdfs.push pdf)
|
(pdfs.push pdf)
|
||||||
|
Reference in New Issue
Block a user