
Hello GHC freaks, I have made some changes to the GHC source code (6.0.1) and I would really welcome your feedback, whether they are ok for my task (first step: introduce record expressions of the shape 'struct {x1=e1,x2=e2,...,xn=en}'): * added ("struct", ITstruct, bit glaExtsBit), to ghcExtensionKeywordsFM and ITstruct to Token in Lex.lhs * added | Struct [(id, HsExpr id)] to data type HsExpr id in HsExpr.lhs Please tell me, what is this id for? Can it be used in this context? What is FastString? * added 'struct' { ITstruct } to the token part of Parser.y (please tell me, why in the lexer we declare ITstruct to represent the keyword "struct" and in the parser specification we turn back to 'struct'), added structassignments : structassignments ',' structassignment { $3 : $1 } | structassignments ',' { $1 } | structassignment { [$1] } | {- empty -} { [] } structassignment : qvar '=' exp { ($1,$3) } as new production rules (what type has structassignments? I can not simply write [(id,HsExpr id)], is qvar '=' exp appropriate? I do not understand structassignments completely (I have tried to make it analog to fbinds)), extended exp10 by | 'struct' '{' structassignments '}' {Struct $3} | '{' structassignments '}' {Struct $2} and finally added | Struct [(id, HsExpr id)] to HsExpr How can I speed up the recompilation process? I just want to check, whether my changes are compilable or not, is it possible to switch off optimization and other time consuming transformations? At next I will try to master the following steps: * embed the remaining new production rules to the parser, e.g., record type declaration, selectors, particular kind annotations * adaptation of the type checker * reduction of struct expressions Thank you very much, Steffen Mazanek
participants (1)
-
Steffen Mazanek