shithub: MicroHs

Download patch

ref: bbfe54d2d3a3d49d9183eb93eb3fa2a522a0d0bf
parent: dc47672c5d59ec63dcfa3a45a53682240911555d
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Mon Sep 18 15:31:03 EDT 2023

More Copyright

--- a/comb/mhs.comb
+++ b/comb/mhs.comb
@@ -1,3 +1,3 @@
 v3.4
-827
-(($A :0 ((_623 _575) (($B ((($S' ($C ((($C' ($S' _623)) (($B ($C _2)) _560)) (($B ($B (_623 _652))) ((($C' ($C' $C)) ((($C' ($S' ($C' $C))) ((($C' ($C' ($C' $C))) ((($C' ($C' ($C' ($C' $S')))) (($B ($B ($B ($B $C)))) ((($C' ($C' ($C' $B))) (($B ($B ($B ($C' $S)))) ((($C' ($C' ($C' ($C' $C)))) ((($C' ($C' ($C' ($C' ($C' $S'))))) (($B ($B ($B ($B ($B $C))))) ((($C' ($C' ($C' ($C' ($C' $C))))) ((($C' ($C' ($C' $B))) (($B ($B ($B ($C' ($C' $S'))))) ((($C' ($C' ($C' ($C' ($C' $C'))))) ((($C' ($C' ($C' ($S' ($C' $C'))))) (($B ($B ($B ($B $B')))) ((($S' $B) ($B' ($B' (($B ($S' $B)) (($B ($B _624)) ((($C' $B) (($B _721) (($B _642) ((($C' _758) _8) 0)))) (($B (_721 _645)) (($B (_658 "top level defns: ")) _604)))))))) ((($S' $B) ($B' (($B ($C' $B)) (($B $B') (($B ($B _624)) ((($C' $B) (($B _721) (($B _642) ((($C' _758) _8) 1)))) (_641 ($T (($B ($B (_721 _645))) ((($C' $B) (($B _658) ((($C' _658) _565) " = "))) _392)))))))))) ((($C' $B) ((($S' $C') (($B $C') (($B $C') _9))) ((($S' $B) (($B ($C' ($C' _624))) ((($C' $B) ($B' (($B _721) (($B _647) _11)))) (($B _658) ((($C' _658) (($B (_658 _1)) _604)) (($O 10) $K)))))) (($B ($B (_623 _652))) ((($C' $B) ($B' (($B _721) (($B _642) ((($C' _758) _8) 0))))) (($B ($B (_721 _645))) ((($C' ($C' _658)) (($B ($B (_658 "final pass            "))) (($B ($B (_618 6))) (($B ($B _604)) _752)))) "ms"))))))) _3))))) (($B (($C' $C) (($B ($C _663)) _392))) (($C _676) (_693 0))))) (($B ($C $B)) (($B ($B ($C $B))) (($B ($B $BK)) ((($C' ($C' ($C' ($C' _658)))) (($B ($C' ($C' _658))) ((($C' ($C' ($C' _658))) (($B (($C' $B) (($B _658) ((($C' _658) (($B (_658 "(($A :")) _604)) (($O 32) $K))))) ($B _392))) ") "))) (($O 41) $K)))))))) $T)) (($B $Y) ((($C' ($C' $S)) ((($C' ($C' $S)) ((($C' $B) $P) ((($S' ($C' $B)) ($B _368)) $I))) ($BK $K))) $K))))) (($B (($S' _721) (($B _718) (($B (_721 _765)) (($B (_658 "main: findIdent: ")) _565))))) (($C' _594) _562)))) _601))) (($B ($B _598)) ((($C' $B) (($B _660) (($B $T) (($B ($C $B)) (($B ($B $BK)) ((($C' ($C' ($C' $O))) ($B (($C' $P) _562))) $K)))))) (($C _676) (_693 0))))))) ($T $A))) ($T $K))) $I)) (($B (_721 _367)) (($B (_721 _560)) (($B (_658 (($O 95) $K))) _604)))))))) (($S (($S ((($S' _7) (($B _675) (_662 (_616 "-v")))) ((_692 _616) "-r"))) (($B (_656 (($O 46) $K))) (($B _720) (_661 ((_680 _743) "-i")))))) (($B (_721 _687)) ((($C' _658) (($B _720) (_661 ((_680 _743) "-o")))) (($O "out.comb") $K))))) (($B (($S (($C ((($C' _754) _675) 1)) (_765 "Usage: mhs [-v] [-r] [-iPATH] [-oFILE] ModuleName"))) _687)) (_662 ((_722 _763) ((_722 (_616 (($O 45) $K))) (_673 1))))))) (_683 ((_722 _763) (_616 "--")))))) (($A :1 "v3.4\10&") (($A :2 ((($S' ($S' _623)) _16) (($B ($B ($B (_623 _652)))) ((($C' ($C' $B)) (($B ($B ($C' (($S' _624) (($B (_721 _643)) (($B (_721 (_674 1000000))) _192)))))) (($B ($B ($B ($B (_623 _652))))) ((($C' $B) (($B ($C' $B)) (($B ($B ($C' _624))) ((($C' $B) ($B' (($B _721) (($B _642) ((($C' _758) _8) 0))))) (($B ($B (_721 _645))) ((($C' ($C' _658)) (($B ($B (_658 "combinator conversion "))) (($B ($B (_618 6))) (($B ($B _604)) _752)))) "ms")))))) (($B ($B _625)) (($B $P) (($C _568) (_560 "main")))))))) (_660 ($T ((($C' ($C' $O)) ((($C' $B) $P) _395)) $K))))))) (($A :3 ($T (($C ((($C' $C') (($B ($S' ($B (_623 _575)))) (($B ($B ($B (($C' _576) ((($C' _747) (($B _675) (_683 ((_722 _763) (_616 "--"))))) 1))))) (($B ($B ($B (_721 _6)))) ($C $C))))) (($B ($B $Y)) (($B ($B ($B _551))) (($C' ($C' _660)) (($B ($B $T)) ((($C' ($C' ($C' ($C' $O)))) (($B ($B (($C' $B) $P))) ($B _4))) $K))))))) (($B (($S' _721) (($B _718) (($B (_721 _765)) (($B (_658 "not found ")) _565))))) ($C _552))))) (($A :4 ((($C' $C) ((($S' $C) ((($C' ($C' $S')) (($S $P) ((($S' ($C' $B)) (($B ($B _6)) _4)) _4))) ($BK $K))) ((($C' ($S' $C)) ((($C' ($C' $C)) (($B (($C' $C) (($B ($P _6)) $K))) ((($C' $B) _4) _394))) (($B (_721 (_718 (_765 "primlookup")))) (($C (_698 _616)) _5)))) $K))) (_765 "trans: impossible"))) (($A :5 (($O (($P (($O 66) $K)) $B)) (($O (($P (($O 79) $K)) $O)) (($O (($P (($O 75) $K)) $K)) (($O (($P "C'") $C')) (($O (($P (($O 67) $K)) $C)) (($O (($P (($O 65) $K)) $A)) (($O (($P "
\ No newline at end of file
+828
+(($A :0 ((_624 _576) (($B ((($S' ($C ((($C' ($S' _624)) (($B ($C _2)) _560)) (($B ($B (_624 _653))) ((($C' ($C' $C)) ((($C' ($S' ($C' $C))) ((($C' ($C' ($C' $C))) ((($C' ($C' ($C' ($C' $S')))) (($B ($B ($B ($B $C)))) ((($C' ($C' ($C' $B))) (($B ($B ($B ($C' $S)))) ((($C' ($C' ($C' ($C' $C)))) ((($C' ($C' ($C' ($C' ($C' $S'))))) (($B ($B ($B ($B ($B $C))))) ((($C' ($C' ($C' ($C' ($C' $C))))) ((($C' ($C' ($C' $B))) (($B ($B ($B ($C' ($C' $S'))))) ((($C' ($C' ($C' ($C' ($C' $C'))))) ((($C' ($C' ($C' ($S' ($C' $C'))))) (($B ($B ($B ($B $B')))) ((($S' $B) ($B' ($B' (($B ($S' $B)) (($B ($B _625)) ((($C' $B) (($B _722) (($B _643) ((($C' _759) _8) 0)))) (($B (_722 _646)) (($B (_659 "top level defns: ")) _605)))))))) ((($S' $B) ($B' (($B ($C' $B)) (($B $B') (($B ($B _625)) ((($C' $B) (($B _722) (($B _643) ((($C' _759) _8) 1)))) (_642 ($T (($B ($B (_722 _646))) ((($C' $B) (($B _659) ((($C' _659) _566) " = "))) _392)))))))))) ((($C' $B) ((($S' $C') (($B $C') (($B $C') _9))) ((($S' $B) (($B ($C' ($C' _625))) ((($C' $B) ($B' (($B _722) (($B _648) _11)))) (($B _659) ((($C' _659) (($B (_659 _1)) _605)) (($O 10) $K)))))) (($B ($B (_624 _653))) ((($C' $B) ($B' (($B _722) (($B _643) ((($C' _759) _8) 0))))) (($B ($B (_722 _646))) ((($C' ($C' _659)) (($B ($B (_659 "final pass            "))) (($B ($B (_619 6))) (($B ($B _605)) _753)))) "ms"))))))) _3))))) (($B (($C' $C) (($B ($C _664)) _392))) (($C _677) (_694 0))))) (($B ($C $B)) (($B ($B ($C $B))) (($B ($B $BK)) ((($C' ($C' ($C' ($C' _659)))) (($B ($C' ($C' _659))) ((($C' ($C' ($C' _659))) (($B (($C' $B) (($B _659) ((($C' _659) (($B (_659 "(($A :")) _605)) (($O 32) $K))))) ($B _392))) ") "))) (($O 41) $K)))))))) $T)) (($B $Y) ((($C' ($C' $S)) ((($C' ($C' $S)) ((($C' $B) $P) ((($S' ($C' $B)) ($B _368)) $I))) ($BK $K))) $K))))) (($B (($S' _722) (($B _719) (($B (_722 _766)) (($B (_659 "main: findIdent: ")) _566))))) (($C' _595) _563)))) _602))) (($B ($B _599)) ((($C' $B) (($B _661) (($B $T) (($B ($C $B)) (($B ($B $BK)) ((($C' ($C' ($C' $O))) ($B (($C' $P) _563))) $K)))))) (($C _677) (_694 0))))))) ($T $A))) ($T $K))) $I)) (($B (_722 _367)) (($B (_722 _560)) (($B (_659 (($O 95) $K))) _605)))))))) (($S (($S ((($S' _7) (($B _676) (_663 (_617 "-v")))) ((_693 _617) "-r"))) (($B (_657 (($O 46) $K))) (($B _721) (_662 ((_681 _744) "-i")))))) (($B (_722 _688)) ((($C' _659) (($B _721) (_662 ((_681 _744) "-o")))) (($O "out.comb") $K))))) (($B (($S (($C ((($C' _755) _676) 1)) (_766 "Usage: mhs [-v] [-r] [-iPATH] [-oFILE] ModuleName"))) _688)) (_663 ((_723 _764) ((_723 (_617 (($O 45) $K))) (_674 1))))))) (_684 ((_723 _764) (_617 "--")))))) (($A :1 "v3.4\10&") (($A :2 ((($S' ($S' _624)) _16) (($B ($B ($B (_624 _653)))) ((($C' ($C' $B)) (($B ($B ($C' (($S' _625) (($B (_722 _644)) (($B (_722 (_675 1000000))) _192)))))) (($B ($B ($B ($B (_624 _653))))) ((($C' $B) (($B ($C' $B)) (($B ($B ($C' _625))) ((($C' $B) ($B' (($B _722) (($B _643) ((($C' _759) _8) 0))))) (($B ($B (_722 _646))) ((($C' ($C' _659)) (($B ($B (_659 "combinator conversion "))) (($B ($B (_619 6))) (($B ($B _605)) _753)))) "ms")))))) (($B ($B _626)) (($B $P) (($C _569) (_560 "main")))))))) (_661 ($T ((($C' ($C' $O)) ((($C' $B) $P) _395)) $K))))))) (($A :3 ($T (($C ((($C' $C') (($B ($S' ($B (_624 _576)))) (($B ($B ($B (($C' _577) ((($C' _748) (($B _676) (_684 ((_723 _764) (_617 "--"))))) 1))))) (($B ($B ($B (_722 _6)))) ($C $C))))) (($B ($B $Y)) (($B ($B ($B _551))) (($C' ($C' _661)) (($B ($B $T)) ((($C' ($C' ($C' ($C' $O)))) (($B ($B (($C' $B) $P))) ($B _4))) $K))))))) (($B (($S' _722) (($B _719) (($B (_722 _766)) (($B (_659 "not found ")) _566))))) ($C _552))))) (($A :4 ((($C' $C) ((($S' $C) ((($C' ($C' $S')) (($S $P) ((($S' ($C' $B)) (($B ($B _6)) _4)) _4))) ($BK $K))) ((($C' ($S' $C)) ((($C' ($C' $C)) (($B (($C' $C) (($B ($P _6)) $K))) ((($C' $B) _4) _394))) (($B (_722 (_719 (_766 "primlookup")))) (($C (_699 _617)) _5)))) $K))) (_766 "trans: impossible"))) (($A :5 (($O (($P (($O 66) $K)) $B)) (($O (($P (($O 79) $K)) $O)) (($O (($P (($O 75) $K)) $K)) (($O (($P "C'") $C')) (($O (($P (($O 67) $K)) $C)) (($O (($P (($O 65) $K)) $A)) (($O (($P "
\ No newline at end of file
--- a/lib/System/Console/SimpleReadline.hs
+++ b/lib/System/Console/SimpleReadline.hs
@@ -1,3 +1,8 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+--
+-- Simple readline with line editing and history.
+-- Only assumes the terminal is capable of (sane) backspace.
 module System.Console.SimpleReadline(
   getInputLine,
   getInputLineHist
@@ -5,6 +10,8 @@
 import Primitives
 import Prelude
 
+-- Get an input line with editing.
+-- Return Nothing if the input is ^D, otherwise the typed string.
 getInputLine :: String -> IO (Maybe String)
 getInputLine prompt = do
   putStr prompt
@@ -11,6 +18,10 @@
   (_, r) <- loop ([],[]) "" ""
   return r
 
+
+-- Get an input line with editing.
+-- Return Nothing if the input is ^D, otherwise the typed string.
+-- The FilePath gives the name of a file that stores the history.
 getInputLineHist :: FilePath -> String -> IO (Maybe String)
 getInputLineHist hfn prompt = do
   mhdl <- openFileM hfn ReadMode
--- a/src/MicroHs/Ident.hs
+++ b/src/MicroHs/Ident.hs
@@ -1,3 +1,5 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
 module MicroHs.Ident(
   Line, Col, Loc,
   Ident(..),
--- a/src/MicroHs/TypeCheck.hs
+++ b/src/MicroHs/TypeCheck.hs
@@ -1,3 +1,5 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
 {-# OPTIONS_GHC -Wno-incomplete-uni-patterns -Wno-unused-imports #-}
 module MicroHs.TypeCheck(
   typeCheck,
--