hamlet/DerivedFormsProgram-struct.ss
(module DerivedFormsProgram-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: DerivedFormsProgram-struct)
       (SEALStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (STRUCTUREStrDec: (StrBind: (StrId: C-struct) (IDStrExp: (LongStrId: GrammarCore-struct))))
          (SEQStrDec:
           (STRUCTUREStrDec: (StrBind: (StrId: M-struct) (IDStrExp: (LongStrId: GrammarModule-struct))))
           (SEQStrDec:
            (STRUCTUREStrDec: (StrBind: (StrId: P-struct) (IDStrExp: (LongStrId: GrammarProgram-struct))))
            (SEQStrDec:
             (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Info-type) (CONTy: (Tyseq:) (LongTyCon: GrammarProgram.Info-type)))))
             (SEQStrDec:
              (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Exp-type) (CONTy: (Tyseq:) (LongTyCon: GrammarCore.Exp-type)))))
              (SEQStrDec:
               (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: TopDec-type) (CONTy: (Tyseq:) (LongTyCon: GrammarModule.TopDec-type)))))
               (SEQStrDec:
                (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Program-type) (CONTy: (Tyseq:) (LongTyCon: GrammarProgram.Program-type)))))
                (SEQStrDec:
                 (DECStrDec:
                  (VALDec:
                   (TyVarseq:)
                   (RECValBind:
                    (PLAINValBind:
                     (ATPat: (IDAtPat: (LongVId: TOPDECProgram)))
                     (FNExp:
                      (Match:
                       (Mrule:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (RECORDAtPat:
                            (FIELDPatRow:
                             (Lab: |1|)
                             (ATPat: (IDAtPat: (LongVId: I)))
                             (FIELDPatRow:
                              (Lab: |2|)
                              (ATPat: (IDAtPat: (LongVId: topdec)))
                              (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: program_opt))))))))))
                        (ATExp:
                         (PARAtExp:
                          (APPExp:
                           (ATExp: (IDAtExp: (LongVId: P.Program)))
                           (RECORDAtExp:
                            (ExpRow:
                             (Lab: |1|)
                             (ATExp: (IDAtExp: (LongVId: I)))
                             (ExpRow:
                              (Lab: |2|)
                              (ATExp: (IDAtExp: (LongVId: topdec)))
                              (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: program_opt)))))))))))))))))
                 (DECStrDec:
                  (VALDec:
                   (TyVarseq:)
                   (RECValBind:
                    (PLAINValBind:
                     (ATPat: (IDAtPat: (LongVId: EXPProgram)))
                     (FNExp:
                      (Match:
                       (Mrule:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (RECORDAtPat:
                            (FIELDPatRow:
                             (Lab: |1|)
                             (ATPat: (IDAtPat: (LongVId: I)))
                             (FIELDPatRow:
                              (Lab: |2|)
                              (ATPat: (IDAtPat: (LongVId: exp)))
                              (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: program_opt))))))))))
                        (ATExp:
                         (LETAtExp:
                          (SEQDec:
                           (VALDec:
                            (TyVarseq:)
                            (PLAINValBind:
                             (ATPat: (IDAtPat: (LongVId: longvid)))
                             (ATExp:
                              (RECORDAtExp:
                               (ExpRow:
                                (Lab: |1|)
                                (ATExp: (IDAtExp: (LongVId: I)))
                                (ExpRow:
                                 (Lab: |2|)
                                 (ATExp:
                                  (PARAtExp:
                                   (APPExp:
                                    (ATExp: (IDAtExp: (LongVId: LongVId.fromId)))
                                    (PARAtExp:
                                     (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: VId.fromString))) (SCONAtExp: (STRINGSCon: "it")))))))))))))))
                           (SEQDec:
                            (VALDec:
                             (TyVarseq:)
                             (PLAINValBind:
                              (ATPat: (IDAtPat: (LongVId: pat)))
                              (ATExp:
                               (PARAtExp:
                                (APPExp:
                                 (ATExp: (IDAtExp: (LongVId: C.ATPat)))
                                 (RECORDAtExp:
                                  (ExpRow:
                                   (Lab: |1|)
                                   (ATExp: (IDAtExp: (LongVId: I)))
                                   (ExpRow:
                                    (Lab: |2|)
                                    (ATExp:
                                     (PARAtExp:
                                      (APPExp:
                                       (ATExp: (IDAtExp: (LongVId: C.IDAtPat)))
                                       (RECORDAtExp:
                                        (ExpRow:
                                         (Lab: |1|)
                                         (ATExp: (IDAtExp: (LongVId: I)))
                                         (ExpRow:
                                          (Lab: |2|)
                                          (ATExp: (IDAtExp: (LongVId: C.SANSOp)))
                                          (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: longvid))))))))))))))))))
                            (SEQDec:
                             (VALDec:
                              (TyVarseq:)
                              (PLAINValBind:
                               (ATPat: (IDAtPat: (LongVId: valbind)))
                               (ATExp:
                                (PARAtExp:
                                 (APPExp:
                                  (ATExp: (IDAtExp: (LongVId: C.PLAINValBind)))
                                  (RECORDAtExp:
                                   (ExpRow:
                                    (Lab: |1|)
                                    (ATExp: (IDAtExp: (LongVId: I)))
                                    (ExpRow:
                                     (Lab: |2|)
                                     (ATExp: (IDAtExp: (LongVId: pat)))
                                     (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: exp))) (ExpRow: (Lab: |4|) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))
                             (SEQDec:
                              (VALDec:
                               (TyVarseq:)
                               (PLAINValBind:
                                (ATPat: (IDAtPat: (LongVId: dec)))
                                (ATExp:
                                 (PARAtExp:
                                  (APPExp:
                                   (ATExp: (IDAtExp: (LongVId: C.VALDec)))
                                   (RECORDAtExp:
                                    (ExpRow:
                                     (Lab: |1|)
                                     (ATExp: (IDAtExp: (LongVId: I)))
                                     (ExpRow:
                                      (Lab: |2|)
                                      (ATExp:
                                       (PARAtExp:
                                        (APPExp:
                                         (ATExp: (IDAtExp: (LongVId: C.TyVarseq)))
                                         (RECORDAtExp:
                                          (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil)))))))))
                                      (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: valbind))))))))))))
                              (VALDec:
                               (TyVarseq:)
                               (PLAINValBind:
                                (ATPat: (IDAtPat: (LongVId: topdec)))
                                (ATExp:
                                 (PARAtExp:
                                  (APPExp:
                                   (ATExp: (IDAtExp: (LongVId: M.STRDECTopDec)))
                                   (RECORDAtExp:
                                    (ExpRow:
                                     (Lab: |1|)
                                     (ATExp: (IDAtExp: (LongVId: I)))
                                     (ExpRow:
                                      (Lab: |2|)
                                      (ATExp:
                                       (PARAtExp:
                                        (APPExp:
                                         (ATExp: (IDAtExp: (LongVId: M.DECStrDec)))
                                         (RECORDAtExp:
                                          (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: I))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: dec)))))))))
                                      (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))
                          (ATExp:
                           (PARAtExp:
                            (APPExp:
                             (ATExp: (IDAtExp: (LongVId: P.Program)))
                             (RECORDAtExp:
                              (ExpRow:
                               (Lab: |1|)
                               (ATExp: (IDAtExp: (LongVId: I)))
                               (ExpRow:
                                (Lab: |2|)
                                (ATExp: (IDAtExp: (LongVId: topdec)))
                                (ExpRow: (Lab: |3|) (ATExp: (IDAtExp: (LongVId: program_opt))))))))))))))))))))))))))))
        (IDSigExp: (SigId: DERIVED_FORMS_PROGRAM-sig)))))))))