# Ticket #24 (new defect)

Opened 6 years ago

## CorruptedPGF when using non-eta-expanded linearizations

Reported by: | PeterLjunglof | Owned by: | |
---|---|---|---|

Priority: | major | Version: | 3.0 |

Keywords: | Cc: |

### Description

The following grammar gets a compilation error ("CorruptedPGF"):

lincat NP = {s:Str; n:Num}; Det = {s:{g:Gen} => Str; d:Defness; n:Num}; Noun = {s:{d:Defness;n:Num} => Str; g:Gen}; fun np : Det -> Noun -> NP; lin np x y = {s = x.s!y ++ y.s!x; n = x.n};

If one eta-expands the arguments x and y, it works:

lin np x y = {s = x.s!{g=y.g} ++ y.s!{d=x.d;n=x.n}; n = x.n};

The error message differs, depending on wheter x or y or none is eta-expanded:

No expansion:

* lin np x y = {s = x.s!y ++ y.s!x; n = x.n}; linking ... projection from P (P (V 0) (C 0)) (P (P (P (V 1) (C 0)) (C 0)) (C 0)) : S [] happened in function np happened in language TravelEng Corrupted PGF gf: unifyPType R [R [S [],S []],C 1,C 1]

y is eta-expanded:

* lin np x y = {s = x.s!{g=y.g} ++ y.s!x; n = x.n}; linking ... projection from P (P (V 0) (C 0)) (P (P (P (V 1) (C 0)) (C 0)) (C 0)) : S [] happened in function np happened in language TravelEng Corrupted PGF gf: unifyPType R [R [S [],S []],C 1,C 1]

x is eta-expanded:

* lin np x y = {s = x.s!y ++ y.s!{d=x.d;n=x.n}; n = x.n}; linking ... projection from P (P (V 0) (C 0)) (P (P (P (V 1) (C 0)) (C 0)) (C 0)) : S [] happened in function np happened in language TravelEng Corrupted PGF gf: GF/Compile/GenerateFCFG.hs:(250,38)-(251,95): Non-exhaustive patterns in case

**Note:**See TracTickets for help on using tickets.