[02:37:38] *** Quits: JuanDaugherty (~juan@98.4.124.117) (Quit: Ex Chat) [05:40:47] *** Quits: proteusguy (~proteus-g@184.22.249.78) (Remote host closed the connection) [07:28:00] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [07:32:40] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [07:33:32] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [07:41:46] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [07:42:32] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [07:45:56] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [07:46:31] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [07:48:48] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [07:49:31] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [07:52:04] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [07:52:32] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [07:57:45] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [07:58:31] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:01:18] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:02:01] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:05:19] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:06:06] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:08:16] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:09:04] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:14:46] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:15:32] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:16:09] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:16:49] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:25:17] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:26:02] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:27:50] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:28:34] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:30:28] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:31:04] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:33:13] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:34:04] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:35:59] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:36:37] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:38:28] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:39:04] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:41:07] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:41:35] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:43:28] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:44:04] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:47:56] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:48:30] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:50:37] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:51:00] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:52:43] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:53:11] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [08:55:02] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [08:55:30] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:00:05] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:00:33] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:04:22] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:05:04] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:09:03] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:09:34] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:11:36] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:12:00] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:14:47] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:15:34] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:17:25] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:18:01] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:22:35] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:23:00] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:25:33] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:26:02] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:34:56] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:35:33] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:37:22] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:38:05] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:38:38] inariksit: i liked it. [09:40:22] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:41:05] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:43:01] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:43:30] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:45:31] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [09:46:01] *** Joins: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) [09:47:47] *** Quits: proteusguy (~proteus-g@ppp-124-120-201-113.revip2.asianet.co.th) (Read error: Connection reset by peer) [10:11:58] esg: cool :-D it was very experimental [11:05:27] vin-ivar: which finnish song are you singing? [12:33:09] *** Joins: e3928a3bc (~bruno@2804:14d:5cd8:8447::3) [12:49:22] hello! [13:36:36] hi there! [13:38:57] inariksit: en etsi valtaa, loistoa [13:39:02] technically swedish i guess [13:44:39] could you guys help me with debugging this grammar? https://pastebin.com/raw/1pUvWKqQ [13:44:40] it's supposed to be exercise 1 from chapter 6 of the book, but I tried a different approach (using Int) [13:46:55] i can if you give me a bit, i'm making coffee then heading to uni [13:47:57] no problem :) I'll be here! [13:58:14] vin-ivar: i had to google 'en etsi valtaa' because i did not know it. in a youtube discussion of whether it is ok to say that it is swedish i found the following gem "FYI: the Swedish language used in Finland is not related to Sweden." [14:43:35] hahahaha [14:43:41] wait [14:43:48] does that mean finnish is not related to swedish [14:44:09] or that finlandssvensk is politically not part of sweden [14:44:11] o_O [14:44:11] *** Parts: e3928a3bc (~bruno@2804:14d:5cd8:8447::3) () [14:44:16] *** Joins: e3928a3bc (~bruno@2804:14d:5cd8:8447::3) [14:44:47] i am going to start referring to finnish as "the swedish language used in finland" [14:51:13] vin-ivar: i think (but maybe i'm wrong) that they mean that the swedish speakers in finland are proper finnish people and not swedes that have come over recently. or something. [14:52:11] taken out of the context it is a weird position to take though. like it randomly appeared there independent of also being a language in sweden [14:58:12] hahaha [14:58:14] yeah] [15:15:16] e3928a3bc: on the first glance, this is wrong: [15:15:17] lin [15:15:17] Zero = {np: symb 0 ; n : 0} ; [15:15:33] should be { np = foo ; n = bar } [15:17:45] oh I always mess up the colons and equals haha [15:17:52] I need a GFlint [15:19:23] but it still gives the same error about the overload instance for symb [15:20:08] yeah, that's a really silly error [15:20:18] I just get around it by annotating tons of stuff [15:20:22] I did this and it works: [15:20:23] oper [15:20:23] mkNat : Int -> Nat = \int -> [15:20:23] lin Nat { np = symb int ; n = int } ; [15:20:33] [15:20:35] and I'm using it like this: [15:20:37] [15:20:37] Zero = mkNat 0 ; [15:20:38] Succ nat = let n' : Int = plus nat.n 1 in mkNat n' ; [15:21:21] I'm at an event for masters students, advertising GF as a thesis topic, so gotta go now [15:21:27] we have coffee break [15:21:47] but you can try something similar for the pred [16:11:54] is this a bug, inariksit? do you know what causes this? [16:12:55] I didn't manage to replicate your approach to pred, however [16:12:55] I tried a few different ways (including this one https://pastebin.com/raw/eAK6uEKU) and no deal :/ [16:13:41] cool! can I have the presentation? I'm doing my master's thesis on GF ! [16:16:05] this message has a similar error, maybe? https://groups.google.com/d/topic/gf-dev/o5R08L_CvsU/discussion [16:49:22] that particular error can really appear in tons of places, I haven't learned to systematically know what's the issue upon seeing it [16:49:29] I commented out stuff and now I get this: [16:49:30] linearization type field cannot be Int [16:49:30] OCCURRED IN [16:49:31] optimizing Nat [16:49:34] [16:50:10] some more things to notice: when you define your incomplete concrete, and then a concrete on that, you should instantiate all the interfaces that you opened in your incomplete [16:50:24] so if you write this: [16:50:25] incomplete concrete ArithmI of Arithm = open Syntax, LexArithm, Symbolic, [16:50:33] then you need this: [16:50:34] concrete ArithmEng of Arithm = ArithmI with (Syntax = SyntaxEng), (LexArithm = LexArithmEng), (Symbolic = SymbolicEng) ; [16:52:43] you probably don't need to open both Combinators and Syntax, because Combinators is included in Syntax: [16:52:44] interface Syntax = Constructors, Cat, Structural, Combinators ; [16:53:06] I replaced your mkProp with just using mkCl: mkProp a np = mkS (mkCl np a) ; [16:53:31] you can see the instance here: http://www.grammaticalframework.org/lib/doc/synopsis.html#Cl NP -> A -> Cl [16:54:52] but for the "linearization type field cannot be Int", I have no experience; I'm doing GF because I like natural languages, I've never been that interested in the formal language aspects of GF [16:56:00] I didn't give a presentation myself, I was just there hanging out with prasanth (who did give a presentation but it was only 3-minute one), my main motivation was to talk to people and get free coffee and food :-D [16:56:51] cool that you're doing your thesis on GF! where are you based, and what's your topic more exactly, if you know it yet? ^^ [17:19:26] *** Quits: e3928a3bc (~bruno@2804:14d:5cd8:8447::3) (Quit: Leaving.) [18:50:56] *** Joins: e3928a3bc (~bruno@2804:14d:5cd8:8447:a5a2:3cfe:206d:7a3a) [18:58:32] inariksit: thank you for the help! using mkCl is indeed better than using pred. and thanks for making that point about incomplete concrete grammars! [19:00:02] do you think I should reach out to the gf-dev mailing list for help about this issue? [19:00:31] oh, I see how that is good motivation, haha [19:03:02] I'm in rio de janeiro! I'd like to write a grammar for Portuguese (although apparently livy real and esg are already working on it; and I'm no linguist.) and then using it to ... (not sure yet, but I have a few ideas). I still have to learn GF, though! [19:37:25] about linearization type cannot be Int, or what? [19:38:00] I like to write to GF-dev if there's something I suspect other people might also wonder, or if I think I will myself need it later [19:38:20] and in any case, it's not very high traffic, so go ahead! [19:39:16] like this thread I could've totally just gone to krasimir's office and ask him, but I figured it's nicer to document it for everyone ^^ https://groups.google.com/forum/#!topic/gf-dev/XMNw04OtXKk [19:41:08] as for portuguese, you and esg are both on the channel, so that's already a promising first step for coordination! [19:42:17] inariksit: about linearization type cannot be Int, yes! [19:42:43] yeah [19:43:35] that's a great practice! [19:44:33] indeed! I've scheduled a meeting with livy, as I didn't want to step in on her and esg's work [19:45:57] nice! [20:14:59] so, I found this in gf-dev https://groups.google.com/d/topic/gf-dev/-9Dg4Cdbz7M/discussion [20:15:00] it's the same error I'm getting, but I'm not sure what is meant by "wrapping it with lin Nat" [20:15:40] does anyone know? [20:18:29] e3928a3bc: if you have e.g. "mkNat n'" and gf complains you can try "lin Nat (mkNat n')" instead [20:31:29] e3928a3bc: in your code https://pastebin.com/raw/eAK6uEKU here, you have this: [20:31:30] mkNat : Int -> Nat = \int = {np = symb int ; n = int} ; [20:31:40] whereas I had the same except mkNat : Int -> Nat = \int = lin Nat {np = symb int ; n = int} ; [20:32:20] when you write lincat Nat = {np : NP ; n : Int} ;, the compiler adds a lock field called lock_Nat [20:32:46] so actually a Nat is {np : NP ; n : Int; lock_Nat : {}} [20:32:55] daherb: thanks, I was wondering if it should go in the left or right side, and neither seemed to work [20:33:02] but your mkNat creates just a {np : NP ; n : Int} [20:33:55] inariksit: I must have gone over it, as I had never seen that before! thanks [20:33:55] but the thing is, this gives the overload instance error again... (although now it's slightly different) [20:34:47] inariksit: "so actually a Nat is {np : NP ; n : Int; lock_Nat : {}}" [20:34:47] what is the significance of this? o.O [20:35:03] afaik it's never wrong to write "lin X (expression that returns X)", so you could even adopt a totally redundant strategy of putting them everywhere :-P [20:35:23] aarne says in the thread you linked " [20:35:24] This is a safety belt when grammars are used as libraries, making sure that type correct uses of the library are also grammatically correct." [20:36:07] I don't really know in practice what it means [20:36:28] or if the practice is adopted for implementation reasons or someone thought it's a good thing for the grammar writers to keep in mind [20:37:46] so I try to do a lot of subtyping in my grammars; makes less functions to write, or along the lines "one big function and a couple of special functions that are just 2 lines long" [20:38:40] hahaha, I hope it doesn't come to that ! [20:38:55] hmm I started typing a long thing and I realised it's totally irrelevant [20:39:03] so nevermind :-D [20:39:15] (I should do grading, still 5 assignments left) [20:40:00] (or well, not totally, it was related to lock fields/lin Foo, but I'd say still irrelevant for you to hear at this particular moment :-D) [20:41:54] Aarne says in another thread: "he lock fields are added whenever a lin or a lincat is used as an oper. This is explained in the GF book D.4.17  (forthcoming; many of you have a draft)" [20:41:55] it is in C.4.17 of the final book [20:42:36] but it kinda goes over my head [20:43:49] okay let me find an example [20:46:19] lincat of N: https://github.com/GrammaticalFramework/GF/blob/master/lib/src/english/CatEng.gf#L104 [20:46:49] an oper that creates a {s : Number => Case => Str} -- not a N, because it doesn't have the lock field: https://github.com/GrammaticalFramework/GF/blob/master/lib/src/english/ResEng.gf#L130-L142 [20:47:07] an oper that creates a N, by calling the previous function and wrapping it in lin N: https://github.com/GrammaticalFramework/GF/blob/master/lib/src/english/ParadigmsEng.gf#L395-L396 [20:47:59] a lin that uses the oper mkN from the previous line: https://github.com/GrammaticalFramework/GF/blob/master/lib/src/english/LexiconEng.gf#L84 [20:48:08] and that's it! :-D [20:48:49] so if you called mkNoun instead of mkN in the LexiconEng file, then you would probably also get the message "not in the lincat of N, try wrapping with lin N" [20:49:23] mkNoun : (_,_,_,_ : Str) -> {s : Number => Case => Str}, and mk4N : (_,_,_,_ : Str) -> {s : Number => Case => Str ; lock_N : {}} [20:49:39] but it's not recommended to write the lock fields explicitly [20:49:55] so instead the lin N (foo bar) does the trick [21:49:17] thank you for your time and help inariksit! :D I get how to use it now! [21:49:17] I wonder why the compiler doesn't add the lin cat itself, as it seems to have enough information to do that...