diff --git a/changelog b/changelog
index 29c2f46..c184379 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080917 wsp src/algebra/mkfunc.spad add parse to InputForm
 20080917 tpd books/bookvol10.2 remove duplicate function def in FLAGG	
 20080916 tpd books/ps/v102streamaggregate.ps
 20080916 tpd books/ps/v102listaggregate.ps
diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet
index 6a34b58..6f7c67a 100644
--- a/src/algebra/mkfunc.spad.pamphlet
+++ b/src/algebra/mkfunc.spad.pamphlet
@@ -68,6 +68,8 @@ InputForm():
       ++ unparse(f) returns a string s such that the parser
       ++ would transform s to f.
       ++ Error: if f is not the parsed form of a string.
+    parse : String -> %
+      ++ parse is the inverse of unparse. It parses a string to InputForm.
     declare  : List %   -> Symbol
       ++ declare(t) returns a name f such that f has been
       ++ declared to the interpreter to be of type t, but has
@@ -139,6 +141,9 @@ InputForm():
       atom?(s:% := form2String(x)$Lisp) => strsym s
       concat [strsym a for a in destruct s]
 
+    parse(s:String):% ==
+      ncParseFromString(s)$Lisp
+
     declare signature ==
       declare(name := new()$Symbol, signature)$Lisp
       name
