alms 0.6.0 → 0.6.1
raw patch · 10 files changed
+50/−28 lines, 10 files
Files
- Makefile +1/−1
- README +18/−12
- TODO +0/−3
- alms.cabal +1/−1
- ghc6-quasis.sh +8/−0
- src/AST/Ident.hs +2/−2
- src/Data/Empty.hs +7/−3
- src/Makefile +8/−3
- src/Statics/Rename.hs +2/−2
- src/Util/UndoIO.hs +3/−1
Makefile view
@@ -63,7 +63,7 @@ $(RM) html -VERSION = 0.6.0+VERSION = 0.6.1 DISTDIR = alms-$(VERSION) TARBALL = $(DISTDIR).tar.gz
README view
@@ -14,8 +14,8 @@ GETTING STARTED - Alms requires GHC to build. It is known to work with GHC 6.12.1 and- 6.10.4, and likely no longer works with GHC 6.8.+ Alms requires GHC to build. It is known to work with GHC 7.0.2, and+ and likely no longer works with GHC 6. Provided that a recent ghc is in your path, to build on UNIX it ought to be be sufficient to type:@@ -89,7 +89,7 @@ You can load libraries from the command line like this: - % ./alms -l libsocketcap+ % ./alms -lsocketcap Or from within the REPL like this: @@ -99,11 +99,9 @@ REPL about identifiers: #- #i list Exn *- type +`a list : a = Cons of `a * `a list | Nil- -- built-in- module Exn- -- defined at "lib/libbasis.alms" (line 2, col. 3 to line 23, col. 3)- type +`a * +`b : a \/ b -- built-in+ type +`a list : `a = (::) of `a * `a list | ([]) -- built-in+ module Exn -- defined at lib/libbasis.alms:198:1-32+ type +`a * +`b : `a \/ `b -- built-in val ( * ) : int -> int -> int -- built-in @@ -117,10 +115,10 @@ \forall \exists \lambda all ex fun (binders) \alpha 'a (unlimited type variable) \hat\alpha `a (affine type variable)- \to^A -o (affine arrow)- \to^{\hat\alpha} -[a]> (arrow with qualifier)- \sqcup \sqcap \/ /\ (qualifier join and meet)- \pm \baro + - = * + - (variances)+ \to^A -A> (affine arrow)+ \to^{\hat\alpha} -a> (arrow with qualifier)+ \sqcup \/ (qualifier join)+ \pm \baro + - = 0 + - (variances) EDITLINE TROUBLE@@ -133,9 +131,17 @@ % make clean; make FLAGS=-editline + or++ % cabal install --flags="-editline" alms+ - Use readline instead: % make clean; make FLAGS=readline++ or++ % cabal install --flags="readline" alms - Try to install editline or readline . . .
TODO view
@@ -1,4 +1,1 @@ - some termination checking for type operators- - remove direct dependency of Parser on Sigma (! patterns)- - row types for protocols- - type inference
alms.cabal view
@@ -1,5 +1,5 @@ Name: alms-Version: 0.6.0+Version: 0.6.1 Copyright: 2011, Jesse A. Tov Cabal-Version: >= 1.8 License: BSD3
+ ghc6-quasis.sh view
@@ -0,0 +1,8 @@+#!/bin/sh++# Dirty hack to turn GHC 7 quasiquote syntax (e.g. "[ex|") into+# GHC 6 ("[$ex|"). This relies on the fact that all my quasiquoters+# have alphanumeric names of at least two characters (which+# distinguishes them from built-in TH quasiquotes such as "[d|").++exec sed 's/\[\([a-z][a-zA-Z0-9][a-zA-Z0-9]*\)|/[$\1|/g' "$2" > "$3"
src/AST/Ident.hs view
@@ -360,8 +360,8 @@ showsPrec p (LidAnti a) = showsPrec p a instance Show (Uid i) where- showsPrec _ (Uid _ s@('?':_)) = showString s- showsPrec _ (Uid _ s) = showsIdent s+ showsPrec _ (Uid _ s@(':':_)) = showChar '(' . showString s . showChar ')'+ showsPrec _ (Uid _ s) = showString s showsPrec p (UidAnti a) = showsPrec p a -- | Show an identifier with parens if necessary
src/Data/Empty.hs view
@@ -3,17 +3,21 @@ Empty, elimEmpty, elimEmptyF, ) where -import Data.Generics (Typeable, Data)+import Data.Generics (Typeable, Data(..), mkDataType) import Unsafe.Coerce (unsafeCoerce) -- | An uninhabited type data Empty deriving Typeable -deriving instance Data Empty+instance Data Empty where+ gfoldl _ _ = elimEmpty+ gunfold _ _ _ = error "Empty.gunfold"+ toConstr = elimEmpty+ dataTypeOf _ = mkDataType "Data.Empty" [] -- | Elimination for 'Empty' elimEmpty ∷ Empty → a-elimEmpty = const undefined+elimEmpty = const (error "elimEmpty") -- | Elimination for 'Empty' under any functor, implemented as a no-op. elimEmptyF ∷ Functor f ⇒ f Empty → f a
src/Makefile view
@@ -21,17 +21,21 @@ HSBOOT_SRC = AST/*.hs-boot Statics/*.hs-boot HCOPTS = -W -Wall -O0 $(EDITING) $(PARSEC) $(HIOPTS)-HIOPTS = $(NOWARN) $(IMPARR) $(UNICODE) $(LANGUAGE)+HIOPTS = $(NOWARN) $(UNICODE) $(LANGUAGE) EDITING = -DUSE_READLINE=System.Console.Editline.Readline PARSEC = -DPARSEC_VERSION=3-# IMPARR = -DANNOTATION_PRINTING_RULE=Rule0 NOWARN = -fno-warn-unused-do-bind -fno-warn-orphans UNICODE = -DUNICODE LANGUAGE= `sed 's/^/-X/' extensions.txt` +PROFILING = -prof -auto-all -osuf p_o -rtsopts+ $(EXE) $(EXE)-%: $(SRC) $(GHC) -o $@ --make Main.hs $(HCOPTS) +$(EXE)_p: $(EXE)+ $(GHC) -o $@ --make Main.hs $(HCOPTS) $(PROFILING)+ %.hi: $(HS_SRC) $(HSBOOT_SRC) $(GHC) --make `echo "$*" | sed 's@\.@/@g'`.hs $(HCOPTS) @@ -39,8 +43,8 @@ $(GHCI) \*`echo "$*" | sed 's@\.@/@g'` $(HIOPTS) $(EXE)-%: GHC = ghc-$*-$(EXE)-6.8.%: EDITING = -DUSE_READLINE=System.Console.Readline $(EXE)-6.%: PARSEC = -DPARSEC_VERSION=2+$(EXE)-6.%: HCOPTS += -F -pgmF ../ghc6-quasis.sh not-compiled: @find . -name \*.hs | sed 's@^\./@@' | while read hs; do \@@ -51,6 +55,7 @@ clean: $(RM) $(HS_SRC:.hs=.hi) $(HS_SRC:.hs=.o) $(RM) $(HSBOOT_SRC:.hs-boot=.hi-boot) $(HSBOOT_SRC:.hs-boot=.o-boot)+ $(RM) $(HS_SRC:.hs=.p_o) $(HSBOOT_SRC:.hs-boot=.p_o-boot) *.prof $(RM) $(EXE) $(EXE)-6.* wc.%:
src/Statics/Rename.hs view
@@ -603,10 +603,10 @@ Nothing -> return () Just (u, _) -> repeated "Data constructor" u "type declaration" []- cons' <- forM cons $ \(u, mt) -> withLocation mt $ do+ cons' <- forM cons $ \(u, mt) -> do -- XXX Why trivial? let u' = renTrivial u- tell [MdDatacon (getLoc mt) u u']+ tell [MdDatacon (getLoc note) u u'] mt' <- traverse renameType mt return (u', mt') return (tdDat l' tvs' cons')
src/Util/UndoIO.hs view
@@ -22,11 +22,13 @@ = UndoIO { unUndoIO ∷ IORef [IO ()] → IO a }- deriving Functor instance Applicative UndoIO where pure = return (<*>) = ap++instance Functor UndoIO where+ fmap = liftM instance Monad UndoIO where return = UndoIO . const . return