00:04:03 -!- nooodl has quit (Ping timeout: 240 seconds). 00:36:35 -!- yorick has quit (Remote host closed the connection). 00:54:00 -!- mhi^ has quit (Quit: Lost terminal). 01:47:51 -!- Phantom__Hoover has quit (Read error: Connection reset by peer). 01:55:14 -!- augur has joined. 01:59:40 -!- augur has quit (Ping timeout: 250 seconds). 02:04:43 -!- Tritonio1 has joined. 02:07:22 -!- Tritonio has quit (Ping timeout: 245 seconds). 03:00:19 -!- augur has joined. 03:17:19 -!- augur has quit (Read error: Connection reset by peer). 03:17:50 -!- augur has joined. 03:40:49 If I have a C struct like struct foo { bla bla bla; char bar[1]; } what's the number do? 03:42:03 Bike: What number are you meaning, the array length? 03:42:09 yeah 03:43:50 Clearly, it is the length of the array; it has one element. 03:44:00 So that is how much space is allocated in the structure. 03:44:43 the code i'm looking at allocates more than that, though, is why i'm wondering 03:45:08 How do you mean? 03:46:20 typedef struct symbol_s { size_t length; char string[1]; } symbol_s; and then for a symbol it allocates offsetof(symbol_s, string) + length + 1 03:47:01 That is a workaround for the lack of the GNU extension allowing an array length to be zero. 03:47:29 If GNU extensions are used you can avoid this by declaring the array length as zero, therefore allocating no space at all in the structure. It is pretty useful actually. 03:47:56 so is it conformant? like, does that let you have the string be longer? 03:48:09 the 1 is for a null terminator so not being zero is okay, i guess 04:03:09 -!- augur has quit (Remote host closed the connection). 04:49:48 -!- simpleirc has joined. 04:49:55 -!- copumpkin has joined. 04:52:34 -!- simpleirc has quit (Remote host closed the connection). 05:03:19 -!- augur has joined. 05:04:55 -!- augur has quit (Read error: Connection reset by peer). 05:05:02 -!- augur has joined. 05:16:02 Bike: The "struct hack" is generally considered to not be 100% kosher. 05:16:19 Bike: That's possibly why C99 added the flexible-length array members as a workaround. 05:16:21 but well known enough to be named, huh 05:16:38 Yes. 05:16:39 http://c-faq.com/struct/structhack.html 05:16:55 The fact it's so common is possibly why C99 added the flexible-length array members as a workaround. 05:17:36 These days you can write struct foo { size_t length; char string[]; } and it'll be somewhat like the GCC zero-length array. 05:17:42 (There are slight differences.) 05:18:37 I said that C99 thing twice? Uh. Well, I just woke up. 05:19:19 oh, link's perfect, thanks 05:19:39 char string[] is more what i'd expect, though, good to know 05:20:02 i just wasn't sure if foo[1] in a struct actually meant "length one" instead of like in function arguments (?) where it's bullshit 05:20:03 People still avoid C99 features. I mean, it's just 15 years by now. 05:20:17 not even old enough for a driver license 05:20:29 And admittedly it's not like MSVC still supported it. 05:20:35 actually, at my job I can't use C99, so like -_- 05:21:02 I prefer the GNU zero length arrays because it is more sensible to me. They also don't even have to be at the end of a structure, and zero-length arrays can be used in unions too, I think; isn't it? 05:21:03 not that this is for work. 05:22:51 I assume they can; I think you can put a zero-length array anywhere a regular array can go. 05:23:49 Though having it in the middle of a struct does not sound incredibly useful. 05:24:24 Maybe if you want multiple ones in one struct? 05:24:41 still at the end so you can use offsetof on everything else, i guess 05:25:28 Another use of zero-length arrays might also be for use of sizeof in macros, for example sizeof(((struct XYZ*)0)->array0[0]) or whatever might be used 05:25:29 fizzie: is there any source for the reading of the spec which forbids it? 05:25:32 Would this work? 05:26:08 And I think having it in the middle can be useful, not only if you want multiple ones, but also for purposes of offsets in many cases, I believe. 05:26:47 elliott: http://www.open-std.org/jtc1/sc22/wg14/docs/rr/dr_051.html 05:27:24 Though I think comp.lang.c disagreed even on the "safer idiom" presented there. 05:29:10 the safer one looks more dangerous to me 05:29:15 you don't even have a full object 05:29:29 you can't dereference p 05:29:58 Yes. And there was something about accessing structure members. 05:30:41 the reason for rejecting the original program seems rather fishy 05:31:01 like it's extending an implementation freedom way beyond what it'd actually be able to do without breaking the language 05:32:04 Bounds-checking by "fat" pointers that contain the declared length was explicitly allowed somewhere, I think. 05:32:25 That's the usual justification; it could throw some sort of an assertion error on access beyond that. 05:36:53 «Dennis Ritchie has called it ``unwarranted chumminess with the C implementation,''» i might be more sympathetic to this if i'd ever seen a conforming program in my life 05:37:13 int main(void) { return 0; } /* there you go */ 05:37:32 well this code does https://twitter.com/mnxmnkmnd/status/498249666216357889 so i'm just asking for pedantry reasons 05:41:00 so in C before 99 there's no way to lay out a pascal string, is what i'm getting out of this 05:49:06 Not so "natively". You can have a char * and treat the first byte or few differently. 05:50:47 A char * can alias anything, so macros doing #define DATA(x) ((x) + sizeof (size_t)) and SIZE(x) (*(size_t*)x) should be okay, I think. 05:51:20 Add a pair of parens around x in the latter. 05:51:23 i really don't like c's typos, i think. 05:51:26 types. 05:51:28 whatever 05:52:14 I just abused tables I think 05:52:30 Momentarily tricked myself into thinking "playback button and two download links" counts as tabular data 05:56:10 The other day, I did a "table with no table", by having

...

...
and then CSS form { display: table; } form > p { display: table-row; } label, select, input { display: table-cell; } 05:56:15 I don't know if that's good or bad. 05:56:29 kmc would know 05:57:35 (Also the thing I made was a JavaScript port of a 12 years old poem generator. I'd've linked it here, but it's all in Finnish.) 05:58:03 (I'd written "sources coming soon" in the original, and for a decade now a friend had been reminding me of it.) 05:58:27 does it generate poems similar to ones written by 12-year-olds 05:58:34 (12-year-olds can write some good poems) 06:00:30 That depends on the 12-year-old, I'm sure. 06:00:36 http://zem.fi/runogen/ 06:02:11 That's the usual justification; it could throw some sort of an assertion error on access beyond that. 06:02:23 fizzie: how does that interact with allocating space for 10 structs and using a pointer to that, in general? 06:02:36 i am amused at the finnish for "oh no" 06:02:57 elliott: I think the general expectation is that only declared arrays would be bounds-checked. 06:03:16 With some RTTI-style thingamajick. 06:04:11 But I don't know. Certainly it would sound to make more sense to just deal with bytes, and have malloc return something that contains the bounds of the allocated space. 06:10:04 right, I'm just wondering if you can actually construct a conforming implementation that breaks the hack 06:10:30 Another scenario where I could possibly imagine the struct hack to fail is a segmented memory architecture, like the x86-16. You have to be careful with objects larger than 64k, and the compiler might look at the struct declaration, and compile those array accesses into something that is not careful, on account of the object always being small enough. 06:11:53 it sucks that you have to reimplement structs on top of char arrays to get it to work nicely 06:11:57 actually, maybe you could make macros for that? 06:12:09 [08:52:40] A char * can alias anything, so macros doing #define DATA(x) ((x) + sizeof (size_t)) and SIZE(x) (*(size_t*)x) should be okay, I think. 06:12:11 have a struct define the data layout but allocate it as char * and use offsetof and casts 06:12:13 Wasn't that essentially it? 06:12:16 yeah, but you could do it more generally. 06:12:52 I guess. You'd probably have to spell the type in each invocation of the macro, though. 06:13:20 Unlike regular member access. 06:13:27 are you allowed to do like... 06:13:53 &(((struct repr *)charptr)->array[100]) 06:13:56 I guess not. 06:14:18 but ((char *) (((struct repr *)charptr)->array))[100] is probably okay? 06:14:51 Hypothetical segmented-memory breakage: compile "a = s->p[b]" into "load canonicalized address s into fs:bx, then add b to bx without worrying about overflow". 06:15:22 s/add b/add offset of p and b/ 06:17:32 (Segmented architectures are good for breaking "pointers are integers" assumptions.) 06:18:51 how would a segmented architecture work with allocating a big (char *)? 06:19:15 You just represent pointers with (canonicalized) segment:offset pairs. 06:19:36 right, okay. 06:19:51 The point is that the compiler might (legally) look at the declared sizeof (struct s) and be all "I don't need to do the complicated address calculation since the object is small enough". 06:25:17 -!- Tritonio1 has quit (Ping timeout: 245 seconds). 06:40:20 -!- Phantom_Hoover has joined. 07:10:01 -!- scoofy has quit (Quit: Leaving). 07:11:49 -!- oerjan has joined. 07:16:16 fuck, it's not been indexed <-- i am concluding that you've been transfered here from a parallel universe, and it never existed here hth 07:17:14 (your computer was also transfered. expect mysterious bugs.) 07:22:33 -!- scoofy has joined. 07:35:12 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds). 07:49:19 -!- zzo38 has left. 07:49:21 -!- zzo38 has joined. 07:55:26 -!- edwardk has quit (Ping timeout: 250 seconds). 08:03:43 -!- edwardk has joined. 08:25:19 -!- Patashu has joined. 08:26:40 -!- impomatic_ has joined. 08:29:17 -!- Patashu_ has joined. 08:29:17 -!- Patashu has quit (Disconnected by services). 08:33:12 -!- MindlessDrone has joined. 08:40:55 -!- MoALTz has joined. 09:15:03 -!- mhi^ has joined. 09:16:11 -!- mihow has quit (Read error: Connection reset by peer). 09:18:26 -!- mihow has joined. 09:58:30 -!- Patashu_ has quit (Ping timeout: 246 seconds). 09:59:21 -!- Patashu has joined. 10:02:17 -!- Patashu has quit (Remote host closed the connection). 10:02:48 -!- Patashu has joined. 10:06:23 -!- nooodl has joined. 10:36:52 -!- MoALTz has quit (Ping timeout: 245 seconds). 10:37:36 -!- MoALTz has joined. 10:53:22 -!- Patashu has quit (Ping timeout: 264 seconds). 11:16:03 @metar lowi 11:16:04 LOWI 111050Z 07006KT 040V120 9999 FEW008 SCT022 BKN070 18/16 Q1016 NOSIG 11:19:26 @metar EFHK 11:19:27 EFHK 111050Z 15011KT 120V190 9999 SCT023 BKN200 24/17 Q1008 NOSIG 11:19:32 Inside, +28. 11:23:53 that's just not right 11:23:59 @metar ENVA 11:24:00 ENVA 111050Z 13014KT 9999 VCSH SCT057 21/09 Q0999 NOSIG RMK WIND 670FT 15020KT 11:30:55 It has been a strange summer. 11:38:02 -!- yorick has joined. 11:41:22 -!- augur_ has joined. 11:44:38 -!- augur has quit (Ping timeout: 260 seconds). 12:01:57 -!- Sgeo has quit (Read error: Connection reset by peer). 12:17:03 -!- atehwa has joined. 12:18:11 -!- oerjan has quit (Quit: leaving). 12:21:52 -!- MoALTz has quit (Ping timeout: 240 seconds). 12:27:19 -!- Tritonio has joined. 12:45:59 -!- Phantom_Hoover has joined. 13:36:58 -!- emperiz has joined. 13:37:35 -!- emperiz has left ("Leaving"). 13:41:32 cfunge's RNG seems slightly less than robust: diehard_bitstream| 0| 2097152| 100|0.00000000| FAILED 13:45:09 http://sprunge.us/XNhL 13:56:06 That's a small p. 13:58:30 If I understand the man page correctly, that's the p of the 100 test run ps 14:02:10 The cfunge ? is just "random() % 4" though. 14:04:51 Perhaps it has poor low bits. Though I thought that was just an urban legend in modern systems. 14:09:07 http://sprunge.us/ZSNC well, this program gives the same result on that system so yep 14:14:13 Well, outputting all of random() also fails 14:17:33 On two quite different systems, maybe glibc's random() is just rather less than good 14:44:46 -!- idris-bot has quit (Ping timeout: 260 seconds). 14:46:49 -!- Melvar` has joined. 14:47:11 -!- Melvar has quit (Ping timeout: 244 seconds). 14:47:54 -!- Melvar` has changed nick to Melvar. 15:09:39 arc4random time 15:09:47 funge crypto 15:13:08 arc4random does a better job (unsurprisingly?) 15:19:01 really putting a damper on my funge port of openssl 15:20:41 I think people don't realize the magnitude of this discovery; it means fungot hasn't realized its full potential 15:20:41 Deewiant: so continue getting up in the same file?) tomorrow. :p 15:20:55 fungot: :p 15:20:55 shachaf: it might be worth considering using memq or memv...) idiom sounds like a good idea 15:23:16 Deewiant: surely arc4random or whatever is a bit slow for general purpose ?, though. 15:23:20 I guess funge is slow. 15:23:37 how slow *is* ccbi2/cfunge/whatever, compared to a realer interpreted language? 15:24:34 Well you don't need a crypto-quality RNG to not fail that hard in dieharder 15:25:05 -!- MoALTz has joined. 15:25:18 But I'm pretty sure you'd have to something stupid like k? to make RNG the bottleneck in a non-JIT funge interpreter 15:25:25 +do 15:26:11 And re. "how slow" my intuition says "very" 15:26:31 Don't think a proper comparison has ever been done though 15:32:03 -!- Tritonio has quit (Ping timeout: 240 seconds). 15:33:34 it can't be much slower than the original MRI, right? :) 15:34:33 Ruby was the first comparison I thought of too but it's a bit of an outlier :-P 15:46:24 are you saying funge-98 can't power web 4.0? 15:46:38 before they all move to intercal because it's faster, or something. 15:46:43 Sure it can, it just needs some more hardware than alternatives might 15:47:30 that's okay, people love throwing money at EC2 15:48:08 Anyway, feel free to write a somewhat time-consuming program in Ruby and translate it to Befunge-98 and give them a spin 15:51:27 I don't think I've ever written a -98 program in my life. 15:51:44 also it seems like it'd depend a lot on the kind of code structure you end up with. 15:56:02 -!- edwardk has quit (Quit: Computer has gone to sleep.). 15:56:24 Deewiant: Did you test glibc's rand() too? 15:56:26 So write it compactly :-P 15:56:37 fizzie: No but I can 15:58:24 Also lrand48. 15:58:52 I can't quite get out of the glibc manual whether rand() and random() share the PRNG. 15:58:57 Thus far seems to fail similarly 15:59:11 The latter's API allows for a larger state, at least. 15:59:47 On the other hand, "There is no advantage to using [random() and friends] with the GNU C Library", and "The BSD and ISO C functions provide identical, somewhat limited functionality." 16:00:14 dieharder has built-in support for "rand48" which I guess is the same as lrand48 since its man page specs the generator 16:00:47 Oh, I guess it's standardized. 16:01:40 It seems to fail but in different ways 16:01:50 -!- edwardk has joined. 16:01:52 -!- edwardk has quit (Client Quit). 16:02:33 "idiom sounds like a good idea." 16:03:36 Also I generated some europarl test babble here, and one gem came out of it: 16:03:37 "i wish to draw your attention to the dangers for small publishers, we are unable to drink alcohol for health reasons." 16:06:56 Hardware with a kind of two dimensional address increment already exists, but it cannot run backwards. However, it should not be too much difficult to extend to make new thing which can run backward and forward too. 16:08:12 We were going to design a Befunge-y coprocessor on a "computer hardware architecture" course project, but then never did. 16:10:34 OK 16:11:45 But the hardware I was refering to was the Nintendo Family Computer; the PPU (picture processing unit) has two dimensional address increment. I have taken advantage of this address increment for this other than graphics, actually. 16:13:33 i hope that the amendment from mrs auroi requesting the deletion of annex xv as an implicit violation of the principles of the world in the twenty-first century. 16:18:04 -!- edwardk has joined. 16:25:28 -!- edwardk has quit (Ping timeout: 250 seconds). 16:25:49 -!- edwardk has joined. 16:27:21 -!- edwardk has quit (Read error: Connection reset by peer). 16:27:29 -!- edwardk_ has joined. 16:31:58 -!- edwardk_ has quit (Ping timeout: 250 seconds). 16:34:24 -!- Tritonio has joined. 16:57:02 -!- mihow has quit (Quit: mihow). 17:01:02 -!- MindlessDrone has quit (Quit: MindlessDrone). 17:03:40 -!- ^v has quit (Ping timeout: 272 seconds). 17:07:19 -!- ^v has joined. 17:11:53 -!- edwardk has joined. 17:35:33 -!- Tritonio has quit (Ping timeout: 240 seconds). 17:35:39 What would you think of this so far? https://allthetropes.orain.org/wiki/User:Zzo38/Super_ASCII_MZX_Town You are expected to complain about it please. 17:38:27 Oh man, that takes me back. 17:38:54 I haven't messed with MZX in years. 17:40:09 -!- Tritonio has joined. 17:42:34 How much have you done with it at all? 17:43:47 Not a damn thing in over a decade. 17:44:58 But when you did, how much did you work on it? 17:46:16 I used to play around with ZZT as a kid, but never got far learning to actually make much. I knew about MZX then, but couldn't run it on my mono-screened 8086 and 286, but I tinkered with it later when I finally got a real computer. 17:49:01 I also used ZZT; I have figured out several things about it, and made good guesses as to other things. I have managed to decode the internal table of the kind of pieces, and have tried tampering with it to test my hypotheses, which turned out correct. This reveals why water has a forced color only in the editor. 17:55:42 -!- mihow has joined. 18:04:19 -!- zzo38 has quit (Remote host closed the connection). 18:05:41 -!- ^v has quit (Read error: Connection reset by peer). 18:06:02 -!- ^v has joined. 18:11:53 -!- sebbu has quit (Ping timeout: 240 seconds). 18:25:09 -!- idris-bot has joined. 18:31:57 -!- edwardk has quit (Ping timeout: 246 seconds). 18:49:01 -!- oerjan has joined. 18:52:14 [wiki] [[Befunge]] http://esolangs.org/w/index.php?diff=40282&oldid=40278 * 87.217.28.236 * (+90) /* Befunge-93 */ 18:55:00 BAD: 900pg doesn't get 9 18:55:09 Bzzt, try again 18:56:45 lolwat awkfunge 18:57:07 the pun is _too_ obvious. 18:58:13 what is the pun. 18:58:16 Deewiant: you should add pass/fail marks to all of the listed interpreters twh 18:58:28 elliott: well it's a little awkward to explain 18:58:46 i demand sedfunge 18:59:22 maybe you can reuse the featured article gif 18:59:35 oerjan: Not interested enough in -93, those things are a dime a dozen 19:00:27 it's not a gif 19:00:46 oh, it is. 19:00:50 well, it's a png. 19:01:03 i wasn't finished checking that. 19:05:29 is this some predefined class? the mention in common.css has no image 19:05:53 vector.css handles the rest 19:06:00 in other skins it's just text in {{featured language}}. 19:06:08 since the CSS to move an icon into the right place is skin-specific. 19:06:26 ah 19:08:03 -!- edwardk has joined. 19:08:08 oh, not reusable for this as is 19:15:02 I *really* should finish up that sedfunge. 19:16:07 (I started writing one at one point.) 19:16:45 I wonder how much it does. 19:17:08 There are some comments about stringmode, and implementations for 0..9 to push stuff. 19:17:14 And + and @. 19:17:25 That seems to be the entirety of implemented commands. 19:17:34 As long as it has a ? that passes dieharder I'm happy 19:17:52 It doesn't have a ? at all, which probably doesn't count. 19:18:34 I like the bit that extracts the current command from the playfield, though: http://sprunge.us/GPKM 19:19:20 Not having a ? counts as "always produces the same value" or "crashes" neither of which will make dieharder happy 19:19:48 Always produces the same value, in this case. 19:19:53 This interpreter looks slow 19:20:01 Though it doesn't have a "," either, so your test code would not generate any output. 19:21:09 Something zipper-like might've made the main loop faster. 19:22:12 Oh, the stringmode doesn't exist either. 19:23:23 At least the binary arithmetic is reasonably compact. 19:23:53 Does it use GNU features or is it solaris-compatible 19:24:14 I don't really remember what GNU features are. It's just t, s and b. 19:25:19 I don't think it's anything non-POSIX. But it's *really* incomplete. 19:28:13 eFLQRTvWz are GNU-only commands, ailrsw= have some GNU-specific stuff, and the address and pattern formats of course have some GNU extensions as well 19:28:26 (Based on a quick browse of the info page) 19:29:54 I'm reasonably certain there's none of those. 19:30:26 -!- nortti has changed nick to lawspeaker. 19:32:12 -!- lawspeaker has changed nick to nortti. 19:33:28 -!- Bike_ has joined. 19:34:54 -!- Bike_ has changed nick to Bicyclidine. 19:40:21 -!- nortti has changed nick to lawspeaker. 19:41:42 -!- lawspeaker has changed nick to nortti. 20:08:01 Are there opensource license that can be altered? 20:08:16 I.e. extended with my own conditions or changed otherwise 20:08:25 all the ones i know say any alterations require the name to be changed 20:08:52 -!- sebbu has joined. 20:09:18 wtfpl 20:09:23 I have no problem changing the Name of the license 20:09:23 and of course, no alterations are allowed when modifying a work already released under a particular license 20:09:28 -!- sebbu has quit (Changing host). 20:09:28 -!- sebbu has joined. 20:09:38 the question is - however - if it's legal to change the license text of an existing license 20:09:46 "The FSF permits people to create new licenses based on the GPL, as long as the derived licenses do not use the GPL preamble without permission. " 20:09:51 (i.e. the license itself might be under some copyright law or something) 20:09:53 GPL's copyrighted though. 20:10:03 licenses are copyrighted like any other work, sure 20:10:13 unless legal documents are exempt from copyright? 20:10:17 that sounds like it could be a thing in some jurisdictions 20:10:21 I'd prefer something simple like BSD-style licenses 20:10:23 BSD license is public domain 20:10:29 says wikipedia. so go crazy 20:10:55 elliott: there have been court cases about being able to sell legal documents, it's pretty funny 20:12:27 -!- MoALTz has quit (Quit: Leaving). 20:14:58 like that one photocopier thing, now that i think about it 20:25:27 -!- nooodl has quit (Read error: Connection reset by peer). 20:25:55 -!- nooodl has joined. 20:37:21 what's the opposite of free of charge btw? 20:38:00 depends on context. "at cost", say 20:39:15 fully charged hth 20:39:19 Or "charged", as in, charged part.. 20:39:22 form an arm and a leg 20:39:24 You ruin my thing. :/ 20:39:31 fizzie: SORRY 20:41:06 ok wait 20:41:14 if I write some Foo.c 20:41:22 let's say I put it under BSD 20:41:34 -!- edwardk has quit (Quit: Computer has gone to sleep.). 20:41:35 somebody modifies it and redistributes it 20:41:44 I'm a the sole copyright holder? 20:41:55 I assume not 20:42:06 i.e. what's the distinction between copyright holder and contributor then? 20:43:20 I.e. let's say I don't care if they don't disclose the source as long as they donnate some money to a charity organization for example 20:43:28 you both hold copyright over the resulting Foo.c. 20:43:33 are such condtions even legal? 20:43:34 you own sole copyright over the original Foo.c. 20:44:17 everyone holds copyright on the contributions they made, but disentangling them from the whole means that any itemisation of ownership beyond, say, function-level granularity is iffy 20:45:06 it's the sort of thing that leads to the GNU not accepting patches unless you cede copyright 20:45:56 that's more because they want to be able to litigate violations of the license and change the license 20:45:57 Linux kernel doesn't, and as a result it now has a metric billion of copyright owners. 20:46:13 (I think it's something you want for legal action, at least?) 20:46:44 I don't know who would be able to sue for someone violating Linux's license. maybe the N top contributors joint or something 20:46:54 -!- zzo38 has joined. 20:47:28 class action intellectual property suit. let's do it. 20:47:42 It also means nobody can change the license, since it's utterly impossible to get permission from every contributor. 20:49:21 I know that e.g. Apache doesn't quite do copyright assignments, but instead has a separate thing you sign (the Contributor License Agreement) that gives them a very permissive license to e.g. further sublicense your stuff. 20:50:17 21:45:56 <@elliott> that's more because they want to be able to litigate violations of the license and change the license 20:50:18 exercise: apply http://homepages.law.asu.edu/~dkarjala/opposingcopyrightextension/commentary/MacaulaySpeeches.html to linux somehow 20:50:38 I like the parts of legalese that work by the "let's look at the dictionary for all possible related terms" principle. 20:51:16 "-- a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, --" 20:52:00 -!- edwardk has joined. 20:53:12 A license to offer to sell, but not to sell, sounds useful. 20:57:47 i can imagine it. like, a firm that advertises but when it comes to the actual sale they refer you to the seller and get a finder's fee 21:01:12 For random number tests, I know there is Diehard and stuff but I have the other idea, where basically you have a program of type ((Eq x, Ord x, Enum x) => Free ((->) Bool) x) for some kind of x. 21:01:44 How well do you expect such thing to work? 21:01:48 zzo38: Do you have more ideas about LeftCo now? 21:03:18 Yes, in fact I realized what it was the next day after you showed me but may have forgotten to mention it. 21:04:06 But now I forgot the type so can you remind me again please? 21:04:24 "data LeftCo m f x = forall z. LeftCo (f (m z) -> x) (f z)" 21:06:51 O, yes it appears to be a comonad: duplicate (LeftCo x y) = LeftCo (\a -> LeftCo (x . fmap join) (return <$> y)); I think. Maybe I made a mistake though... 21:10:02 Does this looks like correct to you? 21:10:30 O no, I think (return <$> y) is probably wrong, I guess 21:10:35 -!- Phantom__Hoover has joined. 21:10:41 I'm not sure. 21:10:42 Just y by itself I think 21:10:46 Where did the type come from? 21:10:53 What are m and f? 21:11:59 I don't know where it come from 21:12:14 Apparently "m" means monad and "f" means functor, though 21:12:32 f is used twice, which is a bit odd. 21:13:16 I came up with data Oc m a = forall x. Oc x (m x -> a) (which is just LeftCo with f=Id) before seeing your post 21:13:24 But that doesn't work very well 21:13:33 So I'm wondering what the function of f is. 21:17:15 I also don't know 21:36:27 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds). 21:45:42 -!- edwardk has quit (Ping timeout: 260 seconds). 21:46:28 -!- not^v has joined. 22:12:10 -!- oerjan has quit (Quit: Nite). 22:26:24 -!- Phantom_Hoover has joined. 22:28:45 -!- Phantom__Hoover has quit (Ping timeout: 272 seconds). 22:38:54 -!- Sgeo has joined. 22:53:08 -!- Bicyclidine has quit (Ping timeout: 240 seconds). 22:54:56 -!- edwardk has joined. 23:24:27 -!- mhi^ has quit (Quit: Lost terminal). 23:26:55 -!- Sprocklem has joined. 23:31:03 -!- yorick has quit (Remote host closed the connection). 23:36:16 -!- Bike has quit (Read error: No route to host). 23:36:42 -!- Bike has joined. 23:41:25 -!- not^v has quit (Ping timeout: 244 seconds). 23:42:00 But what would you think of this new kind of probability stuff I proposed too?