From 04d85f632bfb1486c610b124294dbdd0a5063375 Mon Sep 17 00:00:00 2001 From: Ambrose Bonnaire-Sergeant Date: Fri, 23 Aug 2024 13:54:34 -0500 Subject: [PATCH] paper --- paper/paper.pdf | Bin 179418 -> 179179 bytes paper/paper.tex | 7 +++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index 5cc970682ce53adb829429b65d20e0e40997300d..08b58dccc9757331024997457d955323377517a8 100644 GIT binary patch delta 12060 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 C^P+?R delta 12340 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 diff --git a/paper/paper.tex b/paper/paper.tex index 281a1bb..eb31631 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -927,10 +927,9 @@ \subsection{Deletion} \section{Reimplementation in Clojure} -We reimplemented~\footnote{\url{https://github.com/frenchy64/optimized-kw-maps}} -the \texttt{PersistentHashMap} class from -the Clojure standard library in Clojure---it was originally -written in Java. +We ported~\footnote{\url{https://github.com/frenchy64/hamt-tutorial}} +the \texttt{PersistentHashMap} Java class from +the Clojure standard library to pure Clojure. This is not the first reimplementation. ClojureScript features similar pure-Clojure port in its standard library, and several other languages have ported their own versions