metasepi / idiomaticca

Translate IDIOMATIC C into human-readable ATS
http://metasepi.org/
GNU Affero General Public License v3.0
3 stars 0 forks source link

Translate regress/noinc/call_func #16

Closed master-q closed 5 years ago

master-q commented 5 years ago
$ cat regress/noinc/call_func/main.c
int func1(int a, int b) {
        return a + b;
}

int main() {
        int r;
        r = func1(1, 2);
        return r - 3;
}
$ stack run dumpc regress/noinc/call_func/main.c
CTranslUnit [
  CFDefExt (CFunDef [CTypeSpec (CIntType (NodeInfo ("": line 1) (("": line 1),3) (Name {nameId = 1})))] (
    CDeclr (Just (Ident "func1" 209435415 (NodeInfo ("": line 1) (("": line 1),5) (Name {nameId = 0}))))
      [CFunDeclr (Right ([
        CDecl
          [CTypeSpec (CIntType (NodeInfo ("": line 1) (("": line 1),3) (Name {nameId = 4})))]
          [(Just (CDeclr (Just (Ident "a" 97 (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 3})))) [] Nothing [] (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 5}))),Nothing,Nothing)]
          (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 6})),
        CDecl
          [CTypeSpec (CIntType (NodeInfo ("": line 1) (("": line 1),3) (Name {nameId = 8})))]
          [(Just (CDeclr (Just (Ident "b" 98 (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 7})))) [] Nothing [] (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 9}))),Nothing,Nothing)]
          (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 10}))
        ],False)) [] (NodeInfo ("": line 1) (("": line 1),1) (Name {nameId = 11}))]
      Nothing
      []
      (NodeInfo ("": line 1) (("": line 1),5) (Name {nameId = 2}))
  ) [] (CCompound [] [CBlockStmt (CReturn (Just (CBinary CAddOp (CVar (Ident "a" 97 (NodeInfo ("": line 2) (("": line 2),1) (Name {nameId = 12}))) (NodeInfo ("": line 2) (("": line 2),1) (Name {nameId = 13}))) (CVar (Ident "b" 98 (NodeInfo ("": line 2) (("": line 2),1) (Name {nameId = 14}))) (NodeInfo ("": line 2) (("": line 2),1) (Name {nameId = 15}))) (NodeInfo ("": line 2) (("": line 2),1) (Name {nameId = 16})))) (NodeInfo ("": line 2) (("": line 2),1) (Name {nameId = 17})))] (NodeInfo ("": line 1) (("": line 3),1) (Name {nameId = 18}))) (NodeInfo ("": line 1) (("": line 3),1) (Name {nameId = 19}))),
  CFDefExt (CFunDef [CTypeSpec (CIntType (NodeInfo ("": line 5) (("": line 5),3) (Name {nameId = 21})))] (
    CDeclr (Just (Ident "main" 232419565 (NodeInfo ("": line 5) (("": line 5),4) (Name {nameId = 20})))) [CFunDeclr (Right ([],False)) [] (NodeInfo ("": line 5) (("": line 5),1) (Name {nameId = 23}))] Nothing [] (NodeInfo ("": line 5) (("": line 5),4) (Name {nameId = 22}))) [] (CCompound [] [CBlockDecl (CDecl [CTypeSpec (CIntType (NodeInfo ("": line 6) (("": line 6),3) (Name {nameId = 25})))] [(Just (CDeclr (Just (Ident "r" 114 (NodeInfo ("": line 6) (("": line 6),1) (Name {nameId = 24})))) [] Nothing [] (NodeInfo ("": line 6) (("": line 6),1) (Name {nameId = 26}))),Nothing,Nothing)] (NodeInfo ("": line 6) (("": line 6),1) (Name {nameId = 27}))),CBlockStmt (CExpr (Just (CAssign CAssignOp (CVar (Ident "r" 114 (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 28}))) (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 29}))) (CCall (CVar (Ident "func1" 209435415 (NodeInfo ("": line 7) (("": line 7),5) (Name {nameId = 30}))) (NodeInfo ("": line 7) (("": line 7),5) (Name {nameId = 31}))) [CConst (CIntConst 1 (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 32}))),CConst (CIntConst 2 (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 33})))] (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 34}))) (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 35})))) (NodeInfo ("": line 7) (("": line 7),1) (Name {nameId = 36}))),CBlockStmt (CReturn (Just (CBinary CSubOp (CVar (Ident "r" 114 (NodeInfo ("": line 8) (("": line 8),1) (Name {nameId = 37}))) (NodeInfo ("": line 8) (("": line 8),1) (Name {nameId = 38}))) (CConst (CIntConst 3 (NodeInfo ("": line 8) (("": line 8),1) (Name {nameId = 39})))) (NodeInfo ("": line 8) (("": line 8),1) (Name {nameId = 40})))) (NodeInfo ("": line 8) (("": line 8),1) (Name {nameId = 41})))] (NodeInfo ("": line 5) (("": line 9),1) (Name {nameId = 42}))) (NodeInfo ("": line 5) (("": line 9),1) (Name {nameId = 43})))
] (NodeInfo ("": line 1) (("": line 9),1) (Name {nameId = 44}))
master-q commented 5 years ago
$ cat ~/tmp/ats/idiomaticca/main.dats
#include "share/atspre_staload.hats"

fun func1 (a: int, b: int): int = let
  in
    a + b
  end

implement main () = let
    var r : int
    val () = r := func1 (1, 2)
  in
    r - 3
  end
$ stack run dumpats ~/tmp/ats/idiomaticca/main.dats
ATS {unATS = [Include "\"share/atspre_staload.hats\"",
  Func {pos = AlexPn 38 3 1, _fun = Fun {_preF = PreF {fname = Unqualified "func1", sig = Just "", preUniversals = [], universals = [],
    args = Just [Arg (Both "b" (Named (Unqualified "int"))),Arg (Both "a" (Named (Unqualified "int")))],
    returnType = Just (Named (Unqualified "int")),
    termetric = Nothing,
    _expression = Just (Let (AlexPn 72 3 35) (ATS {unATS = []}) (Just (BinList {_op = Add, _exprs = [NamedVal (Unqualified "a"),NamedVal (Unqualified "b")]})))}}},
  Impl {implArgs = Nothing, _impl = Implement {pos = AlexPn 116 8 19, preUniversalsI = [], implicits = [], universalsI = [], nameI = Unqualified "main", iArgs = Just [], _iExpression = Right (Let (AlexPn 118 8 21) (ATS {unATS = [Var {varT = Just (Named (Unqualified "int")), varPat = UniversalPattern (AlexPn 130 9 9) "r" [] Nothing, _varExpr1 = Nothing, _varExpr2 = Nothing},Val {add = None, valT = Nothing, valPat = Just (PLiteral (VoidLiteral (AlexPn 146 10 9))), _valExpression = Just (Binary Mutate (NamedVal (Unqualified "r")) (Call {callName = Unqualified "func1", callImplicits = [], callUniversals = [], callProofs = Nothing, callArgs = [IntLit 2,IntLit 1]}))}]}) (Just (Binary Sub (NamedVal (Unqualified "r")) (IntLit 3))))}}
]}
master-q commented 5 years ago

Would like to support extern:

$ cat regress/noinc/call_func/main.c
extern int func2(int, int);

int func1(int a, int b) {
        return func2(a, b);
}

int main() {
        int r;
        r = func1(1, 2);
        return r - 3;
}

int func2(int a, int b) {
        return a + b;
}
master-q commented 5 years ago
$ stack run dumpc regress/noinc/call_func/main.c
CTranslUnit [
  CDeclExt (CDecl
    [CStorageSpec (CExtern (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),6) (Name {nameId = 0}))),CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),3) (Name {nameId = 2})))]
    [(Just (CDeclr
      (Just (Ident "func2" 209435416 (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),5) (Name {nameId = 1}))))
      [CFunDeclr (Right ([CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),3) (Name {nameId = 4})))] [] (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),3) (Name {nameId = 5})),CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),3) (Name {nameId = 6})))] [] (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),3) (Name {nameId = 7}))],False)) [] (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),1) (Name {nameId = 8}))]
      Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),5) (Name {nameId = 3}))),Nothing,Nothing)]
    (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 1),1) (Name {nameId = 9}))),
  CFDefExt (CFunDef [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),3) (Name {nameId = 11})))] (CDeclr (Just (Ident "func1" 209435415 (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),5) (Name {nameId = 10})))) [CFunDeclr (Right ([CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),3) (Name {nameId = 14})))] [(Just (CDeclr (Just (Ident "a" 97 (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 13})))) [] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 15}))),Nothing,Nothing)] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 16})),CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),3) (Name {nameId = 18})))] [(Just (CDeclr (Just (Ident "b" 98 (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 17})))) [] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 19}))),Nothing,Nothing)] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 20}))],False)) [] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),1) (Name {nameId = 21}))] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 3),5) (Name {nameId = 12}))) [] (CCompound [] [CBlockStmt (CReturn (Just (CCall (CVar (Ident "func2" 209435416 (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),5) (Name {nameId = 22}))) (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),5) (Name {nameId = 23}))) [CVar (Ident "a" 97 (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),1) (Name {nameId = 24}))) (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),1) (Name {nameId = 25})),CVar (Ident "b" 98 (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),1) (Name {nameId = 26}))) (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),1) (Name {nameId = 27}))] (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),1) (Name {nameId = 28})))) (NodeInfo ("regress/noinc/call_func/main.c": line 4) (("regress/noinc/call_func/main.c": line 4),1) (Name {nameId = 29})))] (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 5),1) (Name {nameId = 30}))) (NodeInfo ("regress/noinc/call_func/main.c": line 3) (("regress/noinc/call_func/main.c": line 5),1) (Name {nameId = 31}))),
  CFDefExt (CFunDef [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 7) (("regress/noinc/call_func/main.c": line 7),3) (Name {nameId = 33})))] (CDeclr (Just (Ident "main" 232419565 (NodeInfo ("regress/noinc/call_func/main.c": line 7) (("regress/noinc/call_func/main.c": line 7),4) (Name {nameId = 32})))) [CFunDeclr (Right ([],False)) [] (NodeInfo ("regress/noinc/call_func/main.c": line 7) (("regress/noinc/call_func/main.c": line 7),1) (Name {nameId = 35}))] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 7) (("regress/noinc/call_func/main.c": line 7),4) (Name {nameId = 34}))) [] (CCompound [] [CBlockDecl (CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 8) (("regress/noinc/call_func/main.c": line 8),3) (Name {nameId = 37})))] [(Just (CDeclr (Just (Ident "r" 114 (NodeInfo ("regress/noinc/call_func/main.c": line 8) (("regress/noinc/call_func/main.c": line 8),1) (Name {nameId = 36})))) [] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 8) (("regress/noinc/call_func/main.c": line 8),1) (Name {nameId = 38}))),Nothing,Nothing)] (NodeInfo ("regress/noinc/call_func/main.c": line 8) (("regress/noinc/call_func/main.c": line 8),1) (Name {nameId = 39}))),CBlockStmt (CExpr (Just (CAssign CAssignOp (CVar (Ident "r" 114 (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 40}))) (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 41}))) (CCall (CVar (Ident "func1" 209435415 (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),5) (Name {nameId = 42}))) (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),5) (Name {nameId = 43}))) [CConst (CIntConst 1 (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 44}))),CConst (CIntConst 2 (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 45})))] (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 46}))) (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 47})))) (NodeInfo ("regress/noinc/call_func/main.c": line 9) (("regress/noinc/call_func/main.c": line 9),1) (Name {nameId = 48}))),CBlockStmt (CReturn (Just (CBinary CSubOp (CVar (Ident "r" 114 (NodeInfo ("regress/noinc/call_func/main.c": line 10) (("regress/noinc/call_func/main.c": line 10),1) (Name {nameId = 49}))) (NodeInfo ("regress/noinc/call_func/main.c": line 10) (("regress/noinc/call_func/main.c": line 10),1) (Name {nameId = 50}))) (CConst (CIntConst 3 (NodeInfo ("regress/noinc/call_func/main.c": line 10) (("regress/noinc/call_func/main.c": line 10),1) (Name {nameId = 51})))) (NodeInfo ("regress/noinc/call_func/main.c": line 10) (("regress/noinc/call_func/main.c": line 10),1) (Name {nameId = 52})))) (NodeInfo ("regress/noinc/call_func/main.c": line 10) (("regress/noinc/call_func/main.c": line 10),1) (Name {nameId = 53})))] (NodeInfo ("regress/noinc/call_func/main.c": line 7) (("regress/noinc/call_func/main.c": line 11),1) (Name {nameId = 54}))) (NodeInfo ("regress/noinc/call_func/main.c": line 7) (("regress/noinc/call_func/main.c": line 11),1) (Name {nameId = 55}))),
  CFDefExt (CFunDef [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),3) (Name {nameId = 57})))] (CDeclr (Just (Ident "func2" 209435416 (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),5) (Name {nameId = 56})))) [CFunDeclr (Right ([CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),3) (Name {nameId = 60})))] [(Just (CDeclr (Just (Ident "a" 97 (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 59})))) [] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 61}))),Nothing,Nothing)] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 62})),CDecl [CTypeSpec (CIntType (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),3) (Name {nameId = 64})))] [(Just (CDeclr (Just (Ident "b" 98 (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 63})))) [] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 65}))),Nothing,Nothing)] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 66}))],False)) [] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),1) (Name {nameId = 67}))] Nothing [] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 13),5) (Name {nameId = 58}))) [] (CCompound [] [CBlockStmt (CReturn (Just (CBinary CAddOp (CVar (Ident "a" 97 (NodeInfo ("regress/noinc/call_func/main.c": line 14) (("regress/noinc/call_func/main.c": line 14),1) (Name {nameId = 68}))) (NodeInfo ("regress/noinc/call_func/main.c": line 14) (("regress/noinc/call_func/main.c": line 14),1) (Name {nameId = 69}))) (CVar (Ident "b" 98 (NodeInfo ("regress/noinc/call_func/main.c": line 14) (("regress/noinc/call_func/main.c": line 14),1) (Name {nameId = 70}))) (NodeInfo ("regress/noinc/call_func/main.c": line 14) (("regress/noinc/call_func/main.c": line 14),1) (Name {nameId = 71}))) (NodeInfo ("regress/noinc/call_func/main.c": line 14) (("regress/noinc/call_func/main.c": line 14),1) (Name {nameId = 72})))) (NodeInfo ("regress/noinc/call_func/main.c": line 14) (("regress/noinc/call_func/main.c": line 14),1) (Name {nameId = 73})))] (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 15),1) (Name {nameId = 74}))) (NodeInfo ("regress/noinc/call_func/main.c": line 13) (("regress/noinc/call_func/main.c": line 15),1) (Name {nameId = 75})))] (NodeInfo ("regress/noinc/call_func/main.c": line 1) (("regress/noinc/call_func/main.c": line 15),1) (Name {nameId = 76}))
master-q commented 5 years ago
$ cat ~/tmp/ats/idiomaticca/main.dats
#include "share/atspre_staload.hats"

extern fun func2 (int, int): int

fun func1 (a: int, b: int): int = let
  in
    func2 (a, b)
  end

implement main () = let
    var r : int
    val () = r := func1 (1, 2)
  in
    r - 3
  end

implement func2 (a, b) = let
  in
    a + b
  end
$ stack run dumpats ~/tmp/ats/idiomaticca/main.dats
ATS {unATS = [
  Include "\"share/atspre_staload.hats\"",
  Extern (AlexPn 38 3 1) (Func {pos = AlexPn 45 3 8, _fun = Fun {_preF = PreF {fname = Unqualified "func2", sig = Just "", preUniversals = [], universals = [], args = Just [Arg (First "int"),Arg (First "int")], returnType = Just (Named (Unqualified "int")), termetric = Nothing, _expression = Nothing}}}),
  Func {pos = AlexPn 72 5 1, _fun = Fun {_preF = PreF {fname = Unqualified "func1", sig = Just "", preUniversals = [], universals = [], args = Just [Arg (Both "b" (Named (Unqualified "int"))),Arg (Both "a" (Named (Unqualified "int")))], returnType = Just (Named (Unqualified "int")), termetric = Nothing, _expression = Just (Let (AlexPn 106 5 35) (ATS {unATS = []}) (Just (Call {callName = Unqualified "func2", callImplicits = [], callUniversals = [], callProofs = Nothing, callArgs = [TupleEx (AlexPn 125 7 11) (NamedVal (Unqualified "b") :| [NamedVal (Unqualified "a")])]})))}}},
  Impl {implArgs = Nothing, _impl = Implement {pos = AlexPn 157 10 19, preUniversalsI = [], implicits = [], universalsI = [], nameI = Unqualified "main", iArgs = Just [], _iExpression = Right (Let (AlexPn 159 10 21) (ATS {unATS = [Var {varT = Just (Named (Unqualified "int")), varPat = UniversalPattern (AlexPn 171 11 9) "r" [] Nothing, _varExpr1 = Nothing, _varExpr2 = Nothing},Val {add = None, valT = Nothing, valPat = Just (PLiteral (VoidLiteral (AlexPn 187 12 9))), _valExpression = Just (Binary Mutate (NamedVal (Unqualified "r")) (Call {callName = Unqualified "func1", callImplicits = [], callUniversals = [], callProofs = Nothing, callArgs = [IntLit 2,IntLit 1]}))}]}) (Just (Binary Sub (NamedVal (Unqualified "r")) (IntLit 3))))}},
  Impl {implArgs = Nothing, _impl = Implement {pos = AlexPn 255 17 24, preUniversalsI = [], implicits = [], universalsI = [], nameI = Unqualified "func2", iArgs = Just [Arg (First "b"),Arg (First "a")], _iExpression = Right (Let (AlexPn 257 17 26) (ATS {unATS = []}) (Just (BinList {_op = Add, _exprs = [NamedVal (Unqualified "a"),NamedVal (Unqualified "b")]})))}}]}
master-q commented 5 years ago

Supported at ea4753fabfe4ad127f44eca7b65d4f7449362a66.