[00:59:40] *** Quits: koo6 (~sirdancea@79.98.72.195) (Ping timeout: 246 seconds) [01:43:33] *** Quits: JuanDaugherty (~juan@98.4.124.117) (Quit: Hibernate, reboot, exeunt, etc.) [07:25:32] *** Quits: proteus-guy (~proteus-g@2405:9800:b408:bc31:dddf:c1f7:934:3f41) (Remote host closed the connection) [09:00:11] *** Joins: koo6 (~koom@79.98.72.195) [09:16:36] *** Joins: proteusguy (~proteus-g@183.89.209.163) [09:53:57] *** Quits: proteusguy (~proteus-g@183.89.209.163) (Read error: Connection reset by peer) [09:54:53] *** Joins: proteusguy (~proteus-g@183.89.209.163) [09:55:10] *** Quits: proteusguy (~proteus-g@183.89.209.163) (Read error: Connection reset by peer) [09:56:38] *** Joins: proteusguy (~proteus-g@183.89.209.163) [10:01:06] *** Quits: proteusguy (~proteus-g@183.89.209.163) (Read error: Connection reset by peer) [10:13:34] *** Joins: proteusguy (~proteus-g@183.89.209.163) [14:21:39] *** Quits: proteusguy (~proteus-g@183.89.209.163) (Remote host closed the connection) [17:02:35] *** Joins: lin (c4d775a9@gateway/web/freenode/ip.196.215.117.169) [17:04:16] hi - can anyone tell me what 'lin' does in e.g english resource grammar, paradigms.gf expression like ' lin N (some expression) ? [17:05:11] hi! [17:05:27] hi! [17:05:46] so, when you write a lincat for some cat, you make it into some concrete record type [17:05:56] yes [17:06:02] like lincat N = { s : NForm => Str ; g : Gender } or whatever [17:06:07] yes [17:06:19] you could use the same concrete record for many different lincats [17:06:30] like lincat Adv = {s : Str} ; lincat Conj = {s : Str} ; [17:06:41] ok [17:06:42] to you these are identical, but the compiler inserts a hidden field [17:07:03] so actually adverb is {s : Str ; lock_Adv : {}} and same for Conj [17:07:11] now, these are not meant for humans to manipulate [17:07:17] ok [17:07:25] *** Quits: koo6 (~koom@79.98.72.195) (Ping timeout: 246 seconds) [17:07:33] so now, you may write an oper to make a noun [17:07:39] yes [17:07:48] oper mkN : Str -> { s : NForm => Str ; g : Gender} ; [17:08:10] ok [17:08:11] or probably you would give the clumsy { s : NForm => Str ; g : Gender} ; some other name [17:08:18] like oper Noun : Type = { s : NForm => Str ; g : Gender} ; [17:08:23] so oper mkN : Str -> Noun [17:08:31] yes [17:08:43] but the thing is that technically mkN doesn't make Ns, but it makes Nouns [17:08:50] ok [17:09:06] but wuth same structure [17:09:11] so now you have in your lexicon something like fun car_N : N ; [17:09:12] as N's [17:09:19] and in concrete lin car_N = mkN "car" [17:09:36] but if your mkN makes Nouns, then mkN "car" will not work here [17:09:43] ok [17:10:09] instead of inserting lock_N field manually, you can just wrap it in lin N (mkN "car") [17:10:20] but actually it's better to have the definition of mkN already do the wrapping [17:10:35] so in practice what happesn is that mkN, an API function, calls some internal Noun-making function [17:10:50] say you have oper regN : Str -> Noun ; and oper irregN : Str -> Gender -> Noun ; [17:10:57] then you can call both of them from mkN [17:11:06] oper mkN = overload { [17:11:27] mkN : Str -> N = \s -> lin N (regN s) ; [17:11:42] mkN : Str -> Gender -> N = \s,g -> lin N (irregN s g) ; [17:11:43] } [17:12:00] and that's how you can just write mkN without worrying anything about lock fields! [17:12:54] ok - i see - thank you so much !!!!!!! [17:13:01] no worries :) [17:13:20] are you by any chance coming to the summer school next week? [17:13:52] no [17:15:08] will be at south africa one [17:15:17] cool! ^^ [17:15:42] :) bye - thanks again for such detailed help [17:16:08] come anytime if you have more questions! this channel will probably be more alive next week too [17:16:11] because of the summer school [17:16:26] okay cool [17:16:55] *** Parts: lin (c4d775a9@gateway/web/freenode/ip.196.215.117.169) () [18:50:02] *** Joins: koo5 (~koom@79.98.72.195) [23:49:05] *** Quits: koo5 (~koom@79.98.72.195) (Ping timeout: 240 seconds)