Commit 189393d1 authored by andy's avatar andy
Browse files

[project @ 2000-05-11 07:20:36 by andy]

Wibble...

The corrected example is as follows:

myS :: (forall t t1 t2. (t -> t2 -> t1) -> (t -> t2) -> t -> t1)
[NoDiscard] __AL 3
myS
  = \ @ t @ t1 @ t2 f :: (t -> t2 -> t1) g :: (t -> t2) x :: t -> f x (g x)

public class myS implements Code {
  public Object ENTER () {
    VM.COLLECT(3, this);
    final Object f = VM.POP();
    final Object g = VM.POP();
    final Object x = VM.POP();
    VM.PUSH(x);
    VM.PUSH(new Thunk(new myS$1(g, x)));
    return f;
  }
}
class myS$1 extends Code {
  final Object g;
  final Object x;
  public myS$1 (Object _g_, Object _x_) {
    g = _g_;
    x = _x_;
  }
  public Object ENTER () {
    VM.PUSH(x);
    return g;
  }
}
parent 53a7fa7d
......@@ -599,9 +599,12 @@ new env@(Env _ pairs) typ args Nothing =
new env typ [] (Just inner) =
-- anon. inner class
do { innerName <- genAnonInnerClassName
; frees <- liftClass env innerName inner [] []
; return (mkNew env typ [ Var name | name <- frees ])
; frees <- liftClass env innerName inner [unType typ] []
; return (New (Type [innerName]) [ Var name | name <- frees ] Nothing)
}
where unType (Type [name]) = name
unType _ = error "incorrect type style"
new env typ _ (Just inner) = error "cant handle inner class with args"
liftClass :: Env -> Name -> [Decl] -> [Name] -> [Name] -> LifterM [ Name ]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment