2015/03/29

2015-03-29 00:01:50 +0100co-arbelos(~arbelos@2.68.58.216.mobile.tre.se)
2015-03-29 00:04:38 +0100arbelos(~arbelos@37.250.73.194.bredband.tre.se) (Ping timeout: 252 seconds)
2015-03-29 00:04:51 +0100dkinitia1e(~dk@bzq-79-179-61-60.red.bezeqint.net)
2015-03-29 00:07:49 +0100dkinitiate(~dk@bzq-109-65-3-208.red.bezeqint.net) (Ping timeout: 256 seconds)
2015-03-29 00:13:50 +0100Guest76664(~cesar@2602:306:8b64:bd0:50db:fdaf:fbb2:70cd) (Remote host closed the connection)
2015-03-29 00:14:22 +0100tesuji_(~tesuji@unaffiliated/tesuji) (Ping timeout: 272 seconds)
2015-03-29 00:32:11 +0100cesar_(~cesar@104-182-64-189.lightspeed.sndgca.sbcglobal.net)
2015-03-29 00:32:35 +0100cesar_Guest14263
2015-03-29 00:41:19 +0100Guest14263(~cesar@104-182-64-189.lightspeed.sndgca.sbcglobal.net) (Remote host closed the connection)
2015-03-29 01:03:49 +0100swgillespie(~textual@104.232.112.57) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
2015-03-29 01:06:16 +0100 <Springwight> I'm writing a library of collections. Some of the collections are sets that support set-theoretic operations like Intersection very efficiently, if the same set is the same, but I want to support set-theoretic operations with arbitrary sequences or other sets as well.
2015-03-29 01:07:00 +0100 <Springwight> Should I create one Inersection method accepting a sequence and then type test and invoke the optimized method if the collection is of the same type, or should I have separate overloads?
2015-03-29 01:07:10 +0100 <Springwight> The main objection to overloads is issues with type inference
2015-03-29 01:08:15 +0100 <Springwight> Having separate overloads is mainly for appearances sake to be honest.
2015-03-29 01:11:49 +0100 <Zor> i would go with one function and a type test optimization
2015-03-29 01:12:05 +0100 <Zor> this is what basically all methods in System.Linq do
2015-03-29 01:12:09 +0100mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net) (Quit: Computer has gone to sleep.)
2015-03-29 01:15:31 +0100 <Springwight> That's true
2015-03-29 01:15:58 +0100irrequietus(~irrequiet@unaffiliated/irrequietus) ()
2015-03-29 01:16:07 +0100mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net)
2015-03-29 01:23:33 +0100 <Springwight> A problem is that not that many people know LINQ does this
2015-03-29 01:24:05 +0100 <Springwight> And you can't be sure when it will optimize itself and when it won't. But maybe I can just add this in the documentation.
2015-03-29 01:30:22 +0100mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net) (Quit: Computer has gone to sleep.)
2015-03-29 01:32:40 +0100swgillespie(~textual@104.232.112.57)
2015-03-29 01:33:24 +0100J_Arcane(~chatzilla@dsl-trebrasgw1-50dff2-22.dhcp.inet.fi) (Read error: No route to host)
2015-03-29 01:50:17 +0100Springwight(~kvirc@bzq-109-65-183-140.red.bezeqint.net) (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/)
2015-03-29 03:03:19 +0200mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net)
2015-03-29 03:29:57 +0200cesar_(~cesar@2602:306:8b64:bd0:6db2:b801:2d0c:1fc4)
2015-03-29 03:29:58 +0200dkinitia1e(~dk@bzq-79-179-61-60.red.bezeqint.net) (Ping timeout: 265 seconds)
2015-03-29 03:30:21 +0200cesar_Guest39296
2015-03-29 03:30:38 +0200dkinitiate(~dk@bzq-79-179-61-60.red.bezeqint.net)
2015-03-29 03:35:00 +0200Guest39296(~cesar@2602:306:8b64:bd0:6db2:b801:2d0c:1fc4) (Ping timeout: 256 seconds)
2015-03-29 04:02:34 +0200knocte(~smuxi@62.80.20.142) (Remote host closed the connection)
2015-03-29 04:03:43 +0200knocte(knocte@knocte.cloud.smuxi.net)
2015-03-29 04:05:20 +0200darkf(~darkf___@unaffiliated/darkf)
2015-03-29 04:16:25 +0200mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net) (Quit: Computer has gone to sleep.)
2015-03-29 04:19:58 +0200mizu_no_oto(~textual@50.153.148.182)
2015-03-29 04:43:35 +0200TEttinger(~notostrac@76-217-26-45.lightspeed.irvnca.sbcglobal.net)
2015-03-29 05:08:14 +0200mizu_no_oto(~textual@50.153.148.182) (Quit: Computer has gone to sleep.)
2015-03-29 05:18:49 +0200cesar_(~cesar@2602:306:8b64:bd0:3426:e9c3:3048:6fdc)
2015-03-29 05:19:12 +0200cesar_Guest71918
2015-03-29 05:23:33 +0200Guest71918(~cesar@2602:306:8b64:bd0:3426:e9c3:3048:6fdc) (Ping timeout: 265 seconds)
2015-03-29 05:24:52 +0200idegen(~greg@static-50-53-108-129.bvtn.or.frontiernet.net) (Ping timeout: 255 seconds)
2015-03-29 05:44:05 +0200Sgeo_(~quassel@ool-44c2a85f.dyn.optonline.net) (Read error: Connection reset by peer)
2015-03-29 05:46:47 +0200Sgeo(~quassel@ool-44c2a85f.dyn.optonline.net)
2015-03-29 06:00:36 +0200VandroiyIII(~FD@unaffiliated/vandroiy)
2015-03-29 06:03:53 +0200Vandroiy(~FD@unaffiliated/vandroiy) (Ping timeout: 246 seconds)
2015-03-29 06:25:41 +0200_E(~emanuel@fsf/member/emanuelz)
2015-03-29 06:27:16 +0200emanuelz(~emanuel@fsf/member/emanuelz) (Ping timeout: 256 seconds)
2015-03-29 06:27:16 +0200_Eemanuelz
2015-03-29 06:32:28 +0200luka1(luka@gateway/vpn/mullvad/x-zsipbvmgfnhbssze) (Remote host closed the connection)
2015-03-29 06:32:29 +0200deb4ever(deb4ever@gateway/vpn/mullvad/x-lygpxdiesiaebvgq)
2015-03-29 07:07:37 +0200cesar_(~cesar@2602:306:8b64:bd0:c90b:cbea:2526:3221)
2015-03-29 07:08:00 +0200cesar_Guest22824
2015-03-29 07:12:47 +0200Guest22824(~cesar@2602:306:8b64:bd0:c90b:cbea:2526:3221) (Ping timeout: 265 seconds)
2015-03-29 07:28:39 +0200arbelos(~arbelos@2.68.33.179.mobile.tre.se)
2015-03-29 07:29:42 +0200co-arbelos(~arbelos@2.68.58.216.mobile.tre.se) (Ping timeout: 265 seconds)
2015-03-29 08:12:21 +0200dkinitiate(~dk@bzq-79-179-61-60.red.bezeqint.net) (Read error: Connection reset by peer)
2015-03-29 08:13:37 +0200ericwa(~ericwa@d199-126-128-107.abhsia.telus.net) (Quit: Leaving...)
2015-03-29 08:56:29 +0200cesar_(~cesar@2602:306:8b64:bd0:512d:c49b:265e:3332)
2015-03-29 08:56:51 +0200cesar_Guest86209
2015-03-29 09:00:24 +0200riksteri(~purple@dsl-tkubrasgw3-54f96b-216.dhcp.inet.fi)
2015-03-29 09:01:32 +0200Guest86209(~cesar@2602:306:8b64:bd0:512d:c49b:265e:3332) (Ping timeout: 265 seconds)
2015-03-29 09:40:12 +0200Sorella(uid49404@oftn/member/Sorella) (Quit: Connection closed for inactivity)
2015-03-29 10:01:02 +0200 <RandomStranger> Can I compile fsx files? I don't see that fsharp interactive supports .exe output
2015-03-29 10:06:42 +0200tarkus(~hello@109.230.140.12)
2015-03-29 10:15:53 +0200 <Kristallo> try using the compiler
2015-03-29 10:16:02 +0200 <Kristallo> fsc program.fsx
2015-03-29 10:17:58 +0200 <RandomStranger> Will this evaluate reference instructions?
2015-03-29 10:18:34 +0200 <Kristallo> I don't know, I just know it once worked on some file
2015-03-29 10:19:18 +0200 <RandomStranger> It seems so, as an invalid #r instruction throws an error on compilation.
2015-03-29 10:19:49 +0200 <Kristallo> so it just treats it as a normal .fs file then
2015-03-29 10:21:04 +0200 <RandomStranger> But it values the instructions, seemingly
2015-03-29 10:21:36 +0200 <RandomStranger> Then I gotta see how to adjust this program so it runs under interactive, and normally.
2015-03-29 10:24:55 +0200J_Arcane(~chatzilla@dsl-trebrasgw1-50dff2-22.dhcp.inet.fi)
2015-03-29 10:25:00 +0200co-arbelos(~arbelos@2.71.131.51.mobile.tre.se)
2015-03-29 10:27:22 +0200arbelos(~arbelos@2.68.33.179.mobile.tre.se) (Ping timeout: 252 seconds)
2015-03-29 10:33:48 +0200 <RandomStranger> http://pastebin.com/WgUMGZWR <- This works. Doesn't look nice however.
2015-03-29 10:35:03 +0200 <Kristallo> it is a very unusual thing to do
2015-03-29 10:35:15 +0200 <RandomStranger> Is it?
2015-03-29 10:35:26 +0200 <RandomStranger> In the end I want an exe. But I also want to use it in interactiv ewhile working on it
2015-03-29 10:36:01 +0200 <RandomStranger> http://pastebin.com/UBg6KUVH <- This is my solution now, which doesn't look bad.
2015-03-29 10:36:18 +0200 <Kristallo> I never use the interactive so I don't know how the experts do it
2015-03-29 10:39:31 +0200 <RandomStranger> What I gathered: Interactive is just running the script, and done. It's not calling any method to start, like a program does. An [<EntryPoint>] may just be there when it's compiled to exe, not when ran interactive. It also must be the last element.
2015-03-29 10:40:43 +0200tarkus(~hello@109.230.140.12) (Ping timeout: 256 seconds)
2015-03-29 10:41:38 +0200tesuji_(~tesuji@unaffiliated/tesuji)
2015-03-29 10:42:54 +0200 <Kristallo> I am pretty sure I have programs without [<EntryPoint>]
2015-03-29 10:43:12 +0200 <RandomStranger> dlls yes, .exe probably not.
2015-03-29 10:43:27 +0200 <RandomStranger> Or there's a convention going that it discovers "main" then. Not sure.
2015-03-29 10:45:22 +0200cesar_(~cesar@2602:306:8b64:bd0:fc02:8255:1bd6:fee7)
2015-03-29 10:45:45 +0200cesar_Guest44878
2015-03-29 10:47:46 +0200 <Kristallo> it works fine without entry point and withotu a main
2015-03-29 10:47:51 +0200 <Kristallo> just like a script file
2015-03-29 10:50:17 +0200Guest44878(~cesar@2602:306:8b64:bd0:fc02:8255:1bd6:fee7) (Ping timeout: 265 seconds)
2015-03-29 10:51:21 +0200Submarine(~toosexy@pas38-7-83-153-92-113.fbx.proxad.net)
2015-03-29 10:51:21 +0200Submarine(~toosexy@pas38-7-83-153-92-113.fbx.proxad.net) (Changing host)
2015-03-29 10:51:21 +0200Submarine(~toosexy@wikipedia/Monniaux/David)
2015-03-29 10:55:06 +0200 <Kristallo> "When a program has no EntryPoint attribute that explicitly indicates the entry point, the top level bindings in the last file to be compiled are used as the entry point."
2015-03-29 11:14:42 +0200 <RandomStranger> ah
2015-03-29 11:41:52 +0200irrequietus(~irrequiet@unaffiliated/irrequietus)
2015-03-29 11:43:42 +0200dkinitiate(~dk@mail.enopace.com)
2015-03-29 11:47:17 +0200dkinitiate(~dk@mail.enopace.com) (Client Quit)
2015-03-29 11:47:30 +0200dkinitiate(~dk@mail.enopace.com)
2015-03-29 11:56:00 +0200pyon(~suckmy@unaffiliated/pyon) (Read error: Connection reset by peer)
2015-03-29 11:57:57 +0200pyon(~suckmy@unaffiliated/pyon)
2015-03-29 12:26:32 +0200pyon(~suckmy@unaffiliated/pyon) (Ping timeout: 256 seconds)
2015-03-29 12:34:10 +0200cesar_(~cesar@2602:306:8b64:bd0:e1f5:b90c:272:cb79)
2015-03-29 12:34:34 +0200cesar_Guest26278
2015-03-29 12:36:05 +0200swgillespie(~textual@104.232.112.57) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
2015-03-29 12:39:00 +0200Guest26278(~cesar@2602:306:8b64:bd0:e1f5:b90c:272:cb79) (Ping timeout: 256 seconds)
2015-03-29 12:46:02 +0200VandroiyIIIVandroiy
2015-03-29 12:50:43 +0200arbelos(~arbelos@2.68.116.73.mobile.tre.se)
2015-03-29 12:52:34 +0200co-arbelos(~arbelos@2.71.131.51.mobile.tre.se) (Ping timeout: 252 seconds)
2015-03-29 12:56:27 +0200deb4ever(deb4ever@gateway/vpn/mullvad/x-lygpxdiesiaebvgq) (Remote host closed the connection)
2015-03-29 12:56:31 +0200whartung1(whartung@gateway/vpn/mullvad/x-pbeqiwobtvrhdbfq)
2015-03-29 12:56:44 +0200pyon(~suckmy@unaffiliated/pyon)
2015-03-29 13:04:17 +0200 <xenocons> RandomStranger: yes, #if is the best way, imo
2015-03-29 13:06:32 +0200dkinitiate(~dk@mail.enopace.com) (Read error: Connection reset by peer)
2015-03-29 13:06:57 +0200 <RandomStranger> If I have three functions, all with the signature 'a -> 'a, why does a method that does "m1 |> m2 |> m3" have a signature of 'a -> ('b -> 'b)?
2015-03-29 13:07:12 +0200 <RandomStranger> Ah.. I forgot to pass the arg
2015-03-29 13:26:02 +0200Sorella(uid49404@oftn/member/Sorella)
2015-03-29 13:35:25 +0200 <Kristallo> use >> instead of |> the next time you forget the arg
2015-03-29 13:39:33 +0200emanuelz(~emanuel@fsf/member/emanuelz) (Quit: emanuelz)
2015-03-29 13:47:49 +0200carvite(~carvite@unaffiliated/stryx/x-3871776) (Ping timeout: 264 seconds)
2015-03-29 13:58:56 +0200irrequietus(~irrequiet@unaffiliated/irrequietus) ()
2015-03-29 14:04:57 +0200 <arbelos> Hmm... I realized just now that I can write either type 'a X vs. type X<'a>
2015-03-29 14:05:55 +0200 <arbelos> for a trivial case like that, is there a difference?
2015-03-29 14:09:39 +0200carvite(~carvite@unaffiliated/stryx/x-3871776)
2015-03-29 14:11:55 +0200co-arbelos(~arbelos@2.69.241.75.mobile.tre.se)
2015-03-29 14:14:12 +0200co-arbelosarbelos\
2015-03-29 14:14:21 +0200arbelos\arbelos_
2015-03-29 14:14:44 +0200arbelos(~arbelos@2.68.116.73.mobile.tre.se) (Ping timeout: 265 seconds)
2015-03-29 14:15:28 +0200 <Kristallo> the last one is the .net style
2015-03-29 14:15:37 +0200tarkus(~hello@109.230.140.12)
2015-03-29 14:16:39 +0200 <arbelos_> it is not possible to define constraints and other fancy stuff with the type 'a X format, i suppose. or?
2015-03-29 14:19:32 +0200 <Kristallo> you can do this sort of thing
2015-03-29 14:19:33 +0200 <Kristallo> let inline (>>>>) (x: ^T when ^T : (static member (>>>) : ^T * int32 -> ^T)) (n: int) = x >>> n
2015-03-29 14:21:07 +0200 <arbelos_> hmm..
2015-03-29 14:21:40 +0200 <Kristallo> but it melts my brain
2015-03-29 14:22:41 +0200 <arbelos_> yes.. well, i think I prefer not using <_> if I can avoid
2015-03-29 14:22:56 +0200 <arbelos_> but I can see how it makes sense in a .NET-context
2015-03-29 14:23:02 +0200cesar_(~cesar@2602:306:8b64:bd0:b86a:86dc:e0a8:fb22)
2015-03-29 14:23:25 +0200cesar_Guest89055
2015-03-29 14:27:47 +0200Guest89055(~cesar@2602:306:8b64:bd0:b86a:86dc:e0a8:fb22) (Ping timeout: 265 seconds)
2015-03-29 14:32:25 +0200irrequietus(~irrequiet@unaffiliated/irrequietus)
2015-03-29 14:48:44 +0200ncd|leeN(~leeN@x55b5dbc7.dyn.telefonica.de)
2015-03-29 14:51:27 +0200leeN(~leeN@x55b4ded6.dyn.telefonica.de) (Ping timeout: 244 seconds)
2015-03-29 14:53:18 +0200TEttinger(~notostrac@76-217-26-45.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2015-03-29 15:15:21 +0200 <butyoudonot> how to get number of lines of a file in most sufficient way?
2015-03-29 15:18:03 +0200 <butyoudonot> readLines |> Seq.length ?
2015-03-29 15:31:03 +0200idegen(~greg@static-50-53-108-129.bvtn.or.frontiernet.net)
2015-03-29 15:36:22 +0200Gass3(~gas3@dhcp-131-114-88-185.di.unipi.it)
2015-03-29 15:39:53 +0200 <Kristallo> sufficient or efficient?
2015-03-29 15:42:50 +0200 <butyoudonot> efficient :)
2015-03-29 15:45:57 +0200mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net)
2015-03-29 15:46:25 +0200dkinitiate(~dk@mail.enopace.com)
2015-03-29 15:48:31 +0200Gass3(~gas3@dhcp-131-114-88-185.di.unipi.it) ()
2015-03-29 15:59:38 +0200mizu_no_oto(~textual@c-76-24-18-193.hsd1.ma.comcast.net) (Quit: Computer has gone to sleep.)
2015-03-29 16:00:17 +0200 <Vandroiy> butyoudonot: Disk speed will be your limit, not the counting function.
2015-03-29 16:00:47 +0200 <Vandroiy> butyoudonot: is "File.ReadAllLines("C:/!Daten/!stuff/var.txt").Length" too slow?
2015-03-29 16:00:53 +0200 <Vandroiy> err,
2015-03-29 16:01:16 +0200 <Vandroiy> System.IO.File.ReadAllLines(myPath).Length
2015-03-29 16:02:05 +0200darkf(~darkf___@unaffiliated/darkf) (Quit: Leaving)
2015-03-29 16:05:37 +0200tesuji_(~tesuji@unaffiliated/tesuji) (Read error: Connection reset by peer)
2015-03-29 16:06:05 +0200tesuji_(~tesuji@unaffiliated/tesuji)
2015-03-29 16:11:57 +0200cesar_(~cesar@2602:306:8b64:bd0:e404:ef9e:47f9:63fa)
2015-03-29 16:12:20 +0200cesar_Guest25311
2015-03-29 16:14:49 +0200Gass3(~gas3@dhcp-131-114-88-185.di.unipi.it)
2015-03-29 16:17:01 +0200Guest25311(~cesar@2602:306:8b64:bd0:e404:ef9e:47f9:63fa) (Ping timeout: 265 seconds)
2015-03-29 16:17:45 +0200Gass3(~gas3@dhcp-131-114-88-185.di.unipi.it) (Client Quit)
2015-03-29 16:18:34 +0200Gass3(~gas3@dhcp-131-114-88-185.di.unipi.it)
2015-03-29 16:28:00 +0200 <RandomStranger> I have a discriminated union: "type MyType = | MyList of MyType list | MyVal" - Why can't I say a function returns "MyList"? It tells me it's undefined, but "MyType list" is alright.
2015-03-29 16:36:39 +0200 <Kristallo> looks like it should work
2015-03-29 16:42:24 +0200 <Kristallo> try something like MyList [MyVal]
2015-03-29 16:42:36 +0200 <Vandroiy> RandomStranger: "MyList" is not a type visible to F#; it's a discriminated union case.
2015-03-29 16:43:05 +0200tesuji_tesuji
2015-03-29 16:43:08 +0200 <RandomStranger> So the union cases are not visible? Interestig
2015-03-29 16:43:29 +0200 <Vandroiy> The cases are more like constructors plus patterns, not full-fledged types you can constrain values to
2015-03-29 16:43:52 +0200 <butyoudonot> how to get a list of TreeEntry from a Tree variable? here is definition https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp/Tree.cs
2015-03-29 16:43:59 +0200 <Kristallo> MyList [MyVal] will create a value
2015-03-29 16:44:38 +0200 <Vandroiy> They are visible (unless you use [<RequireQualifiedAccess>]), but they aren't "types" in the sense of constraints that you can put on values, but rather discriminators for pattern matching and also constructors for the DU type
2015-03-29 16:49:59 +0200 <RandomStranger> Confusing :-)
2015-03-29 16:51:54 +0200 <Vandroiy> It's not that weird. A DU is a just type that can contain one of multiple cases; these cases *have* a type, but they don't *define* a type.
2015-03-29 16:55:59 +0200 <Vandroiy> For example, in options. It's sensible to say that a function takes an int as input, or an int option. But what kind of type would a Some<int> be, if not an int option?
2015-03-29 16:57:33 +0200 <RandomStranger> Yeah, makes sense. Just seems weird that when I have "MyType list" I explicitly have to pass it to the ctor of MyList. But that also makes sense thinking about it.
2015-03-29 16:58:03 +0200co-arbelos(~arbelos@2.69.219.132.mobile.tre.se)
2015-03-29 17:00:37 +0200arbelos_(~arbelos@2.69.241.75.mobile.tre.se) (Ping timeout: 244 seconds)
2015-03-29 17:04:09 +0200 <Vandroiy> The explicit construction of DUs is for type safety. If the compiler would just make ends meet, it would be doing dynamic typing, which can get messy quickly and would contradict the strict typing DUs are designed for in the first place.
2015-03-29 17:05:53 +0200 <Vandroiy> Something similar can be achieved with overloading though. And optional arguments in the case of options.
2015-03-29 17:06:06 +0200 <RandomStranger> I'm trying to do "make a lisp" and I'm in the first steps of parsing lisp. This stuff is difficult when you're not familiar with it :-)
2015-03-29 17:07:01 +0200 <Vandroiy> Oh. I'm sure it is. I never used Lisp though, learned FP with F# :)
2015-03-29 17:07:15 +0200 <RandomStranger> I'm also learning FP with F#.
2015-03-29 17:07:40 +0200 <RandomStranger> The task right now is to parse the string "(+ 1 2)" into it's elements. () indicate a list, the other values (+, 1 and 2) are just "other" for now.
2015-03-29 17:08:05 +0200 <RandomStranger> So I have a DU: MalType = | MalList of string list | MalOther of string
2015-03-29 17:08:44 +0200 <RandomStranger> Troubling my way forward
2015-03-29 17:09:11 +0200arbelos(~arbelos@95.209.65.188.bredband.tre.se)
2015-03-29 17:11:20 +0200co-arbelos(~arbelos@2.69.219.132.mobile.tre.se) (Ping timeout: 272 seconds)
2015-03-29 17:13:43 +0200 <Vandroiy> Did you have a look at FParsec? I haven't used it yet, but it's intended for text parsing stuff
2015-03-29 17:14:15 +0200 <RandomStranger> The parsing and everything is the stuff.
2015-03-29 17:14:22 +0200 <RandomStranger> It's a somewhat guided demo exercise for learning languages.
2015-03-29 17:14:36 +0200 <RandomStranger> https://github.com/kanaka/mal
2015-03-29 17:15:48 +0200 <RandomStranger> That's what I have now: http://pastebin.com/JNDSu2kt - but it's not working, with my test call "read_form(Reader(tokenizer "(+ 1 2)"));;" I always get an empty list. It also seems messy.. not sure why the read methods shouldn't be part of the reader, but I'm trying to follow the guide of mal
2015-03-29 17:17:46 +0200P1RATEZ(piratez@CPEbc1401e23523-CMbc1401e23520.cpe.net.cable.rogers.com)
2015-03-29 17:18:40 +0200Revenrof(~Morgue@109.195.35.99) (Remote host closed the connection)
2015-03-29 17:18:53 +0200 <Kristallo> looks very messy
2015-03-29 17:19:07 +0200ForNeVeR(~Morgue@109.195.35.99)
2015-03-29 17:19:21 +0200 <Kristallo> but then again parsing is messy
2015-03-29 17:20:08 +0200 <RandomStranger> Yeah. I'm just not sure why my resulting list is empty.. in line 46 I'm seemingly creating a list.
2015-03-29 17:22:59 +0200 <Kristallo> looks to me that you return an empty list when you reach )
2015-03-29 17:23:40 +0200 <RandomStranger> Yeah. That when it's all down the recursion
2015-03-29 17:23:51 +0200 <RandomStranger> On the way up I concatenate the values on line 46
2015-03-29 17:24:56 +0200 <Kristallo> where do you return this list then?
2015-03-29 17:26:09 +0200 <RandomStranger> Damnit. You're right.
2015-03-29 17:26:14 +0200 <RandomStranger> I need to return the accumulator, not an empty list.
2015-03-29 17:26:19 +0200 <Kristallo> yes
2015-03-29 17:28:04 +0200 <RandomStranger> It seems I should move away from the exact task description and should just do my thing. This reader object seems nonsense, I don't really need a mutable state here.
2015-03-29 17:39:42 +0200 <arbelos> How come fsharpi is complaining that I need a top level namespace when I can compile the program without one?
2015-03-29 17:40:19 +0200 <arbelos> using #load "File.fs";; that is
2015-03-29 17:42:50 +0200 <arbelos> oh wait I have two modules in the same file
2015-03-29 17:48:51 +0200 <butyoudonot> how to combine filepaths in f#?
2015-03-29 17:51:45 +0200 <butyoudonot> Path.Combine()?
2015-03-29 17:52:03 +0200 <Kristallo> what should the result be?
2015-03-29 17:52:35 +0200 <butyoudonot> filepath
2015-03-29 17:54:47 +0200 <Kristallo> combining several incomplete paths to one complete path?
2015-03-29 17:56:15 +0200 <RandomStranger> I can match either a list, a number, an operator or nothing. Is there a better option then "| Some x when isOperator x -> parseOperator x |> MyOperatorType"?
2015-03-29 17:58:44 +0200 <Kristallo> you could use an active pattern
2015-03-29 17:59:12 +0200 <Kristallo> and get "| IsOperator x -> parseOperator x |> MyOperatorType"
2015-03-29 17:59:51 +0200 <RandomStranger> Still feels clumsy that the is- and the parse are two things, while technically it's one
2015-03-29 18:00:13 +0200 <Kristallo> might be a sign that you do something the wrong way aroun
2015-03-29 18:00:14 +0200 <Kristallo> d
2015-03-29 18:00:48 +0200cesar_(~cesar@2602:306:8b64:bd0:5559:afdb:7fef:5af1)
2015-03-29 18:00:55 +0200 <RandomStranger> Is it? IsOperator is technically "ParseOperator != None"
2015-03-29 18:00:55 +0200 <Kristallo> or maybe you just misnamed something
2015-03-29 18:01:12 +0200cesar_Guest41560
2015-03-29 18:02:06 +0200 <Kristallo> then make parseoperator an active pattern
2015-03-29 18:03:41 +0200Gass3(~gas3@dhcp-131-114-88-185.di.unipi.it) ()
2015-03-29 18:04:49 +0200 <Kristallo> "| ParseOperator List x -> do some list stuff"
2015-03-29 18:05:46 +0200Guest41560(~cesar@2602:306:8b64:bd0:5559:afdb:7fef:5af1) (Ping timeout: 265 seconds)
2015-03-29 18:12:49 +0200 <Kristallo> or even better match parseOperator x with
2015-03-29 18:13:05 +0200 <Kristallo> then return a tuple with nice things to match on
2015-03-29 18:19:19 +0200 <RandomStranger> I'm moving away from the exercise description now, makes stuff more easy I think
2015-03-29 18:21:47 +0200 <Kristallo> that is the spirit
2015-03-29 18:22:01 +0200 <Kristallo> lead the way and improve
2015-03-29 18:24:50 +0200P1RATEZ(piratez@CPEbc1401e23523-CMbc1401e23520.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds)
2015-03-29 18:32:13 +0200P1RATEZ(piratez@CPEbc1401e23523-CMbc1401e23520.cpe.net.cable.rogers.com)
2015-03-29 18:38:30 +0200whartung1(whartung@gateway/vpn/mullvad/x-pbeqiwobtvrhdbfq) (Remote host closed the connection)
2015-03-29 18:38:32 +0200csslayer1(csslayer@gateway/vpn/mullvad/x-zfkjjskpmpvucgze)
2015-03-29 18:43:33 +0200Eduardo_(~Eduardo@190.80.179.66)
2015-03-29 18:44:37 +0200voriskolverkss(~Eduardo@190.80.179.66) (Ping timeout: 248 seconds)
2015-03-29 18:44:53 +0200dkinitia1e(~dk@mail.enopace.com)
2015-03-29 18:45:15 +0200dkinitia1e(~dk@mail.enopace.com) (Client Quit)
2015-03-29 18:47:44 +0200dkinitiate(~dk@mail.enopace.com) (Ping timeout: 245 seconds)
2015-03-29 18:55:41 +0200 <arbelos> RandomStranger, are you working your way through that book you bought?
2015-03-29 18:58:25 +0200leeN(~leeN@x55b4d06f.dyn.telefonica.de)
2015-03-29 19:01:10 +0200ncd|leeN(~leeN@x55b5dbc7.dyn.telefonica.de) (Ping timeout: 255 seconds)