diff --git a/content/blog/00_aoc_coq.md b/content/blog/00_aoc_coq.md index 92df9a4..b1c6e34 100644 --- a/content/blog/00_aoc_coq.md +++ b/content/blog/00_aoc_coq.md @@ -2,6 +2,7 @@ title: "Advent of Code in Coq - Day 1" date: 2020-12-02T18:44:56-08:00 tags: ["Advent of Code", "Coq"] +series: "Advent of Code in Coq" favorite: true --- diff --git a/content/blog/00_compiler_intro.md b/content/blog/00_compiler_intro.md index 6f05391..eceaf8a 100644 --- a/content/blog/00_compiler_intro.md +++ b/content/blog/00_compiler_intro.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 0 - Intro date: 2019-08-03T01:02:30-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this first post of a larger series, we embark on a journey of developing a compiler for a lazily evaluated functional language." --- During my last academic term, I was enrolled in a compilers course. diff --git a/content/blog/00_cs325_languages_hw1.md b/content/blog/00_cs325_languages_hw1.md index c004485..d3859a7 100644 --- a/content/blog/00_cs325_languages_hw1.md +++ b/content/blog/00_cs325_languages_hw1.md @@ -2,6 +2,7 @@ title: A Language for an Assignment - Homework 1 date: 2019-12-27T23:27:09-08:00 tags: ["Haskell", "Python", "Algorithms", "Programming Languages"] +series: "A Language for an Assignment" --- On a rainy Oregon day, I was walking between classes with a group of friends. diff --git a/content/blog/00_types_intro.md b/content/blog/00_types_intro.md index 17452c5..2835bf6 100644 --- a/content/blog/00_types_intro.md +++ b/content/blog/00_types_intro.md @@ -2,6 +2,7 @@ title: "Everything I Know About Types: Introduction" date: 2022-06-26T18:36:01-07:00 tags: ["Type Systems", "Programming Languages"] +series: "Everything I Know About Types" draft: true --- diff --git a/content/blog/01_aoc_coq.md b/content/blog/01_aoc_coq.md index 0342415..7bf637e 100644 --- a/content/blog/01_aoc_coq.md +++ b/content/blog/01_aoc_coq.md @@ -2,6 +2,7 @@ title: "Advent of Code in Coq - Day 8" date: 2021-01-10T22:48:39-08:00 tags: ["Advent of Code", "Coq"] +series: "Advent of Code in Coq" --- Huh? We're on day 8? What happened to days 2 through 7? diff --git a/content/blog/01_compiler_tokenizing.md b/content/blog/01_compiler_tokenizing.md index 8ec846f..a5ebce4 100644 --- a/content/blog/01_compiler_tokenizing.md +++ b/content/blog/01_compiler_tokenizing.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 1 - Tokenizing date: 2019-08-03T01:02:30-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we tackle the first component of our compiler: tokenizing." --- It makes sense to build a compiler bit by bit, following the stages we outlined in diff --git a/content/blog/01_cs325_languages_hw2.md b/content/blog/01_cs325_languages_hw2.md index 2b347fb..45d17c2 100644 --- a/content/blog/01_cs325_languages_hw2.md +++ b/content/blog/01_cs325_languages_hw2.md @@ -2,6 +2,7 @@ title: A Language for an Assignment - Homework 2 date: 2019-12-30T20:05:10-08:00 tags: ["Haskell", "Python", "Algorithms", "Programming Languages"] +series: "A Language for an Assignment" --- After the madness of the diff --git a/content/blog/01_types_basics.md b/content/blog/01_types_basics.md index 171132b..1a2e7af 100644 --- a/content/blog/01_types_basics.md +++ b/content/blog/01_types_basics.md @@ -2,6 +2,7 @@ title: "Everything I Know About Types: Basics" date: 2022-06-30T19:08:50-07:00 tags: ["Type Systems", "Programming Languages"] +series: "Everything I Know About Types" draft: true --- diff --git a/content/blog/02_compiler_parsing.md b/content/blog/02_compiler_parsing.md index 7f9948b..6b0247c 100644 --- a/content/blog/02_compiler_parsing.md +++ b/content/blog/02_compiler_parsing.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 2 - Parsing date: 2019-08-03T01:02:30-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we combine our compiler's tokenizer with a parser, allowing us to extract structure from input source code." --- In the previous post, we covered tokenizing. We learned how to convert an input string into logical segments, and even wrote up a tokenizer to do it according to the rules of our language. Now, it's time to make sense of the tokens, and parse our language. diff --git a/content/blog/02_cs325_languages_hw3.md b/content/blog/02_cs325_languages_hw3.md index c398fbe..ce032de 100644 --- a/content/blog/02_cs325_languages_hw3.md +++ b/content/blog/02_cs325_languages_hw3.md @@ -2,6 +2,7 @@ title: A Language for an Assignment - Homework 3 date: 2020-01-02T22:17:43-08:00 tags: ["Haskell", "Python", "Algorithms", "Programming Languages"] +series: "A Language for an Assignment" --- It rained in Sunriver on New Year's Eve, and it continued to rain diff --git a/content/blog/02_types_variables.md b/content/blog/02_types_variables.md index 8e55eb2..bd3ea14 100644 --- a/content/blog/02_types_variables.md +++ b/content/blog/02_types_variables.md @@ -2,6 +2,7 @@ title: "Everything I Know About Types: Variables" date: 2022-08-28T19:05:31-07:00 tags: ["Type Systems", "Programming Languages"] +series: "Everything I Know About Types" draft: true --- diff --git a/content/blog/03_compiler_typechecking.md b/content/blog/03_compiler_typechecking.md index 9d8db4c..95c0659 100644 --- a/content/blog/03_compiler_typechecking.md +++ b/content/blog/03_compiler_typechecking.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 3 - Type Checking date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we allow our compiler to throw away invalid programs, detected using a monomorphic typechecking algorithm." --- I think tokenizing and parsing are boring. The thing is, looking at syntax diff --git a/content/blog/04_compiler_improvements.md b/content/blog/04_compiler_improvements.md index fbfdccc..29b7616 100644 --- a/content/blog/04_compiler_improvements.md +++ b/content/blog/04_compiler_improvements.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 4 - Small Improvements date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we take a little break from pushing our compiler forward to make some improvements to the code we've written so far." --- We've done quite a big push in the previous post. We defined diff --git a/content/blog/05_compiler_execution.md b/content/blog/05_compiler_execution.md index 83abd88..94edb91 100644 --- a/content/blog/05_compiler_execution.md +++ b/content/blog/05_compiler_execution.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 5 - Execution date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we define the rules for a G-machine, the abstract machine that we will target with our compiler." --- {{< gmachine_css >}} diff --git a/content/blog/06_compiler_compilation.md b/content/blog/06_compiler_compilation.md index 1c95f3a..b1acdec 100644 --- a/content/blog/06_compiler_compilation.md +++ b/content/blog/06_compiler_compilation.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 6 - Compilation date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we enable our compiler to convert programs written in our functional language to G-machine instructions." --- In the previous post, we defined a machine for graph reduction, diff --git a/content/blog/07_compiler_runtime.md b/content/blog/07_compiler_runtime.md index 97f3c7b..053ebd7 100644 --- a/content/blog/07_compiler_runtime.md +++ b/content/blog/07_compiler_runtime.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 7 - Runtime date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we implement the supporting code that will be shared between all executables our compiler will create." --- Wikipedia has the following definition for a __runtime__: diff --git a/content/blog/08_compiler_llvm.md b/content/blog/08_compiler_llvm.md index b3f261a..9cd129f 100644 --- a/content/blog/08_compiler_llvm.md +++ b/content/blog/08_compiler_llvm.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 8 - LLVM date: 2019-10-30T22:16:22-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we enable our compiler to convert G-machine instructions to LLVM IR, which finally allows us to generate working executables." --- diff --git a/content/blog/09_compiler_garbage_collection.md b/content/blog/09_compiler_garbage_collection.md index 2db28b6..78dae40 100644 --- a/content/blog/09_compiler_garbage_collection.md +++ b/content/blog/09_compiler_garbage_collection.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 9 - Garbage Collection date: 2020-02-10T19:22:41-08:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we implement a garbage collector that frees memory no longer used by the executables our compiler creates." --- diff --git a/content/blog/10_compiler_polymorphism.md b/content/blog/10_compiler_polymorphism.md index 2e314ff..d861e64 100644 --- a/content/blog/10_compiler_polymorphism.md +++ b/content/blog/10_compiler_polymorphism.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 10 - Polymorphism date: 2020-03-25T17:14:20-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we extend our compiler's typechecking algorithm to implement the Hindley-Milner type system, allowing for polymorphic functions." favorite: true --- diff --git a/content/blog/11_compiler_polymorphic_data_types.md b/content/blog/11_compiler_polymorphic_data_types.md index 97486fe..0db7cab 100644 --- a/content/blog/11_compiler_polymorphic_data_types.md +++ b/content/blog/11_compiler_polymorphic_data_types.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 11 - Polymorphic Data Types date: 2020-04-14T19:05:42-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we enable our compiler to understand polymorphic data types." --- [In part 10]({{< relref "10_compiler_polymorphism.md" >}}), we managed to get our diff --git a/content/blog/12_compiler_let_in_lambda/index.md b/content/blog/12_compiler_let_in_lambda/index.md index 648f384..35fdf5f 100644 --- a/content/blog/12_compiler_let_in_lambda/index.md +++ b/content/blog/12_compiler_let_in_lambda/index.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 12 - Let/In and Lambdas date: 2020-06-21T00:50:07-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we extend our language with let/in expressions and lambda functions." --- diff --git a/content/blog/13_compiler_cleanup/index.md b/content/blog/13_compiler_cleanup/index.md index cee0746..fd640bb 100644 --- a/content/blog/13_compiler_cleanup/index.md +++ b/content/blog/13_compiler_cleanup/index.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 13 - Cleanup date: 2020-09-19T16:14:13-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +series: "Compiling a Functional Language using C++" description: "In this post, we clean up our compiler." --- diff --git a/content/blog/typesafe_interpreter.md b/content/blog/typesafe_interpreter.md index 66d306b..ea6da5b 100644 --- a/content/blog/typesafe_interpreter.md +++ b/content/blog/typesafe_interpreter.md @@ -2,6 +2,7 @@ title: Meaningfully Typechecking a Language in Idris date: 2020-02-27T21:58:55-08:00 tags: ["Haskell", "Idris", "Programming Languages"] +series: "Meaningfully Typechecking a Language in Idris" --- This term, I'm a TA for Oregon State University's Programming Languages course. diff --git a/content/blog/typesafe_interpreter_revisited.md b/content/blog/typesafe_interpreter_revisited.md index 5deaeb9..dc5a50d 100644 --- a/content/blog/typesafe_interpreter_revisited.md +++ b/content/blog/typesafe_interpreter_revisited.md @@ -2,6 +2,7 @@ title: Meaningfully Typechecking a Language in Idris, Revisited date: 2020-07-22T14:37:35-07:00 tags: ["Idris", "Programming Languages"] +series: "Meaningfully Typechecking a Language in Idris" favorite: true --- diff --git a/content/blog/typesafe_interpreter_tuples.md b/content/blog/typesafe_interpreter_tuples.md index 2c28dc0..e5f8019 100644 --- a/content/blog/typesafe_interpreter_tuples.md +++ b/content/blog/typesafe_interpreter_tuples.md @@ -2,6 +2,7 @@ title: Meaningfully Typechecking a Language in Idris, With Tuples date: 2020-08-12T15:48:04-07:00 tags: ["Idris", "Programming Languages"] +series: "Meaningfully Typechecking a Language in Idris" --- Some time ago, I wrote a post titled