{"push_id":737780101,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"3e1d785f30db71de6667c41631419fa508e94a43","before":"991e2f248965637241f41d9a49fc4867913fc05b","commits":[{"sha":"3e1d785f30db71de6667c41631419fa508e94a43","author":{"email":"0e8bc34a086b71e3a0ba420f1f3cab31753e4245@gmail.com","name":"salamynder"},"message":"Warum ApEngDecl nicht funktioniert / Vgl mit Ap2Eng\n\nIm letzten Commit erwähntes Dead-End bei der Entrostung von ApEngDecl\nwird in Ap2Eng behoben. Aus der in ApEngDecl gestellten Frage:\n(1)\n   -- Wie waehlt man hier einen Numerus?:\n   AttrAPpos ap cn =\n     {s = (ap.s!pos).s1 ++ (case ap.c of {simpl => \"\" ; split => \"a\"})\n                        ++ cn.s ++ (ap.s!pos).s2 } ;\n\n   AttrAPcmp ap cn = {s = (ap.s!cmp).s1 ++ cn.s ++ (ap.s!cmp).s2} ;\n\n   AttrAPsup ap cn = {s = (ap.s!sup).s1 ++ cn.s ++ (ap.s!sup).s2} ;\n\nwird:\n(2)\n\n   AttrAPposSg ap cn =\n     {s = (ap.s!pos).s1 ++ (case ap.c of {simpl => \"\" ; split => \"a\"})\n                        ++ cn.s!sg ++ (ap.s!pos).s2 ;  n = sg} ;\n   AttrAPcmpSg ap cn =\n     {s = (ap.s!cmp).s1 ++ cn.s!sg ++ (ap.s!cmp).s2 ; n = sg} ;\n   AttrAPsupSg ap cn =\n     {s = (ap.s!sup).s1 ++ cn.s!sg ++ (ap.s!sup).s2 ; n = sg} ;\n\n   AttrAPposPl ap cn =\n     {s = (ap.s!pos).s1 ++ cn.s!pl ++ (ap.s!pos).s2 ; n = pl} ;\n   AttrAPcmpPl ap cn =\n     {s = (ap.s!cmp).s1 ++ cn.s!pl ++ (ap.s!cmp).s2 ; n = pl} ;\n   AttrAPsupPl ap cn =\n     {s = (ap.s!sup).s1 ++ cn.s!pl ++ (ap.s!sup).s2 ; n = pl} ;\n\nNB: lincat von N1 ist auch in ApEngDecl schon {s: Str; n: Number}; es\nhätte also nicht gereicht, den Funktions-Case-Split wie hier in (2)\nvorzunehmen und cn.s => cn.s!Number, sondern das von lincat geforderte\nNumerus Rekord-Feld muss auch angelegt werden (wie auch in (2) geschehen).\n\nDer Übergang von (1) zu (2) macht aber auf jeden Fall deutchlich, wie\nein Feature (Numerus in cn), das nicht über die anderen Argumente (ap\nhier nur) der linfun bestimmt werden kann (weil ap kein Numerus-Feld\nhat), über die Aufsplittung der fun/linfun und das pure Token-Parsing\nrealisiert wird, d.h. das Feld cn.s nimmt einen Numerus und gibt einen\nStr zurück und dieser Str ist nunmal das Token, was beim Parsen des\nStrings diese oder jene Attr*-Funktion aufruft. (Ich habe anscheinend\nrecht große Probleme, die Berechnung von Wortformen über opers und das\nParsen/Generieren von Strings über linfuns adäquat voneinander zu\ntrennen.)","distinct":true,"url":"https://api.github.com/repos/salamynder/mag15/commits/3e1d785f30db71de6667c41631419fa508e94a43"}]}