2022/01/08

2022-01-08 00:00:19 +0100OscarZ_(~oscarz@95.175.104.170) (Ping timeout: 256 seconds)
2022-01-08 00:02:37 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2022-01-08 00:05:53 +0100burnsidesLlama(~burnsides@dhcp168-021.wadham.ox.ac.uk)
2022-01-08 00:07:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 00:07:41 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 00:07:49 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
2022-01-08 00:08:37 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
2022-01-08 00:09:39 +0100 <c_wraith> remember, inlinePerformIO breaks everything. :)
2022-01-08 00:12:37 +0100jkaye(~jkaye@2601:281:8300:7530:89aa:29d4:1f39:3e9) (Ping timeout: 240 seconds)
2022-01-08 00:15:03 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-01-08 00:16:54 +0100OscarZ-(~oscarz@95.175.104.170) (Quit: Leaving)
2022-01-08 00:17:07 +0100cosimone(~user@93-47-228-11.ip115.fastwebnet.it)
2022-01-08 00:19:17 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-08 00:21:08 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-01-08 00:23:43 +0100 <EvanR> it breaks all my totally justified not justified uses of unsafePerformIO
2022-01-08 00:23:57 +0100 <EvanR> like globalllllllls!
2022-01-08 00:25:12 +0100 <hpc> this is why i always use unsafeCoerce instead
2022-01-08 00:25:45 +0100 <c_wraith> remember, if you try hard enough unsafeCoerce can be used as unsafePerformIO!
2022-01-08 00:26:38 +0100 <hpc> this is why agda is the best language, its intermediate haskell representation is nothing but unsafeCoerce
2022-01-08 00:27:03 +0100dka(~code-is-a@193.70.33.83)
2022-01-08 00:28:05 +0100zer0bitz(~zer0bitz@196.244.192.57) (Ping timeout: 256 seconds)
2022-01-08 00:30:45 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-08 00:30:51 +0100AlexNoo_(~AlexNoo@178.34.162.219)
2022-01-08 00:32:37 +0100AlexZenon(~alzenon@94.233.240.16) (Ping timeout: 256 seconds)
2022-01-08 00:32:46 +0100Alex_test(~al_test@94.233.240.16) (Ping timeout: 256 seconds)
2022-01-08 00:33:49 +0100xmyst(~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2022-01-08 00:34:28 +0100AlexNoo(~AlexNoo@94.233.240.16) (Ping timeout: 256 seconds)
2022-01-08 00:34:56 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-01-08 00:36:02 +0100 <[itchyjunk]> hmm
2022-01-08 00:36:28 +0100AlexZenon(~alzenon@178.34.162.219)
2022-01-08 00:36:36 +0100Alex_test(~al_test@178.34.162.219)
2022-01-08 00:36:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 00:37:16 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 00:37:17 +0100 <[itchyjunk]> so if my type has a data constructor of type
2022-01-08 00:37:23 +0100 <[itchyjunk]> err
2022-01-08 00:41:49 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-08 00:41:53 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-01-08 00:41:54 +0100 <[itchyjunk]> My type can have 2 types of data, either Nil or the other thing, right?
2022-01-08 00:41:54 +0100 <[itchyjunk]> https://bpa.st/W6RQ
2022-01-08 00:42:20 +0100 <[itchyjunk]> So in case it's Nil, i want the value to be 0. `mySum Nil = 0` makes sense?
2022-01-08 00:42:52 +0100 <EvanR> mySum Nil could not really be anything else!
2022-01-08 00:43:10 +0100 <EvanR> process of elimination oriented programming
2022-01-08 00:43:49 +0100 <[itchyjunk]> so then, if it's not Nil, the only other data type it could be is something of the form Cons a (ItchyList a), right?
2022-01-08 00:43:53 +0100 <sub0> you need parens around Cons x (ItchyList xs)
2022-01-08 00:43:58 +0100cosimone(~user@93-47-228-11.ip115.fastwebnet.it) (Read error: Connection reset by peer)
2022-01-08 00:44:04 +0100 <geekosaur> think about how the recursive case works. it bottoms out at Nil, so that has to be 0 otherwise your sum has some other value added to it
2022-01-08 00:44:05 +0100 <sub0> mySum (Cons x (ItchyList xs)) = x + mySum xs
2022-01-08 00:44:08 +0100 <[itchyjunk]> ohh
2022-01-08 00:45:05 +0100 <sub0> and remove ItchyList, that is not a constructor
2022-01-08 00:45:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 00:45:30 +0100 <sub0> (neither is Cons for that matter. you named it Con)
2022-01-08 00:45:45 +0100 <[itchyjunk]> oops :(
2022-01-08 00:45:46 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 00:46:19 +0100 <sub0> after you fix all that, consider making it an instance of Foldable
2022-01-08 00:46:26 +0100 <sub0> then you could use regular sum, and length
2022-01-08 00:46:28 +0100 <sub0> :t sum
2022-01-08 00:46:29 +0100 <lambdabot> (Foldable t, Num a) => t a -> a
2022-01-08 00:46:30 +0100flupe(~baboum@radon.sbi.re)
2022-01-08 00:46:31 +0100 <sub0> :t length
2022-01-08 00:46:32 +0100 <lambdabot> Foldable t => t a -> Int
2022-01-08 00:46:39 +0100 <geekosaur> writing those is part of the exercise iirc
2022-01-08 00:46:48 +0100 <[itchyjunk]> yes part of exercise
2022-01-08 00:47:48 +0100 <[itchyjunk]> I can't figure out how to make a ItchyList to test my code. `ItchyList testList = blah`
2022-01-08 00:47:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 00:48:11 +0100 <flupe> on the doc about -XRebindableSyntax, it says for most construct GHC will now use whatever is in scope, *except* for the arrow notation, where you must "match the Prelude types very closely". What does this mean?
2022-01-08 00:48:14 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 00:48:19 +0100 <EvanR> constructors is literally how you make whatever
2022-01-08 00:48:25 +0100sebau1995(~sebau1995@138.117.21.68)
2022-01-08 00:48:30 +0100 <EvanR> use the constructors
2022-01-08 00:48:36 +0100 <geekosaur> an ItchyList is either Nil, or (Con someItem anItchyList)
2022-01-08 00:48:37 +0100 <flupe> I want to implement constrained arrows (much like contrained monads or whatever), but this seems to suggest I cannot
2022-01-08 00:48:46 +0100 <geekosaur> recurse as needed to build a list
2022-01-08 00:49:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 00:50:03 +0100coolnickname(uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
2022-01-08 00:50:12 +0100jonathanx(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se)
2022-01-08 00:51:19 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-08 00:51:42 +0100 <sub0> [itchyjunk], you have two constructors, Cons and Nil. look at the types, and use them to create a list
2022-01-08 00:51:58 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 00:52:19 +0100 <[itchyjunk]> I am trying to do something like myList = Cons 1 Nil to create a list with 1 item
2022-01-08 00:52:34 +0100 <sub0> that should work
2022-01-08 00:52:44 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Quit: ran away)
2022-01-08 00:53:18 +0100 <[itchyjunk]> It gives no error but I can check it like regular lists because i need to apparently implement my own `Show` command
2022-01-08 00:53:22 +0100 <[itchyjunk]> maybe print? hmm
2022-01-08 00:53:29 +0100 <[itchyjunk]> can't*
2022-01-08 00:53:38 +0100 <EvanR> do deriving Show
2022-01-08 00:53:50 +0100 <geekosaur> go back up to your definition and add `deriving Show` to the end
2022-01-08 00:54:19 +0100 <[itchyjunk]> oh neat!
2022-01-08 00:54:33 +0100 <[itchyjunk]> it all works /o\
2022-01-08 00:55:24 +0100 <lechner> Hi, knowing that Semver is controversial, what is everyone's favorite implementation on hackage, please?
2022-01-08 00:56:14 +0100sebau1995(~sebau1995@138.117.21.68) (Quit: Client closed)
2022-01-08 00:56:21 +0100 <sshine> lechner, what does an implementation of SemVer feature?
2022-01-08 00:57:56 +0100 <lechner> a type, presumably?
2022-01-08 00:58:08 +0100 <sshine> lechner, Data.Version in base has a partial ordering, so you can use it to express all semantic versions.
2022-01-08 00:58:17 +0100 <sshine> https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Version.html
2022-01-08 00:59:19 +0100 <lechner> that's what i thought. i had been using 'semver' but 'versions' is a lot more popular
2022-01-08 00:59:31 +0100 <lechner> oh wait
2022-01-08 00:59:36 +0100 <lechner> this is in base?
2022-01-08 00:59:49 +0100 <sshine> yes, the Data.Version module is in base.
2022-01-08 01:00:10 +0100 <lechner> sorry, got confused with Data.Versions
2022-01-08 01:01:50 +0100 <lechner> thanks!
2022-01-08 01:02:42 +0100 <sshine> I can see that both packages 'semver' and 'salve' address resolving version constraint expressions, like these: https://hackage.haskell.org/package/salve-1.0.11/docs/Salve.html -- I don't think that those constraint expressions are restricted to SemVer, but I guess that's another feature you'd wanna have in a semver library.
2022-01-08 01:02:52 +0100max22-(~maxime@2a01cb088335980011bb54fd9cdf5176.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-01-08 01:03:24 +0100jonathanx(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Read error: Connection reset by peer)
2022-01-08 01:03:58 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2022-01-08 01:04:58 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 01:05:20 +0100 <sshine> I'm not sure why they all defer from using Data.Version as their representation. :)
2022-01-08 01:05:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2022-01-08 01:05:44 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 01:06:23 +0100 <sshine> (since some of them explicitly allow for expressing messy version schemes, too.)
2022-01-08 01:06:45 +0100 <lechner> Salve has a great summary of competing modules. thanks for that pointer!
2022-01-08 01:08:25 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-01-08 01:08:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 01:09:15 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 01:09:59 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-01-08 01:11:53 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-08 01:12:15 +0100 <[itchyjunk]> for my (+++) function, i can take existing list an add an element from the new list to it then apply (+++) to the remainder of the list
2022-01-08 01:12:16 +0100 <[itchyjunk]> https://bpa.st/SC3A
2022-01-08 01:12:23 +0100 <[itchyjunk]> This kinda made sense in my head
2022-01-08 01:12:38 +0100 <[itchyjunk]> Is that the right approach but wrong syntax?
2022-01-08 01:13:29 +0100 <[itchyjunk]> oh woops i see one error
2022-01-08 01:13:45 +0100 <geekosaur> note that Cons appends to the left, not the right
2022-01-08 01:14:01 +0100 <geekosaur> or said otherwise, prepends instead of appends
2022-01-08 01:14:12 +0100 <[itchyjunk]> (https://bpa.st/DR5A
2022-01-08 01:14:14 +0100 <[itchyjunk]> edited
2022-01-08 01:14:56 +0100 <[itchyjunk]> I compiles but with a warning about redundant pattern match but i guess i will worry about it in a second if this works
2022-01-08 01:15:35 +0100 <geekosaur> you need to move the `Nil Nil` case above the other two
2022-01-08 01:15:59 +0100 <[itchyjunk]> Oh hmm
2022-01-08 01:16:26 +0100 <geekosaur> otherwise one of those cases will match with `_` matching against Nil
2022-01-08 01:17:33 +0100Hayek(~xxx@rrcs-173-196-3-254.west.biz.rr.com)
2022-01-08 01:18:56 +0100 <[itchyjunk]> hmm _ Nil and Nil _ matches so Nil Nil ends up being a subset of one of those matches so it's considered redundent?
2022-01-08 01:19:24 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-08 01:19:42 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2022-01-08 01:21:37 +0100xff0x(~xff0x@2001:1a81:525f:5800:6161:847e:32a5:3ca7) (Ping timeout: 240 seconds)
2022-01-08 01:21:37 +0100 <sub0> yes, it will never be reached
2022-01-08 01:22:20 +0100 <[itchyjunk]> happy that the idea for (+++) (Cons y x) xy worked out! finally feels like i'm making some progress
2022-01-08 01:22:23 +0100 <EvanR> an example where order of definitions matters
2022-01-08 01:22:40 +0100 <sshine> you don't really need the 'Nil Nil = Nil' case, since 'x Nil' will be 'x', and 'Nil y' will be 'y', which are both general cases of 'Nil Nil = Nil' :)
2022-01-08 01:22:50 +0100xff0x(~xff0x@2001:1a81:525f:5800:95c3:4d9e:7693:e3c)
2022-01-08 01:23:09 +0100 <[itchyjunk]> sshine, ah.. true
2022-01-08 01:23:20 +0100esoca123(uid534098@id-534098.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-08 01:23:42 +0100DNH(~DNH@2a02:8108:1100:16d8:ad26:5398:3e1f:d97d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-08 01:24:31 +0100 <sshine> > (Cons 1 (Cons 2 (Cons 3 Nil))) +++ (Cons 4 (Cons 5 (Cons 6 Nil)))
2022-01-08 01:24:32 +0100 <sshine> Cons 6 (Cons 5 (Cons 4 (Cons 1 (Cons 2 (Cons 3 Nil)))))
2022-01-08 01:24:32 +0100 <lambdabot> error:
2022-01-08 01:24:32 +0100 <lambdabot> • Data constructor not in scope: Cons :: t6 -> t0 -> a b c
2022-01-08 01:24:32 +0100 <lambdabot> • Perhaps you meant one of these:
2022-01-08 01:25:00 +0100 <sshine> [itchyjunk], I'd probably have expected (Cons 1 (Cons 2 (Cons 3 (Cons 4 (Cons 5 (Cons 6 Nil))))))
2022-01-08 01:25:07 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-08 01:26:16 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-01-08 01:26:48 +0100 <geekosaur> I pointed out that problem a bit earlier
2022-01-08 01:26:58 +0100 <[itchyjunk]> hmmm
2022-01-08 01:27:02 +0100 <[itchyjunk]> its a feature for now :x
2022-01-08 01:27:06 +0100 <sshine> ;-)
2022-01-08 01:27:16 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-01-08 01:29:15 +0100 <sshine> [itchyjunk], (+++) (Cons x xs) ys = Cons x (xs +++ ys)
2022-01-08 01:29:39 +0100 <[itchyjunk]> yup that's what i just tried!
2022-01-08 01:30:07 +0100 <sshine> cool
2022-01-08 01:30:26 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-08 01:31:26 +0100xb0o2(~xb0o2@user/xb0o2) (Quit: Client closed)
2022-01-08 01:31:32 +0100 <[itchyjunk]> wait no, what did i do
2022-01-08 01:34:48 +0100 <sshine> [itchyjunk], could also be written: (+++) (Cons x xs) ys = Cons x ((+++) xs ys)
2022-01-08 01:36:05 +0100 <[itchyjunk]> i thought this would work but i am confused
2022-01-08 01:36:06 +0100 <[itchyjunk]> (+++) (Cons x xs) ys = (+++) xs (Cons x ys)
2022-01-08 01:36:14 +0100 <[itchyjunk]> take each element of first list and add it to the second list
2022-01-08 01:37:35 +0100 <geekosaur> wrong order
2022-01-08 01:37:42 +0100 <sshine> [itchyjunk], if you run it by hand it'll make sense
2022-01-08 01:38:45 +0100[itchyjunk]clears dusts off hand
2022-01-08 01:38:50 +0100 <sshine> [itchyjunk], [1,2,3] ++ [4,5,6] ~> 1:([2,3] ++ [4,5,6]) etc.
2022-01-08 01:38:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 01:39:07 +0100 <[itchyjunk]> sshine, ah right
2022-01-08 01:39:15 +0100 <sshine> [itchyjunk], the mixture of Cons and +++ might seem more confusing
2022-01-08 01:39:29 +0100waleee(~waleee@h-98-128-229-110.na.cust.bahnhof.se) (Ping timeout: 256 seconds)
2022-01-08 01:39:37 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 01:39:51 +0100 <[itchyjunk]> so (+++) (Cons x xs) ys = Cons x ((+++) xs ys)
2022-01-08 01:40:44 +0100 <[itchyjunk]> okay, makes sense
2022-01-08 01:41:17 +0100 <[itchyjunk]> ah thats what you said above
2022-01-08 01:41:43 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-08 01:42:14 +0100 <sshine> but... Cons 1 (Cons 2 (Cons 3 Nil)) +++ Cons 4 (Cons 5 (Cons 6 Nil)) ~> Cons 1 (Cons 2 (Cons 3 Nil) +++ Cons 4 (Cons 5 (Cons 6 Nil))) ~> Cons 1 (Cons 2 (Cons 3 Nil +++ Cons 4 (Cons 5 (Cons 6 Nil)))) ~> Cons 1 (Cons 2 (Cons 3 (Nil +++ Cons 4 (Cons 5 (Cons 6 Nil))))) ~> at which point you're in one of the base cases with Nil on the left.
2022-01-08 01:42:31 +0100 <sshine> (this looks better with one rewrite per line)
2022-01-08 01:42:37 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2022-01-08 01:44:19 +0100 <sshine> [itchyjunk], btw, if you add {-# LANGUAGE DeriveFoldable #-}, you can add 'deriving (Show, Foldable)', after which a bunch of standard library list operators will work on your list.
2022-01-08 01:45:01 +0100 <sshine> e.g. > 2 `elem` Cons 1 (Cons 2 (Cons 3 Nil))
2022-01-08 01:45:01 +0100 <sshine> True
2022-01-08 01:45:09 +0100 <sshine> :t elem
2022-01-08 01:45:09 +0100 <lambdabot> (Foldable t, Eq a) => a -> t a -> Bool
2022-01-08 01:45:22 +0100 <[itchyjunk]> right i learned about the `deriving Show`. I assume it's similar to the concept of inheretence or implementing a interface or somesuch
2022-01-08 01:46:45 +0100 <sshine> or: > sum (Cons 1 (Cons 2 (Cons 3 Nil)))
2022-01-08 01:46:45 +0100 <sshine> 6
2022-01-08 01:48:52 +0100 <sshine> it's kind of like automatically implementing an interface, yes
2022-01-08 01:50:46 +0100 <sshine> I think one of the auto-generated traits/type-classes/interfaces you often see in a lot of languages are JSON serializers/de-serializers. so all you need is define a data-type, and many serialize/deserialize libraries can generically produce them based on type information on the data type's fields.
2022-01-08 01:51:08 +0100 <sshine> and in haskell you can derive a lot of other type classes, too
2022-01-08 01:51:30 +0100 <sshine> like Foldable and Functor :)
2022-01-08 01:53:24 +0100 <geekosaur> you should probably do the third part of the problem before doing that, though
2022-01-08 01:53:36 +0100 <sshine> what problem?
2022-01-08 01:53:43 +0100 <geekosaur> although you just gave yourself a big hint as to how to do it, by doing this wrong
2022-01-08 01:53:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 01:54:14 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 01:54:19 +0100 <geekosaur> http://www.cas.mcmaster.ca/~dalvescb/LH_Week05_Exercises.pdf
2022-01-08 01:54:45 +0100 <[itchyjunk]> hmm
2022-01-08 01:54:47 +0100 <geekosaur> they did part one earlier, this is part 2. part 3 is myReverse
2022-01-08 01:54:56 +0100sm1(~sm@plaintextaccounting/sm) (Quit: Reconnecting)
2022-01-08 01:55:02 +0100 <sshine> oh, right :P
2022-01-08 01:55:11 +0100sm1(~sm@plaintextaccounting/sm)
2022-01-08 01:55:12 +0100 <[itchyjunk]> yeah i am banging my head on the myReverse
2022-01-08 01:55:14 +0100 <sshine> +++ done wrong is myReverse done half right, I guess :P
2022-01-08 01:55:22 +0100 <geekosaur> yep
2022-01-08 01:55:37 +0100 <geekosaur> go back and look how your proposed solution to (+++) went wrong
2022-01-08 01:55:45 +0100 <geekosaur> then do the whole thing the same wrong way :)
2022-01-08 01:55:53 +0100 <[itchyjunk]> oh should i be using (+++)? ahh i was thinking about it without +++
2022-01-08 01:56:02 +0100 <geekosaur> no, you don't want (+++) here
2022-01-08 01:56:17 +0100sm1sm
2022-01-08 01:56:18 +0100 <geekosaur> but you reversed the first part of the list with the way you were mis-doing (+++)
2022-01-08 01:56:34 +0100 <geekosaur> so think about what you did and why it reversed it, and you have the answer
2022-01-08 01:56:42 +0100acidjnk_new3(~acidjnk@p200300d0c7271e73e4c690103e77be5f.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-01-08 01:56:42 +0100acidjnk(~acidjnk@p200300d0c7271e73e4c690103e77be5f.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-01-08 02:00:06 +0100 <geekosaur> and you may want to think about a helper function here
2022-01-08 02:01:20 +0100 <sshine> [itchyjunk], if you start with: myReverse (Cons x xs) = ..., and you know that the last element should be the first, then putting the last element in '...' is kinda hard, because it's at the far end of the linked list.
2022-01-08 02:03:25 +0100 <[itchyjunk]> i keeps comming and going from my head. it has something to do with creating a new list Nil and adding elements to it, first 1 then 2 then 3 etc so it would be 3 2 1 Nil or somesuch. but it keeps escaping me
2022-01-08 02:03:41 +0100 <geekosaur> you're on the right track
2022-01-08 02:03:47 +0100 <[itchyjunk]> hmmmmmm
2022-01-08 02:03:50 +0100 <geekosaur> again, go look at what you did *wrong* earlier
2022-01-08 02:04:59 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-01-08 02:04:59 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-01-08 02:04:59 +0100finn_elijaFinnElija
2022-01-08 02:05:12 +0100 <sshine> [itchyjunk], if you do: myReverse (Cons x xs) = let theEnd = Cons x Nil in ..., then you did add x to Nil where it belongs, but it isn't very recursive. i.e., when you make a call to 'myReverse xs' to reverse the tail, where do you put 'theEnd'?
2022-01-08 02:05:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 02:05:43 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 02:06:32 +0100 <sshine> [itchyjunk], surely you can't add x on the second iteration to Nil also; then you'll have a bunch of 'Cons <x/y/z> Nil' cells that aren't linked.
2022-01-08 02:09:05 +0100 <sshine> [itchyjunk], what if the function had the type myReverse' :: ItchyList a -> ItchyList a -> ItchyList a -> ItchyList a? so: myReverse' xs ys tmp; could you make use of a placeholder between recursions?
2022-01-08 02:09:16 +0100 <sshine> err
2022-01-08 02:09:19 +0100 <sshine> I'm tired
2022-01-08 02:09:31 +0100 <sshine> [itchyjunk], what if the function had the type myReverse' :: ItchyList a -> ItchyList a -> ItchyList a? so: myReverse' xs tmp; could you make use of a placeholder between recursions?
2022-01-08 02:10:39 +0100 <[itchyjunk]> oh a helper function that uses a temporary type to help reverse?
2022-01-08 02:10:47 +0100 <sshine> a temporary argument yes
2022-01-08 02:11:27 +0100Tuplanolla(~Tuplanoll@91-159-68-11.elisa-laajakaista.fi) (Quit: Leaving.)
2022-01-08 02:12:57 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-01-08 02:14:05 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-01-08 02:14:14 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-01-08 02:19:16 +0100 <[itchyjunk]> hmm i was hoping this would work
2022-01-08 02:19:17 +0100 <[itchyjunk]> https://bpa.st/D2LQ
2022-01-08 02:19:27 +0100 <[itchyjunk]> but seems like i have some logical error somewhere
2022-01-08 02:19:55 +0100 <[itchyjunk]> oh i see the bug
2022-01-08 02:20:21 +0100 <sshine> what's the bug?
2022-01-08 02:20:31 +0100 <[itchyjunk]> helper Nil _ = Nil
2022-01-08 02:20:42 +0100 <sub0> no
2022-01-08 02:20:43 +0100 <sshine> what's the problem there?
2022-01-08 02:20:47 +0100 <[itchyjunk]> so when the recursion turns my first list to Nil, it turns the whole thing into Nil
2022-01-08 02:20:57 +0100 <sshine> yeah, it reverses the entire list, then throws it out at the end. :D
2022-01-08 02:20:59 +0100 <sub0> yes (my mistake, I thought that was your solution, not bug)
2022-01-08 02:21:18 +0100 <[itchyjunk]> well sometimes my solution and bugs are equivalent
2022-01-08 02:21:44 +0100 <sshine> so it's true that the reverse of Nil is Nil.
2022-01-08 02:21:49 +0100 <[itchyjunk]> https://bpa.st/LJLQ
2022-01-08 02:21:53 +0100 <[itchyjunk]> This seems to work, right?
2022-01-08 02:22:20 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-08 02:22:20 +0100 <sshine> but your base case of 'helper Nil ys' is used for two things now: both for reversing the empty list, and for terminating the recursion on non-empty lists.
2022-01-08 02:22:39 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 02:22:50 +0100 <sshine> [itchyjunk], you don't actually need 'myHelper Nil = Nil'. this is a special case of helper.
2022-01-08 02:23:07 +0100 <glguy> [itchyjunk]: yes, that looks to have fixed it
2022-01-08 02:23:25 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-01-08 02:23:31 +0100 <[itchyjunk]> sshine, oh myReverse Nil = Nil is redundent because of how the helper behaves?
2022-01-08 02:23:48 +0100 <sub0> yes, it handles the Nil case
2022-01-08 02:23:51 +0100 <glguy> [itchyjunk]: you also have some redundancy in (+++)
2022-01-08 02:24:12 +0100sub0(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Error))
2022-01-08 02:24:16 +0100 <[itchyjunk]> yeah having hard time seeing all the redundancy but hopefully it's something that becomes more obvious over time
2022-01-08 02:24:31 +0100sub0(~bc8147f2@cerf.good1.com)
2022-01-08 02:24:32 +0100 <sshine> [itchyjunk], myReverse Nil ~> helper Nil Nil ~> Nil (with ys = Nil)
2022-01-08 02:24:37 +0100Hayek(~xxx@rrcs-173-196-3-254.west.biz.rr.com) (Ping timeout: 240 seconds)
2022-01-08 02:24:37 +0100 <sub0> [itchyjunk], it is also common to make the helper function a local function named go, ie, myReverse xs = go xs [] where go ...
2022-01-08 02:25:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 02:25:25 +0100 <glguy> though it's nice, especially while learning or debugging, to keep the definition at the top-level so you can experiment with it in ghci
2022-01-08 02:25:28 +0100 <[itchyjunk]> oh right, implicit recursion and local functions stuff is another thing i need to work on
2022-01-08 02:25:42 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 02:25:49 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-01-08 02:26:13 +0100 <sshine> [itchyjunk], https://bpa.st/SPXA
2022-01-08 02:26:24 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
2022-01-08 02:26:45 +0100 <sshine> [itchyjunk], also, if you derive Foldable, 'myReverse = foldl (flip Cons) Nil' :D
2022-01-08 02:27:21 +0100 <[itchyjunk]> oh you can do a full fledged definition right there? didn't realize
2022-01-08 02:27:47 +0100 <sshine> [itchyjunk], yep, 'myReverse xs = ...' is just syntax sugar for 'myReverse = \xs -> ...'
2022-01-08 02:28:00 +0100 <glguy> [itchyjunk]: something that might surprise you is that the 'a's on line 16 and line 20 are different in that paste
2022-01-08 02:28:28 +0100 <glguy> the fact that it's a local definition doesn't make them more connected than if they were both top-level definitions
2022-01-08 02:28:33 +0100 <sshine> glguy, that statement sounds obviously true for the wrong reason :P
2022-01-08 02:28:38 +0100 <[itchyjunk]> hmmm
2022-01-08 02:29:01 +0100 <sshine> [itchyjunk], so if you change the ItchyList a -> ItchyList a
2022-01-08 02:29:01 +0100 <sub0> they are connected in the sense that local helper function can directly access myReverse's arguments
2022-01-08 02:29:23 +0100 <sshine> [itchyjunk], if you change the 'ItchyList a -> ItchyList a' into 'ItchyList b -> ItchyList b', then you can keep the 'a's around on line 20.
2022-01-08 02:29:59 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-01-08 02:30:03 +0100 <glguy> the fact that type variables are locally scoped to a type signature even in a nested context is just surprising to most people and can make for confusing error messages later
2022-01-08 02:30:22 +0100 <sshine> glguy, that's a good point.
2022-01-08 02:30:59 +0100 <sshine> [itchyjunk], I made a lazy choice of not renaming 'myReverse x = helper x Nil' into 'myReverse z = helper z Nil' to avoid shadowing variable names. the outer 'x' is not the same as the inner 'x'.
2022-01-08 02:34:03 +0100 <sshine> [itchyjunk], are you doing trees now?
2022-01-08 02:34:55 +0100notzmv(~zmv@user/notzmv)
2022-01-08 02:35:03 +0100 <glguy> Is there a specific problemset?
2022-01-08 02:35:12 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-08 02:35:22 +0100 <[itchyjunk]> I haven't started on it. idk if i am ready for trees
2022-01-08 02:35:24 +0100 <sshine> 18:58:47 <[itchyjunk]> the full problem is here :http://www.cas.mcmaster.ca/~dalvescb/LH_Week05_Exercises.pdf
2022-01-08 02:35:36 +0100 <[itchyjunk]> i stumbled upon this googling `haskell zip exercise`
2022-01-08 02:35:36 +0100 <sshine> [itchyjunk], lists are just very right-biased trees.
2022-01-08 02:35:42 +0100 <[itchyjunk]> :D
2022-01-08 02:36:05 +0100 <[itchyjunk]> right, ive heard of that.. graphs are somethign i need to eventually learn but seems a bit intimidating
2022-01-08 02:36:11 +0100 <sshine> you've been doing trees all along 🤯
2022-01-08 02:37:23 +0100 <glguy> This binary tree problem kind of leaves it to you to decide what a binary tree is, I guess.
2022-01-08 02:38:01 +0100 <sshine> data UnaryTree a = Leaf | Branch a (UnaryTree a)
2022-01-08 02:38:56 +0100 <[itchyjunk]> thats almost identical to my list
2022-01-08 02:39:09 +0100 <glguy> what's the difference?
2022-01-08 02:39:17 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 02:39:17 +0100 <[itchyjunk]> hmm
2022-01-08 02:39:38 +0100 <[itchyjunk]> thats identical to my list
2022-01-08 02:40:14 +0100 <sshine> then lists must be unary trees, according to my definition.
2022-01-08 02:40:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 02:40:47 +0100 <EvanR> if you can inductively define a graph you can inductively define anything, like chuck norris
2022-01-08 02:40:49 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 02:41:06 +0100 <glguy> You wouldn't inductively define a car
2022-01-08 02:42:01 +0100 <sshine> data ChuckNorris = Chuck ChuckNorris | Norris -- how much Chuck would a ChuckNorris Chuck if a ChuckNorris could Chuck (Chuck (Chuck ...))
2022-01-08 02:42:23 +0100EvanRchucks Norris
2022-01-08 02:43:49 +0100xff0x(~xff0x@2001:1a81:525f:5800:95c3:4d9e:7693:e3c) (Ping timeout: 240 seconds)
2022-01-08 02:44:45 +0100 <sshine> [itchyjunk], data ConcatList a = Nil | Single a | Concat (ConcatList a) (ConcatList a)
2022-01-08 02:45:03 +0100xff0x(~xff0x@2001:1a81:525f:5800:a604:5a64:a22b:91db)
2022-01-08 02:45:11 +0100 <sshine> [itchyjunk], this is not a tree, because it says it's a list.
2022-01-08 02:45:51 +0100burnsidesLlama(~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 02:46:23 +0100burnsidesLlama(~burnsides@client-8-64.eduroam.oxuni.org.uk)
2022-01-08 02:46:24 +0100nunggu(~q@gateway/tor-sasl/nunggu) (Remote host closed the connection)
2022-01-08 02:46:54 +0100nunggu(~q@gateway/tor-sasl/nunggu)
2022-01-08 02:47:11 +0100 <EvanR> data ThisIsNotAType
2022-01-08 02:47:38 +0100 <EvanR> coincidentally, it is false (Void)
2022-01-08 02:48:46 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-01-08 02:48:52 +0100 <sshine> [itchyjunk], are you doing take/drop instead??
2022-01-08 02:49:13 +0100 <[itchyjunk]> no, not doing anything as of yet :D
2022-01-08 02:50:53 +0100burnsidesLlama(~burnsides@client-8-64.eduroam.oxuni.org.uk) (Ping timeout: 256 seconds)
2022-01-08 02:51:30 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection)
2022-01-08 02:51:39 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-08 02:55:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 02:56:41 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 02:57:48 +0100 <sshine> [itchyjunk], if you feel like tree exercises are too daunting, you can also do these list exercises: https://gist.github.com/sshine/1c909e27149dfd6081e99ef39cb3a7e1 :p
2022-01-08 02:58:37 +0100polyphem(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) (Ping timeout: 240 seconds)
2022-01-08 02:59:17 +0100 <[itchyjunk]> hmm
2022-01-08 02:59:40 +0100polyphem(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a)
2022-01-08 03:01:37 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-01-08 03:05:57 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-01-08 03:08:04 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-01-08 03:11:54 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 03:12:15 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 03:14:54 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2022-01-08 03:15:35 +0100califax-(~califax@user/califx)
2022-01-08 03:16:38 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 03:17:25 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
2022-01-08 03:17:41 +0100falafel(~falafel@2603-8000-d800-688c-557f-1601-d4ed-ac14.res6.spectrum.com)
2022-01-08 03:19:57 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds)
2022-01-08 03:19:57 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-01-08 03:19:58 +0100califax-califax
2022-01-08 03:26:51 +0100falafel_(~falafel@2603-8000-d800-688c-b16d-a5e8-00d0-69ce.res6.spectrum.com)
2022-01-08 03:29:57 +0100falafel(~falafel@2603-8000-d800-688c-557f-1601-d4ed-ac14.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-08 03:30:18 +0100neurocyte09174(~neurocyte@IP-094046083160.dynamic.medianet-world.de)
2022-01-08 03:30:18 +0100neurocyte09174(~neurocyte@IP-094046083160.dynamic.medianet-world.de) (Changing host)
2022-01-08 03:30:18 +0100neurocyte09174(~neurocyte@user/neurocyte)
2022-01-08 03:31:55 +0100perro_(~perro@072-191-245-069.res.spectrum.com) (Read error: Connection reset by peer)
2022-01-08 03:32:17 +0100neurocyte0917(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2022-01-08 03:32:17 +0100neurocyte09174neurocyte0917
2022-01-08 03:33:23 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-01-08 03:33:54 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 03:33:57 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-01-08 03:34:12 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 03:34:13 +0100xff0x(~xff0x@2001:1a81:525f:5800:a604:5a64:a22b:91db) (Ping timeout: 240 seconds)
2022-01-08 03:35:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 03:36:16 +0100xff0x(~xff0x@2001:1a81:5298:9f00:76ce:451:456a:7f10)
2022-01-08 03:43:19 +0100falafel__(~falafel@2603-8000-d800-688c-b16d-a5e8-00d0-69ce.res6.spectrum.com)
2022-01-08 03:43:33 +0100falafel_(~falafel@2603-8000-d800-688c-b16d-a5e8-00d0-69ce.res6.spectrum.com) (Read error: Connection reset by peer)
2022-01-08 03:46:08 +0100falafel_(~falafel@2603-8000-d800-688c-80eb-78f2-5772-65fe.res6.spectrum.com)
2022-01-08 03:47:08 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 03:47:08 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 03:47:08 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 03:48:24 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 03:48:41 +0100jonathanx_(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se)
2022-01-08 03:49:37 +0100falafel__(~falafel@2603-8000-d800-688c-b16d-a5e8-00d0-69ce.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-08 03:49:56 +0100BrokenClutch(~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e)
2022-01-08 03:50:19 +0100 <BrokenClutch> Man, I want to die. Is this shit too bad: https://gitlab.com/UnrelatedMicrowave/stm-test
2022-01-08 03:50:24 +0100 <BrokenClutch> Am I on the right way?
2022-01-08 03:50:54 +0100jonathanx_(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 03:51:18 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 03:52:24 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 03:52:45 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 03:53:28 +0100 <EvanR> that's one way to do it
2022-01-08 03:55:09 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2022-01-08 03:56:32 +0100 <BrokenClutch> This shit gave me a headache, gonna play vidjo gemes
2022-01-08 03:56:37 +0100 <EvanR> I would ask what you're really trying to do, but I know that you're actually trying to make a game invol&
2022-01-08 03:56:49 +0100 <EvanR> involving event handling, so
2022-01-08 03:57:05 +0100 <EvanR> I got nothing
2022-01-08 03:57:54 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 03:58:09 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 03:58:09 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 03:58:09 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 03:59:19 +0100ouestbillie(~gallup@192-222-138-215.qc.cable.ebox.net)
2022-01-08 04:06:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-08 04:07:50 +0100 <monochrom> For me it's video games (I mean as a player! not as a dev) and learning more math.
2022-01-08 04:08:13 +0100 <monochrom> Programming is too hard! Playing AOE4 and learning math are easier.
2022-01-08 04:13:35 +0100 <[itchyjunk]> I'm learning some Halo Infinite currently.
2022-01-08 04:13:57 +0100 <[itchyjunk]> Their ranking system is totally busted though. Surprised multi 100 million games can't have a decent ranking system
2022-01-08 04:14:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 04:14:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 04:14:56 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 04:15:46 +0100 <EvanR> no money left after spending it on army of developers
2022-01-08 04:16:19 +0100 <[itchyjunk]> No idea what the spent it on. Has 5 maps, they released campaign seperately
2022-01-08 04:16:20 +0100 <EvanR> have to get ranking system from the bargain bin
2022-01-08 04:16:33 +0100 <[itchyjunk]> They are paying streamers on twitch a lot of money and they are releasing non stop skins
2022-01-08 04:19:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 04:19:33 +0100 <EvanR> 🤑
2022-01-08 04:20:03 +0100 <EvanR> (hint ranking system not required for 🤑), anyway, back to haskell!!!!!!
2022-01-08 04:29:02 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net) (Quit: sirlensalot)
2022-01-08 04:29:38 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2022-01-08 04:33:54 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 04:34:12 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 04:34:46 +0100BrokenClutch(~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) (Quit: Leaving.)
2022-01-08 04:34:53 +0100deadmarshal(~deadmarsh@95.38.113.27)
2022-01-08 04:38:33 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
2022-01-08 04:39:16 +0100deadmarshal(~deadmarsh@95.38.113.27) (Ping timeout: 256 seconds)
2022-01-08 04:45:17 +0100td_(~td@94.134.91.64) (Ping timeout: 240 seconds)
2022-01-08 04:47:30 +0100td_(~td@94.134.91.205)
2022-01-08 04:48:57 +0100falafel_(~falafel@2603-8000-d800-688c-80eb-78f2-5772-65fe.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-08 04:52:32 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 04:52:32 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 04:52:32 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 05:01:22 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 05:02:36 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2022-01-08 05:03:11 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 05:09:02 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 05:09:02 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 05:09:02 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 05:12:19 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 05:13:41 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 05:14:18 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2022-01-08 05:14:49 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
2022-01-08 05:14:52 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 05:17:11 +0100 <EvanR> newtype Foo = Foo (Vector Bar) deriving Foldable
2022-01-08 05:17:46 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net)
2022-01-08 05:18:51 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-08 05:19:04 +0100 <EvanR> err. newtype Foo a = Foo (Vector Int) deriving Foldable
2022-01-08 05:19:29 +0100 <EvanR> length (Foo (V.fromList [1,2,3,4])), is zero not 4...
2022-01-08 05:25:19 +0100clownpi3c3(~clownpi3c@94.50.183.196)
2022-01-08 05:28:24 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 05:28:50 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 05:35:09 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-08 05:36:37 +0100vysn(~vysn@user/vysn)
2022-01-08 05:38:45 +0100texasmynsted(~texasmyns@99.96.221.112)
2022-01-08 05:41:40 +0100 <texasmynsted> I am looking for a library or something like Gema, http://gema.sourceforge.net/new/Mundie/WhyILoveGema.html, for Haskell. A declarative language to assemble text.
2022-01-08 05:41:50 +0100 <texasmynsted> I am not sure what to call this.
2022-01-08 05:42:25 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 250 seconds)
2022-01-08 05:45:20 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 05:45:20 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 05:45:20 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 05:50:06 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 05:52:48 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
2022-01-08 05:52:49 +0100dsrt^(~dsrt@wsip-98-188-246-242.mc.at.cox.net)
2022-01-08 05:53:03 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 05:54:40 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Client Quit)
2022-01-08 05:56:25 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-01-08 05:57:52 +0100shapr(~user@2601:7c0:c202:5190:7595:a4fe:20d3:7169)
2022-01-08 05:57:59 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 05:58:54 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 05:59:11 +0100jonathanx_(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se)
2022-01-08 06:03:40 +0100pagnol(~user@014198154145.ctinets.com)
2022-01-08 06:05:46 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2022-01-08 06:06:08 +0100 <pagnol> There's a Rust crate called sqlx which provides a macro that validates SQL by sending it to a running dbms at compile time. Does anyone know if this has been done for Haskell somewhere?
2022-01-08 06:06:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-08 06:06:58 +0100 <pagnol> (it also adds type safety in addition to validating)
2022-01-08 06:08:40 +0100Jing(~hedgehog@2604:a840:3::103c)
2022-01-08 06:12:51 +0100 <Inst> i hope you guys don't mind if I troll?
2022-01-08 06:13:01 +0100 <Inst> dialogedFileOpen :: IO (Maybe Handle)
2022-01-08 06:13:01 +0100 <Inst> dialogedFileOpen = sequence ( sequence (openFilePath >>= \iOremoved -> pure (iOremoved >>= \filePath -> pure (openFile filePath ReadMode))) >>= \mIOIOH -> pure (join mIOIOH))
2022-01-08 06:13:10 +0100 <Inst> which typechecks
2022-01-08 06:13:22 +0100 <Inst> dialogedFileOpenbradrnSanity :: IO (Maybe (IOMode -> IO Handle))
2022-01-08 06:13:22 +0100 <Inst> dialogedFileOpenbradrnSanity = (fmap (fmap openFile) openFilePath)
2022-01-08 06:13:39 +0100 <Inst> openFilePath is IO (Maybe String)
2022-01-08 06:13:53 +0100 <Inst> ReadMode is a data constructor of type IOMode
2022-01-08 06:16:29 +0100 <Inst> it's a troll, because this isn't any code of any importance, just me hacking through insane and improbable haskell situations that shouldn't occur with proper design patterns
2022-01-08 06:23:15 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-08 06:26:17 +0100BrokenClutch(~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e)
2022-01-08 06:28:03 +0100simpleauthority(~simpleaut@user/simpleauthority)
2022-01-08 06:29:26 +0100wrengr(~wrengr@150.12.83.34.bc.googleusercontent.com) (Ping timeout: 252 seconds)
2022-01-08 06:29:46 +0100wrengr(~wrengr@150.12.83.34.bc.googleusercontent.com)
2022-01-08 06:30:09 +0100 <EvanR> as one does
2022-01-08 06:38:28 +0100 <Inst> okay
2022-01-08 06:38:31 +0100 <Inst> got a working version
2022-01-08 06:39:10 +0100 <Inst> dialogedFileOpen = join (fmap sequence ((fmap.fmap) (rapply ReadMode) ((fmap.fmap) openFile openFilePath)))
2022-01-08 06:39:28 +0100 <Inst> rapply y p = p y
2022-01-08 06:39:43 +0100 <Inst> do you know if there's an actual built-in / standard way for haskell to force function application to the left?
2022-01-08 06:40:49 +0100 <EvanR> there is a standardish operator to do function application backwards
2022-01-08 06:40:55 +0100 <Inst> oh
2022-01-08 06:40:56 +0100 <Inst> &
2022-01-08 06:40:58 +0100 <EvanR> but it's more idiomatic to do it the right way
2022-01-08 06:41:10 +0100 <Inst> are you sure monad transformers work on the IO type?
2022-01-08 06:41:12 +0100 <EvanR> =<< helps with that in monadic code
2022-01-08 06:42:04 +0100 <EvanR> <=< if you're ultimately pointless
2022-01-08 06:42:29 +0100 <EvanR> kleisli fish
2022-01-08 06:43:24 +0100 <EvanR> :k StateT Char IO Int
2022-01-08 06:43:25 +0100 <lambdabot> *
2022-01-08 06:43:33 +0100 <EvanR> @botsnack
2022-01-08 06:43:33 +0100 <lambdabot> :)
2022-01-08 06:43:47 +0100 <Inst> @botsnack
2022-01-08 06:43:47 +0100 <lambdabot> :)
2022-01-08 06:44:04 +0100 <Inst> is there any point to what I'm doing?
2022-01-08 06:44:12 +0100 <Inst> I feel like, I'm spending lots of energy and having fun
2022-01-08 06:44:28 +0100 <Inst> but the techniques i'm learning (badly coded Haskell, etc) aren't really useful, I'm told there's a dozen other methods
2022-01-08 06:44:33 +0100 <EvanR> if your energy budget is limited I recommend moving on the things that are even more fun
2022-01-08 06:44:56 +0100 <Inst> well, i mean, trying to work with monad stacks without the benefit of monad transformers
2022-01-08 06:44:58 +0100 <EvanR> as useful and business friendly as file dialogs are
2022-01-08 06:45:04 +0100 <Inst> is there any moral benefit to such?
2022-01-08 06:45:37 +0100 <EvanR> no if you really do have a "monad stack" (uhg), then you should use transformers, or a consolidated free monad or something
2022-01-08 06:46:18 +0100 <EvanR> alternatively just use IO for top level I/O and do most things in pure code
2022-01-08 06:46:23 +0100 <Inst> it's more of a teaching exercise for me, though, because i'm learning how to work with the type system
2022-01-08 06:46:54 +0100jonathanx_(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 06:47:15 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 06:47:28 +0100 <EvanR> a given application may not need a "monad stack" at all
2022-01-08 06:47:55 +0100 <Inst> you know i have very patchwork knowledge
2022-01-08 06:48:09 +0100 <Inst> i have very little practice with >>= and do, and this is helping me understand them better
2022-01-08 06:48:19 +0100 <Inst> that's what i mean by teaching exercise, i.e, maybe was revolting against me
2022-01-08 06:48:38 +0100 <Inst> until i realized you needed to stuff pures with dissimilar stacked monads
2022-01-08 06:49:18 +0100 <Inst> it's just a fun educational game for teaching myself (and perhaps others) about types
2022-01-08 06:49:21 +0100 <EvanR> most of the cool stuff in haskell has nothing to do with monads
2022-01-08 06:50:17 +0100xff0x(~xff0x@2001:1a81:5298:9f00:76ce:451:456a:7f10) (Ping timeout: 240 seconds)
2022-01-08 06:50:34 +0100 <Inst> i see
2022-01-08 06:51:35 +0100xff0x(~xff0x@2001:1a81:5298:9f00:9050:d511:cdde:a154)
2022-01-08 06:58:10 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-08 06:58:57 +0100shapr(~user@2601:7c0:c202:5190:7595:a4fe:20d3:7169) (Ping timeout: 240 seconds)
2022-01-08 07:01:13 +0100deadmarshal(~deadmarsh@95.38.113.27)
2022-01-08 07:01:49 +0100Magnus[m](~magthetch@2001:470:69fc:105::d1a7) ()
2022-01-08 07:02:36 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-01-08 07:05:44 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-01-08 07:12:37 +0100xff0x(~xff0x@2001:1a81:5298:9f00:9050:d511:cdde:a154) (Ping timeout: 240 seconds)
2022-01-08 07:13:47 +0100xff0x(~xff0x@2001:1a81:5298:9f00:e07:3bd9:947c:632e)
2022-01-08 07:15:01 +0100mvk(~mvk@2607:fea8:5cdd:f000::45db) (Ping timeout: 240 seconds)
2022-01-08 07:15:23 +0100mixfix41(~homefame@user/mixfix41)
2022-01-08 07:16:54 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 07:17:18 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 07:22:06 +0100 <maerwald[m]> Monads aren't even that cool
2022-01-08 07:23:56 +0100 <Inst> sorry
2022-01-08 07:24:02 +0100 <Inst> went out to get some cigarettes
2022-01-08 07:24:26 +0100 <Inst> i'll try to explain my perspective
2022-01-08 07:24:39 +0100 <Inst> i started trying to learn haskell, took up a service-sector job to pay the bills around the same time, in october
2022-01-08 07:24:44 +0100 <Inst> i've since quit that job since early december
2022-01-08 07:24:59 +0100 <Inst> in learning haskell, it's been the language that clicked for me, to the extent that i don't understand why people claim it's so difficult
2022-01-08 07:26:17 +0100pagnol(~user@014198154145.ctinets.com) (Ping timeout: 240 seconds)
2022-01-08 07:26:26 +0100 <Inst> one of the things i noticed with haskell is, well, the absence of the typical imperative programming canards, like loops (recursion's an analogue or a superset)
2022-01-08 07:27:44 +0100 <EvanR> good riddance, for the most part
2022-01-08 07:27:53 +0100 <Inst> i have a hypothesis that it's possible to teach IO, and I don't mean hello world IO, but rather, being able to drag data from files and write to files etc, interact with network files, and so on
2022-01-08 07:27:59 +0100 <Inst> I'm addicted to accumulators, though, EvanR
2022-01-08 07:28:14 +0100 <Square> can you define reusable "dependency-sets" in cabal?
2022-01-08 07:28:15 +0100 <EvanR> that's a fold
2022-01-08 07:28:57 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
2022-01-08 07:29:03 +0100 <Inst> you're sure it's just a fold?
2022-01-08 07:29:22 +0100 <Inst> i feel a bit guilty using accumulators, like, it feels too much like i'm simulating variables
2022-01-08 07:29:25 +0100sub0(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-01-08 07:29:25 +0100 <EvanR> if you get into the weeds everything is a fold
2022-01-08 07:29:27 +0100 <Inst> per recursive loop
2022-01-08 07:30:01 +0100 <Inst> i have a friend who ran out of me after I insisted that she learn Haskell
2022-01-08 07:30:12 +0100 <Inst> as a first language, she went to pick up Python
2022-01-08 07:30:20 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-08 07:30:31 +0100 <Inst> I think it might be possible to, while the Pythonista kids are learning loops, teach Haskellers how to read / write / do effects
2022-01-08 07:30:41 +0100 <Inst> and that might end up being good for long-term retention
2022-01-08 07:31:01 +0100 <EvanR> that's sounds relatively more boring than loops in python
2022-01-08 07:31:04 +0100 <Inst> the obsession with monads is that I feel like being able to function in IO-land / do-land requires an understanding
2022-01-08 07:31:05 +0100falafel_(~falafel@cpe-76-168-195-162.socal.res.rr.com)
2022-01-08 07:31:19 +0100 <Inst> EvanR: it's a matter of perspective, Haskell is very academic
2022-01-08 07:31:21 +0100 <EvanR> maybe a total wash at best
2022-01-08 07:31:24 +0100 <Inst> i see
2022-01-08 07:31:51 +0100 <Inst> being able to do practical things with haskell early, and use how to manipulate the data you draw it from file system access
2022-01-08 07:32:18 +0100 <Inst> at least in my hypothesis, might be usable as stakes to teach people why functional programming matters, etc
2022-01-08 07:32:39 +0100 <EvanR> I hear the `shelly' package is good for that kind of stuff
2022-01-08 07:32:47 +0100 <Inst> huh, interesting
2022-01-08 07:33:46 +0100 <Inst> EvanR: what do your students engage with?
2022-01-08 07:33:59 +0100 <EvanR> why functional programming matters, the title of an influential paper from 1990, and it's not talking about file system access xD
2022-01-08 07:34:03 +0100 <Inst> I know
2022-01-08 07:34:24 +0100 <Inst> but if you teach Haskell to non-programmers, as is my aim
2022-01-08 07:34:36 +0100 <Inst> they don't really care about correctness, ease of reasoning, etc
2022-01-08 07:35:01 +0100Jing(~hedgehog@2604:a840:3::103c) (Remote host closed the connection)
2022-01-08 07:35:02 +0100 <Inst> they'd be more impressed by actually being able to do practical things
2022-01-08 07:35:19 +0100 <Inst> there's reports from people that "Haskell is the best imperative language" because of the concision of Haskell syntax
2022-01-08 07:35:25 +0100 <maerwald> Inst: Haskell is not about correctness
2022-01-08 07:35:47 +0100Jing(~hedgehog@103.121.208.183)
2022-01-08 07:36:01 +0100 <Inst> https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
2022-01-08 07:36:15 +0100 <EvanR> lets not dwell on "Haskell is the best imperative language", the value proposition of this statement is already off to a bad start
2022-01-08 07:36:24 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-01-08 07:37:26 +0100 <EvanR> who wants to be the best at something awful xD
2022-01-08 07:37:57 +0100falafel_(~falafel@cpe-76-168-195-162.socal.res.rr.com) (Ping timeout: 240 seconds)
2022-01-08 07:38:05 +0100 <EvanR> hotdog eating contests notwithstanding
2022-01-08 07:38:28 +0100 <Inst> i'm not a functional fundamentalist, i.e, because computers are ultimately turing machines, until SPJ pulls a couple of more rabbits out of his hat, functional programming will be more resource intensive and less performant than imperative programming
2022-01-08 07:38:51 +0100 <Inst> that means that imperative programming will always have a place, for applications where performance is paramount
2022-01-08 07:39:26 +0100 <EvanR> I'm not either, and I don't know if I agree with that
2022-01-08 07:40:16 +0100 <Inst> well i'm saying we might be able to get out of the imperative trap eventually, but as long as we're stuck here, imperative will exist, just as much as there's assembly programmers, C programmers, Rust programmers, etc
2022-01-08 07:40:22 +0100 <EvanR> high end hardware is already hard to write code for directly in a way to makes the most use
2022-01-08 07:40:38 +0100 <Inst> for the non-programmer, though
2022-01-08 07:40:50 +0100 <EvanR> people use C++, and it's imperative
2022-01-08 07:40:59 +0100 <Inst> i mean, i think functional programmers and imperative programmers tend toward different intelligence types
2022-01-08 07:40:59 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-08 07:41:08 +0100 <EvanR> I'm not sure if there's a causal reason for this anymore though
2022-01-08 07:41:16 +0100 <Inst> causal reason for what?
2022-01-08 07:41:58 +0100 <Inst> mentally keeping track of state is hard and requires strong working memories
2022-01-08 07:42:01 +0100 <EvanR> that C++ technology is where all the work went so you have a chance of utilizing your hardware's capability
2022-01-08 07:42:17 +0100 <EvanR> it's probably more inertia than anything
2022-01-08 07:42:25 +0100 <Inst> yeah, ecosystem effects
2022-01-08 07:42:45 +0100 <EvanR> On the GPU, an imperative programming language doesn't really get you much
2022-01-08 07:43:01 +0100 <maerwald> I think looking at functional vs imperative as correctness vs performance is totally wrong
2022-01-08 07:43:02 +0100 <Inst> i'm guessing it's because of the massive parallelism
2022-01-08 07:43:13 +0100 <Inst> maintainability, ease of composition, ease of design, etc
2022-01-08 07:43:23 +0100 <Inst> the only real advantage i think with imperative is performance
2022-01-08 07:43:33 +0100 <EvanR> GPU programmers are thinking in a different paradigm these days, and forced to code it through imperative languages
2022-01-08 07:43:36 +0100 <Inst> if we all had infinitely fast computers we'd all be on functional programming
2022-01-08 07:43:47 +0100 <maerwald> imperative languages are still the strongest in terms of tooling, support, etc. when it comes to formal verification
2022-01-08 07:44:33 +0100 <EvanR> Inst, you should learn some functional programming
2022-01-08 07:44:40 +0100 <EvanR> IMO lol
2022-01-08 07:44:40 +0100 <Inst> as in, what?
2022-01-08 07:45:10 +0100 <Inst> recursion, higher order functions, etc
2022-01-08 07:45:12 +0100 <EvanR> haskell is just the jumping off point, there is much to learn beyond haskell's version of FP
2022-01-08 07:45:22 +0100 <Inst> I know a bunch of people aggressively selling OCaml
2022-01-08 07:45:30 +0100 <Inst> I am in the market for SICP
2022-01-08 07:45:34 +0100 <EvanR> the industry is stuck in a valley, haskell is up on a hill, and then there's the rest of the world
2022-01-08 07:46:08 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 07:46:08 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 07:46:08 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 07:46:10 +0100 <Inst> SICP being the 1998 version, not the Javascript version
2022-01-08 07:46:12 +0100 <EvanR> haskell stuff really pushes you to learn that
2022-01-08 07:46:15 +0100 <Inst> can't believe MIT jumped off to Python?
2022-01-08 07:46:28 +0100 <maerwald> EvanR: and then there's people for whom the hill is not enough and they're building a ladder into the sky (most programmers will fall off that ladder)
2022-01-08 07:47:17 +0100 <EvanR> ivory tower of babel?
2022-01-08 07:47:25 +0100 <maerwald> dependent haskell
2022-01-08 07:47:27 +0100 <Inst> maerwald: are you talking Shen?
2022-01-08 07:47:32 +0100 <EvanR> lol shen
2022-01-08 07:47:39 +0100coolnickname(uid531864@user/coolnickname)
2022-01-08 07:47:59 +0100 <maerwald> but if we're lucky, dependent haskell will be a success story similar to backpack
2022-01-08 07:48:19 +0100 <Inst> backpack?
2022-01-08 07:48:25 +0100 <maerwald> exactly
2022-01-08 07:48:29 +0100 <int-e> maerwald: hah
2022-01-08 07:48:48 +0100 <Inst> https://dl.acm.org/doi/10.1145/2535838.2535884
2022-01-08 07:48:53 +0100nhatanh02(~satori@123.24.172.30)
2022-01-08 07:49:23 +0100 <EvanR> maerwald, well, we're probably considering different kind of programmers
2022-01-08 07:49:30 +0100 <EvanR> different kinds
2022-01-08 07:50:13 +0100 <EvanR> I'm not expecting anyone who ended up as a programmer due to being bad analytically to start using dependent types
2022-01-08 07:51:13 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 07:51:28 +0100 <Inst> erm, do you mind if I ask a final question?
2022-01-08 07:51:31 +0100 <maerwald> EvanR: I'm worried about programmers who are good analytically
2022-01-08 07:51:45 +0100 <maerwald> writing code for their ego, not for users
2022-01-08 07:51:49 +0100 <EvanR> the ones pushing dependent types? xD
2022-01-08 07:52:29 +0100 <int-e> maerwald: user data is just protocol overhead
2022-01-08 07:53:51 +0100 <Inst> well, if you're willing to humor me
2022-01-08 07:53:55 +0100 <Inst> basically, in terms of style guidelines
2022-01-08 07:54:11 +0100 <Inst> i'm working with the notion that main should be as sparse as possible, i.e, a hub of hubs (or of hubs of hubs of hubs and so on)
2022-01-08 07:54:24 +0100 <Inst> IO-land functions should do no more than 5 things at a time
2022-01-08 07:54:32 +0100Jing(~hedgehog@103.121.208.183) (Remote host closed the connection)
2022-01-08 07:54:46 +0100 <Inst> erm, IO-land functions should be divided into hub and spoke functions, the former of which are limited to 5 things at a time, and the latter 1-2 things
2022-01-08 07:55:02 +0100 <Inst> i'm not sure if that's a wise way to structure things, or are there other guidelines?
2022-01-08 07:55:11 +0100 <Inst> for pure functions, I have a problem where I write really long pipes
2022-01-08 07:55:12 +0100Jing(~hedgehog@240e:390:7c53:a7e1:dda7:7c4c:abf9:d2d)
2022-01-08 07:55:29 +0100 <EvanR> is that from structured programming or something
2022-01-08 07:55:32 +0100 <Inst> how long should a pipe be before I look into ways to truncate it?
2022-01-08 07:55:42 +0100 <Inst> I don't know structured programming, it's what I came up with off the top of my head
2022-01-08 07:55:55 +0100 <Inst> I ran off to functional programming because I didn't have the working memory to understand imperative programming code
2022-01-08 07:56:27 +0100 <EvanR> you'll get better at style after writing a lot of code and having people take it apart
2022-01-08 07:56:49 +0100 <Inst> i probably have a cognitive defect wherein long vertical lists make me sick, but transcontinental pipelines are fine
2022-01-08 07:56:50 +0100 <EvanR> as opposed to attempts to over prescribe style ahead of time
2022-01-08 07:57:09 +0100 <Inst> thanks
2022-01-08 07:57:16 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-01-08 07:57:54 +0100BrokenClutch(~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) ()
2022-01-08 07:58:50 +0100 <Inst> what did you mean, btw, by the more interesting parts of haskell?
2022-01-08 07:58:53 +0100 <Inst> like the type system?
2022-01-08 08:00:24 +0100 <EvanR> maybe you can get an idea by doing some exercises or advent of code in haskell
2022-01-08 08:00:36 +0100 <Inst> i've done my share, I have a workstation computer
2022-01-08 08:00:47 +0100 <Inst> that should have been sent back to the shop
2022-01-08 08:00:59 +0100 <Inst> it's still waiting on me to finish the IO-land exercises in one textbook
2022-01-08 08:01:24 +0100 <Inst> then that book is finished, also working on exercises in Hutton's
2022-01-08 08:02:06 +0100 <Inst> Get Programming with Haskell apparently has some really nice projects, 42 of them
2022-01-08 08:02:15 +0100 <Inst> just picked it up
2022-01-08 08:02:27 +0100 <EvanR> ... maybe not
2022-01-08 08:02:42 +0100 <EvanR> move on to real projects
2022-01-08 08:03:21 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-08 08:12:37 +0100xff0x(~xff0x@2001:1a81:5298:9f00:e07:3bd9:947c:632e) (Ping timeout: 240 seconds)
2022-01-08 08:13:14 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net) (Quit: sirlensalot)
2022-01-08 08:13:53 +0100xff0x(~xff0x@2001:1a81:5298:9f00:c8df:ae8c:ee9b:1cca)
2022-01-08 08:30:36 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2022-01-08 08:30:47 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-01-08 08:35:00 +0100kaph_(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
2022-01-08 08:39:53 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-08 08:40:53 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 252 seconds)
2022-01-08 08:41:01 +0100jinsun_(~jinsun@user/jinsun) (Ping timeout: 240 seconds)
2022-01-08 08:42:33 +0100jinsun_(~jinsun@user/jinsun)
2022-01-08 08:47:44 +0100johnw_(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2022-01-08 08:48:00 +0100ksqsf(~user@134.209.106.31)
2022-01-08 08:48:37 +0100zwro[m](~zwromatri@2001:470:69fc:105::1d4) (Ping timeout: 240 seconds)
2022-01-08 08:48:53 +0100zwro[m](~zwromatri@2001:470:69fc:105::1d4)
2022-01-08 08:49:01 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Ping timeout: 240 seconds)
2022-01-08 08:49:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-01-08 08:49:51 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-08 08:53:49 +0100pfurla-matrix(~pedrofurl@2001:470:69fc:105::1:51d7) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100octeep[m](~octeepoct@2001:470:69fc:105::1:3dbf) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100jmcantrell(~jmcantrel@user/jmcantrell) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100Topik[m](~topikmatr@2001:470:69fc:105::a082) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100Deide(~deide@user/deide) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100wysteriary[m](~wysteriar@2001:470:69fc:105::a42e) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100RosarioPulella[m(~rosariopu@2001:470:69fc:105::a57) (Ping timeout: 240 seconds)
2022-01-08 08:53:49 +0100xddq[m](~xddqmatri@2001:470:69fc:105::bfd8) (Ping timeout: 240 seconds)
2022-01-08 08:54:13 +0100johnw_(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Ping timeout: 240 seconds)
2022-01-08 08:54:13 +0100tripa[m](~tripamatr@2001:470:69fc:105::1:4f7e) (Ping timeout: 240 seconds)
2022-01-08 08:56:16 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-01-08 08:56:44 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-01-08 08:57:31 +0100Alex_test(~al_test@178.34.162.219) (Ping timeout: 256 seconds)
2022-01-08 08:57:31 +0100AlexZenon(~alzenon@178.34.162.219) (Ping timeout: 256 seconds)
2022-01-08 08:57:43 +0100pfurla-matrix(~pedrofurl@2001:470:69fc:105::1:51d7)
2022-01-08 08:57:46 +0100Alex_test(~al_test@178.34.162.219)
2022-01-08 08:57:47 +0100AlexZenon(~alzenon@178.34.162.219)
2022-01-08 08:59:02 +0100Jing(~hedgehog@240e:390:7c53:a7e1:dda7:7c4c:abf9:d2d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-08 09:01:29 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
2022-01-08 09:03:54 +0100falafel(~falafel@2603-8000-d800-688c-54f8-65c3-409b-d4a1.res6.spectrum.com)
2022-01-08 09:07:14 +0100wysteriary[m](~wysteriar@2001:470:69fc:105::a42e)
2022-01-08 09:07:19 +0100Topik[m](~topikmatr@2001:470:69fc:105::a082)
2022-01-08 09:07:57 +0100falafel(~falafel@2603-8000-d800-688c-54f8-65c3-409b-d4a1.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-08 09:08:18 +0100octeep[m](~octeepoct@2001:470:69fc:105::1:3dbf)
2022-01-08 09:08:43 +0100shriekingnoise(~shrieking@186.137.144.80)
2022-01-08 09:09:01 +0100RosarioPulella[m(~rosariopu@2001:470:69fc:105::a57)
2022-01-08 09:09:50 +0100jmcantrell(~jmcantrel@user/jmcantrell)
2022-01-08 09:09:57 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-01-08 09:10:18 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-01-08 09:10:45 +0100califax(~califax@user/califx)
2022-01-08 09:11:16 +0100xddq[m](~xddqmatri@2001:470:69fc:105::bfd8)
2022-01-08 09:11:17 +0100mvk(~mvk@2607:fea8:5cdd:f000::45db)
2022-01-08 09:11:58 +0100Deide(~deide@user/deide)
2022-01-08 09:12:59 +0100tripa[m](~tripamatr@2001:470:69fc:105::1:4f7e)
2022-01-08 09:13:32 +0100td_(~td@94.134.91.205) (Ping timeout: 256 seconds)
2022-01-08 09:13:47 +0100td_(~td@94.134.91.205)
2022-01-08 09:17:41 +0100pagnol(~user@014198154145.ctinets.com)
2022-01-08 09:19:17 +0100lavaman(~lavaman@98.38.249.169)
2022-01-08 09:19:19 +0100pagnol(~user@014198154145.ctinets.com) ()
2022-01-08 09:21:31 +0100spaceseller(~spacesell@31.147.205.13)
2022-01-08 09:23:25 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-08 09:25:04 +0100spaceseller(~spacesell@31.147.205.13) (Client Quit)
2022-01-08 09:32:47 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2022-01-08 09:43:24 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2022-01-08 09:44:49 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-08 09:46:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 09:46:56 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 09:46:56 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 09:48:09 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-01-08 09:48:50 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-08 09:49:55 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-08 09:49:55 +0100user0(~aj@154.0.137.32)
2022-01-08 09:51:09 +0100img(~img@user/img)
2022-01-08 09:51:49 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-08 09:54:20 +0100nhatanh02(~satori@123.24.172.30) (Ping timeout: 256 seconds)
2022-01-08 10:00:57 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 240 seconds)
2022-01-08 10:05:10 +0100phma(phma@2001:5b0:211c:3a48:e7cb:c702:2cb6:39c) (Read error: Connection reset by peer)
2022-01-08 10:05:31 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-01-08 10:06:10 +0100phma(~phma@host-67-44-208-201.hnremote.net)
2022-01-08 10:06:47 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-01-08 10:07:31 +0100clownpi3c3(~clownpi3c@94.50.183.196) (Remote host closed the connection)
2022-01-08 10:10:10 +0100x88x88x(~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (Remote host closed the connection)
2022-01-08 10:10:55 +0100x88x88x(~x88x88x@149.28.53.172)
2022-01-08 10:17:36 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-01-08 10:17:36 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-01-08 10:17:39 +0100allbery_bgeekosaur
2022-01-08 10:18:22 +0100Pickchea(~private@user/pickchea)
2022-01-08 10:18:44 +0100acidjnk(~acidjnk@p200300d0c7271e73e09b8468fdbe4c29.dip0.t-ipconnect.de)
2022-01-08 10:18:44 +0100acidjnk_new3(~acidjnk@p200300d0c7271e73e09b8468fdbe4c29.dip0.t-ipconnect.de)
2022-01-08 10:19:03 +0100user0(~aj@154.0.137.32) ()
2022-01-08 10:19:53 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-08 10:20:12 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 10:21:21 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-08 10:22:59 +0100Pickchea(~private@user/pickchea) (Client Quit)
2022-01-08 10:26:29 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-08 10:31:00 +0100cemg(~cemguresc@2001:a61:11ff:a001:9318:98d4:c6f5:3049) (Ping timeout: 268 seconds)
2022-01-08 10:31:18 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-08 10:31:54 +0100ksqsf(~user@134.209.106.31) (ERC (IRC client for Emacs 27.2))
2022-01-08 10:34:21 +0100SummerSonw(~The_viole@203.77.49.232)
2022-01-08 10:40:18 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-08 10:47:29 +0100coolnickname(uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
2022-01-08 10:57:05 +0100Garbanzo(~Garbanzo@2602:304:6eac:dc10::46)
2022-01-08 10:59:15 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-01-08 11:00:14 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2022-01-08 11:01:37 +0100Garbanzo(~Garbanzo@2602:304:6eac:dc10::46) (Ping timeout: 240 seconds)
2022-01-08 11:03:40 +0100aplainze1akind(~johndoe@captainludd.powered.by.lunarbnc.net)
2022-01-08 11:04:20 +0100mc47(~mc47@xmonad/TheMC47)
2022-01-08 11:09:33 +0100razetime(~quassel@49.207.213.63)
2022-01-08 11:11:15 +0100 <Square> what is the goto logging library 2022? katip? Hslogger?
2022-01-08 11:11:49 +0100Tuplanolla(~Tuplanoll@91-159-68-11.elisa-laajakaista.fi)
2022-01-08 11:12:46 +0100Jing(~hedgehog@240e:390:7c53:a7e1:8d38:5b59:3c2d:440)
2022-01-08 11:14:17 +0100deadmarshal(~deadmarsh@95.38.113.27) (Ping timeout: 240 seconds)
2022-01-08 11:14:48 +0100 <[exa]> for extra 2022 vibes try unsafePerformLogging
2022-01-08 11:15:35 +0100 <[exa]> other than that depends on how complex your logs should be (syslog? multiple files? topics&severities?)
2022-01-08 11:17:13 +0100 <[exa]> btw `logging` isn't that bad either
2022-01-08 11:17:31 +0100deadmarshal(~deadmarsh@95.38.113.27)
2022-01-08 11:19:15 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-08 11:19:41 +0100ubert(~Thunderbi@p200300ecdf09944400397d9ba615ef71.dip0.t-ipconnect.de)
2022-01-08 11:21:50 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 11:24:58 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-08 11:26:08 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-01-08 11:26:09 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
2022-01-08 11:26:57 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-01-08 11:34:17 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-01-08 11:35:12 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-01-08 11:35:35 +0100Lord_of_Life_Lord_of_Life
2022-01-08 11:35:42 +0100AlexNoo_AlexNoo
2022-01-08 11:38:53 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-01-08 11:40:38 +0100DNH(~DNH@2a02:8108:1100:16d8:c1f6:dbe8:b4c8:cd59)
2022-01-08 11:41:53 +0100 <maerwald[m]> Square: none
2022-01-08 11:42:02 +0100 <maerwald[m]> Hand roll it
2022-01-08 11:42:07 +0100 <maerwald[m]> Logging isn't hard
2022-01-08 11:42:20 +0100 <Square> say that to the log4j folks
2022-01-08 11:42:25 +0100dsrt^(~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Ping timeout: 256 seconds)
2022-01-08 11:44:19 +0100 <Square> Also logging is boring, so i prefer spending least amount of time on it. =D
2022-01-08 11:47:44 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 11:47:44 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 11:47:44 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 11:52:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-08 11:55:05 +0100zer0bitz(~zer0bitz@196.244.192.61)
2022-01-08 11:55:43 +0100zer0bitz_(~zer0bitz@196.244.192.61)
2022-01-08 11:56:38 +0100matrox(~bc8147f2@cerf.good1.com)
2022-01-08 11:59:25 +0100zer0bitz(~zer0bitz@196.244.192.61) (Ping timeout: 256 seconds)
2022-01-08 12:03:06 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-01-08 12:06:33 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-08 12:13:26 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-08 12:17:35 +0100antony(~The_viole@203.77.49.232)
2022-01-08 12:18:28 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 12:18:28 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 12:18:28 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 12:20:13 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 240 seconds)
2022-01-08 12:22:14 +0100antony(~The_viole@203.77.49.232) (Client Quit)
2022-01-08 12:23:13 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 12:26:51 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-01-08 12:31:29 +0100jgeerds(~jgeerds@55d4bbed.access.ecotel.net)
2022-01-08 12:32:52 +0100 <matrox> hi. do you use c2hs to generate C bindings? does it work with stack? I used something similar several years ago, and it worked nicely, but then when I switched to stack it stopped working
2022-01-08 12:32:56 +0100 <matrox> https://hackage.haskell.org/package/c2hs
2022-01-08 12:33:54 +0100 <geekosaur> c2hs should work with stack but may be broken with newer versions of gcc and headers installed with or to work with it
2022-01-08 12:34:48 +0100__monty__(~toonn@user/toonn)
2022-01-08 12:35:51 +0100 <geekosaur> if you're seeing "The symbol <whatever> does not fit here" it's probably that
2022-01-08 12:37:09 +0100 <geekosaur> looks like the gcc one has been fixed upstream but I don't know if it's made a release yet
2022-01-08 12:39:16 +0100 <geekosaur> there are also a few new ones still open including one against clang/macos
2022-01-08 12:45:07 +0100xkuru(~xkuru@user/xkuru)
2022-01-08 12:46:41 +0100lavaman(~lavaman@98.38.249.169)
2022-01-08 12:50:39 +0100 <matrox> geekosaur, so it is still broken, just in a different way? that's too bad. seems like tools c2hs can't help but be fragile
2022-01-08 12:51:36 +0100 <geekosaur> in this case, yes. it's not at all uncommon that vendors make changes to internal #include files that are not intended to be seen by users, but a tool like c2hs will see them and break
2022-01-08 12:52:13 +0100 <geekosaur> hsc2hs is insulated from that kind of change but is of course less capable
2022-01-08 12:52:41 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-08 12:52:46 +0100 <matrox> oh, I believe that is what I used several years ago, and then for some reason, it wouldn't work with stack. or I didn't know how to make it work
2022-01-08 12:53:07 +0100 <geekosaur> afaik stack should have no problem with it
2022-01-08 12:53:26 +0100 <geekosaur> would need to be declared as a build tool but cabal requires that too
2022-01-08 12:53:56 +0100 <geekosaur> it's just by its nature rather more fragile than alternatives
2022-01-08 12:54:31 +0100 <geekosaur> (come to think of it I thought the fpcomplete folks used it with inline-c, so I'd expect stack to work well with it)
2022-01-08 12:57:17 +0100 <geekosaur> mm, hackage claims not, guess I'm wrong
2022-01-08 12:57:32 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-08 12:57:49 +0100ph88(~ph88@2a02:8109:9e00:71d0::7e04) (Ping timeout: 240 seconds)
2022-01-08 13:08:34 +0100 <matrox> too bad. it is such a pain to write C bindings by hand, and error prone too (especially if, for example, struct size can vary). so I often end up writing code that uses C library extensively in C or C++, even though I'd prefer to write it in haskell
2022-01-08 13:16:36 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-08 13:20:01 +0100xb0o2(~xb0o2@user/xb0o2)
2022-01-08 13:24:02 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 13:26:41 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2022-01-08 13:28:23 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-01-08 13:30:46 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-08 13:43:32 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2022-01-08 13:50:37 +0100acidjnk(~acidjnk@p200300d0c7271e73e09b8468fdbe4c29.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-08 13:50:37 +0100acidjnk_new3(~acidjnk@p200300d0c7271e73e09b8468fdbe4c29.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-08 13:56:08 +0100tfeb(~tfb@88.98.95.237)
2022-01-08 13:57:12 +0100tfebtfb
2022-01-08 14:00:07 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 14:00:07 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 14:00:07 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 14:00:45 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-08 14:03:51 +0100tfb(~tfb@88.98.95.237) (Quit: died)
2022-01-08 14:04:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-08 14:08:38 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-08 14:09:10 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-08 14:13:02 +0100jgeerds(~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-08 14:16:25 +0100DNH(~DNH@2a02:8108:1100:16d8:c1f6:dbe8:b4c8:cd59) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-08 14:21:20 +0100acidjnk(~acidjnk@p200300d0c7271e7348f13af2a2732e1a.dip0.t-ipconnect.de)
2022-01-08 14:21:20 +0100acidjnk_new3(~acidjnk@p200300d0c7271e7348f13af2a2732e1a.dip0.t-ipconnect.de)
2022-01-08 14:21:57 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr)
2022-01-08 14:25:04 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-08 14:26:28 +0100img(~img@user/img)
2022-01-08 14:26:32 +0100rond_(~rond_@2a01:115f:943:5e00:3fb6:23a4:a917:27c7)
2022-01-08 14:29:35 +0100ph88(~ph88@2a02:8109:9e00:71d0::7e04)
2022-01-08 14:30:11 +0100Hayek(~xxx@rrcs-173-196-3-254.west.biz.rr.com)
2022-01-08 14:32:57 +0100max22-(~maxime@2a01cb08833598001efaefdacc745aec.ipv6.abo.wanadoo.fr)
2022-01-08 14:40:13 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-08 14:44:30 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-01-08 14:44:30 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-01-08 14:44:31 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-01-08 14:44:44 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-01-08 14:44:52 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-01-08 14:44:59 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-01-08 14:47:43 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Quit: No Ping reply in 180 seconds.)
2022-01-08 14:48:07 +0100choucavalier(~choucaval@peanutbuttervibes.com) (Changing host)
2022-01-08 14:48:07 +0100choucavalier(~choucaval@user/choucavalier)
2022-01-08 14:49:02 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-08 14:49:07 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr)
2022-01-08 14:49:13 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Client Quit)
2022-01-08 14:49:34 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr)
2022-01-08 14:51:00 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-01-08 14:53:58 +0100choucavalier(~choucaval@user/choucavalier) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-08 14:54:15 +0100tfeb(~tfb@88.98.95.237)
2022-01-08 14:54:17 +0100choucavalier(~choucaval@peanutbuttervibes.com)
2022-01-08 14:55:32 +0100max22-(~maxime@2a01cb08833598001efaefdacc745aec.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2022-01-08 14:56:05 +0100tfebtfb
2022-01-08 14:57:07 +0100riatre(~quassel@2001:310:6000:f::5198:1) (Quit: http://quassel-irc.org)
2022-01-08 14:57:16 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-01-08 14:57:42 +0100riatre(~quassel@2001:310:6000:f::5198:1)
2022-01-08 15:05:31 +0100tfb(~tfb@88.98.95.237) (Quit: died)
2022-01-08 15:09:03 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-08 15:11:25 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 15:13:07 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-08 15:13:10 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-08 15:15:22 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net)
2022-01-08 15:18:36 +0100cosimone`(~user@93-47-228-11.ip115.fastwebnet.it)
2022-01-08 15:19:17 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 15:19:36 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
2022-01-08 15:20:01 +0100ubert(~Thunderbi@p200300ecdf09944400397d9ba615ef71.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-01-08 15:20:12 +0100matrox(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC)
2022-01-08 15:20:33 +0100matrox(~bc8147f2@cerf.good1.com)
2022-01-08 15:21:05 +0100oweasel(~frank1998@114-26-9-148.dynamic-ip.hinet.net)
2022-01-08 15:21:13 +0100nek0(~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2022-01-08 15:21:16 +0100xsperry(~xs@user/xsperry) (Killed (NickServ (GHOST command used by aldkjsfasdf!~xs@cpe-188-129-71-242.dynamic.amis.hr)))
2022-01-08 15:21:23 +0100xsperry(~xs@user/xsperry)
2022-01-08 15:22:22 +0100oweasel(~frank1998@114-26-9-148.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-08 15:22:31 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 15:22:47 +0100oweasel(~frank1998@114-26-9-148.dynamic-ip.hinet.net)
2022-01-08 15:22:58 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 15:23:48 +0100SummerSonw(~The_viole@203.77.49.232)
2022-01-08 15:24:10 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-08 15:26:06 +0100oweasel(~frank1998@114-26-9-148.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-08 15:26:38 +0100max22-(~maxime@2a01cb08833598001e8492dc42f658f2.ipv6.abo.wanadoo.fr)
2022-01-08 15:27:32 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-08 15:30:01 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Ping timeout: 250 seconds)
2022-01-08 15:30:17 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 15:31:11 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
2022-01-08 15:31:53 +0100gallup(~gallup@192-222-138-215.qc.cable.ebox.net)
2022-01-08 15:33:04 +0100nek0(~nek0@nek0.eu)
2022-01-08 15:36:52 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-01-08 15:37:17 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 15:38:11 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
2022-01-08 15:38:17 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net) (Quit: sirlensalot)
2022-01-08 15:39:48 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-01-08 15:44:18 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 15:45:12 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
2022-01-08 15:45:14 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2022-01-08 15:46:33 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-01-08 15:49:25 +0100acidjnk(~acidjnk@p200300d0c7271e7348f13af2a2732e1a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-08 15:49:25 +0100acidjnk_new3(~acidjnk@p200300d0c7271e7348f13af2a2732e1a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-08 15:51:06 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2022-01-08 15:51:18 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 15:53:12 +0100 <[itchyjunk]> wahaha
2022-01-08 15:53:13 +0100 <[itchyjunk]> https://bpa.st/LWBA
2022-01-08 15:53:28 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 15:54:12 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-08 15:54:50 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2022-01-08 15:54:51 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 15:55:17 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 15:56:34 +0100 <[exa]> [itchyjunk]: go == (+) . (^2)
2022-01-08 15:56:45 +0100gallupaouestbillie
2022-01-08 15:56:46 +0100 <int-e> dubious
2022-01-08 15:56:57 +0100 <[itchyjunk]> hmmmm i should really learn function composition
2022-01-08 15:57:05 +0100 <int-e> (should be a left fold :P)
2022-01-08 15:57:09 +0100 <[itchyjunk]> you're just saying compose + with ^2 right?
2022-01-08 15:57:21 +0100Everything(~Everythin@37.115.210.35)
2022-01-08 15:57:21 +0100 <[exa]> [itchyjunk]: or send a @pl to lambdabot :D :D
2022-01-08 15:57:28 +0100 <geekosaur> function composition is one thing,, pointfree is … a readability tarpit
2022-01-08 15:57:50 +0100 <geekosaur> I'd say ignore that for now
2022-01-08 15:57:52 +0100 <int-e> also I'd use sum . map for this 99% of the time
2022-01-08 15:57:52 +0100 <[exa]> +1 for foldl' though
2022-01-08 15:57:54 +0100 <[itchyjunk]> ah great!
2022-01-08 15:58:07 +0100 <[itchyjunk]> it says don't use map
2022-01-08 15:58:23 +0100 <int-e> [itchyjunk]: Yeah I've seen that you're required to use foldr
2022-01-08 15:58:36 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-08 15:58:37 +0100 <int-e> So take it as a complaint about the problem not your code :P
2022-01-08 15:58:51 +0100 <[itchyjunk]> i used map to check the solution instead
2022-01-08 15:58:54 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 15:59:02 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 15:59:07 +0100 <[itchyjunk]> the foldr and foldl difference is eventually going to get me
2022-01-08 15:59:09 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-01-08 15:59:22 +0100 <[itchyjunk]> i had nicely forgotten about - operator and it not being associative
2022-01-08 15:59:26 +0100 <int-e> the same is true for wanting this to be a (strict, indeed) left fold
2022-01-08 16:00:18 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 16:02:19 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2022-01-08 16:09:39 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 16:10:06 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 16:10:10 +0100 <[itchyjunk]> call me crazy but it works :D
2022-01-08 16:10:11 +0100 <[itchyjunk]> https://bpa.st/B3QA
2022-01-08 16:10:12 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-01-08 16:11:05 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-08 16:11:06 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 16:11:12 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 16:11:13 +0100 <geekosaur> not how I'd do it
2022-01-08 16:11:57 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-01-08 16:12:03 +0100 <[itchyjunk]> you'ed use helper function instead of map?
2022-01-08 16:13:01 +0100 <[exa]> why the zero case?
2022-01-08 16:13:52 +0100 <[itchyjunk]> hmm
2022-01-08 16:14:22 +0100o-90(~o-90@gateway/tor-sasl/o-90) ()
2022-01-08 16:14:34 +0100 <[itchyjunk]> ah i guess map takes care of the empty list case so it would be redundent?
2022-01-08 16:14:51 +0100 <geekosaur> the fold does since it'd just return the 0
2022-01-08 16:15:07 +0100 <[itchyjunk]> ahh
2022-01-08 16:15:29 +0100 <geekosaur> > foldr f z []
2022-01-08 16:15:31 +0100 <lambdabot> z
2022-01-08 16:16:53 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-08 16:18:32 +0100cosimone`(~user@93-47-228-11.ip115.fastwebnet.it) (Ping timeout: 256 seconds)
2022-01-08 16:19:03 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 16:21:20 +0100 <[itchyjunk]> https://bpa.st/PYMA
2022-01-08 16:21:30 +0100 <[itchyjunk]> I did the foldl differently using a helper
2022-01-08 16:21:54 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 16:22:13 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-08 16:22:21 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 16:22:22 +0100 <geekosaur> that's closer to how I'd do it. have they taught you about lambdas yet?
2022-01-08 16:22:54 +0100 <[itchyjunk]> no. this isn't for a class :x i am grabbing random google exercises
2022-01-08 16:23:10 +0100 <[itchyjunk]> but i know \x->x thingy from looking at random things
2022-01-08 16:24:00 +0100 <geekosaur> so in place of such a simple "go" I'd just ise \x y -> x + 1
2022-01-08 16:24:18 +0100 <geekosaur> pr replace the y with _ since I'm not using it
2022-01-08 16:25:13 +0100 <[itchyjunk]> oh neat!
2022-01-08 16:25:21 +0100 <bjs> or just (+ 1)
2022-01-08 16:26:13 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 16:26:16 +0100 <geekosaur> not quite since you need to discard the other one
2022-01-08 16:26:19 +0100 <bjs> [itchyjunk]: I'd write `\_ x -> x + 1` here
2022-01-08 16:26:43 +0100 <geekosaur> you can pointfree it with that and const, but meh
2022-01-08 16:26:55 +0100 <[itchyjunk]> hm what did pointfree mean?
2022-01-08 16:27:02 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-08 16:27:08 +0100 <bjs> [itchyjunk]: you can `const (+ 1)` or `\_ -> (+ 1)`
2022-01-08 16:27:11 +0100 <bjs> then you don't mention "x"
2022-01-08 16:27:26 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
2022-01-08 16:28:07 +0100 <[itchyjunk]> /o\
2022-01-08 16:28:20 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 16:28:37 +0100 <bjs> some people call it a "pointless" style because they're funny people :)
2022-01-08 16:28:43 +0100 <geekosaur> that was also what we were discussing before with [08 14:56:34] <[exa]> [itchyjunk]: go == (+) . (^2)
2022-01-08 16:29:05 +0100 <geekosaur> and I'm meh on it because of readability especially for beginners
2022-01-08 16:29:13 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-08 16:30:06 +0100 <[itchyjunk]> ahh
2022-01-08 16:30:24 +0100 <[itchyjunk]> i thought the point was referring to the . point
2022-01-08 16:30:42 +0100 <geekosaur> a point is a variable, essentiallyy
2022-01-08 16:30:51 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-01-08 16:31:36 +0100 <[itchyjunk]> ah
2022-01-08 16:32:02 +0100 <geekosaur> @pl \x y -> x + 1
2022-01-08 16:32:02 +0100 <lambdabot> const . (1 +)
2022-01-08 16:32:19 +0100 <geekosaur> I don't exactly recommend that
2022-01-08 16:33:15 +0100 <geekosaur> it's the sort of thing you come back 6 months later and wonder wtf you were drinking at the time
2022-01-08 16:33:36 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 16:33:45 +0100Nahra(~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection)
2022-01-08 16:33:47 +0100 <bjs> I quite like point-free things, it really emphasises the declarative nature of things
2022-01-08 16:34:20 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-08 16:34:50 +0100[exa]sees scrollback
2022-01-08 16:35:00 +0100[exa]. o O ( what have I opened )
2022-01-08 16:35:19 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 16:36:15 +0100 <lechner> it might be a littleclearer if point free did not involve dots!
2022-01-08 16:36:31 +0100 <geekosaur> maybe I spent too much time trying to wrap my head around APL way back when™ but I'm less than impressed with pointfree style
2022-01-08 16:36:49 +0100 <razetime> pointfree is nice in APL for describing short things.
2022-01-08 16:37:15 +0100 <razetime> the problem was when they decided the everything should be pointfree in J(and then later realizing why that was bad)
2022-01-08 16:37:30 +0100 <geekosaur> oh, that attitude predated J
2022-01-08 16:37:47 +0100 <geekosaur> pretty much everything in APL was pointfree too
2022-01-08 16:38:04 +0100 <razetime> I don't think so?
2022-01-08 16:38:21 +0100 <geekosaur> maybe it was just the training materials I had on hand
2022-01-08 16:38:34 +0100 <razetime> From what I know, J got trains first, which was later added to Dyalog APL and others
2022-01-08 16:38:37 +0100 <geekosaur> they pointfree-d anything they could. granting that was less than in J
2022-01-08 16:39:17 +0100 <geekosaur> but they made a big deal of it
2022-01-08 16:39:47 +0100 <lechner> is "tacit" style a clearer term? https://en.wikipedia.org/wiki/Tacit_programming
2022-01-08 16:40:12 +0100 <razetime> yes, tacit is the term used in general. In APL/J/K these are called trains.
2022-01-08 16:40:37 +0100 <lechner> that page also calls it "pointless", with an undertone
2022-01-08 16:41:13 +0100 <hpc> lambdabot's @pl command is a nod to "pointless" as well
2022-01-08 16:41:23 +0100 <lechner> i see
2022-01-08 16:41:28 +0100 <razetime> after about 10 symbols i usually just switch to a lambda.
2022-01-08 16:41:42 +0100 <razetime> (⊢∘≢≥∘⍋⊢∘⍳∘≢,⊣) is relatively readable once you know train rules.
2022-01-08 16:42:13 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-08 16:44:42 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 16:48:20 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-08 16:49:37 +0100 <lechner> naming things is one of the great privileges of language, and can make code easier to read, if less terse
2022-01-08 16:49:50 +0100lavaman(~lavaman@98.38.249.169)
2022-01-08 16:53:28 +0100 <lechner> Hi, when encoding JSON with aeson and saving it as a file, who converts it to UTF-8 please? When injecting JSON into a Hasql.TH statement via Pg's 'json_populate_recordset', will the data get encoded twice?
2022-01-08 16:54:09 +0100sebau1995(~sebau1995@138.117.21.68)
2022-01-08 16:54:13 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-08 16:54:30 +0100sebau1995(~sebau1995@138.117.21.68) (Client Quit)
2022-01-08 16:54:41 +0100 <geekosaur> the I/O layer does, see hSetEncoding
2022-01-08 16:55:00 +0100 <lechner> so it's late in the process
2022-01-08 16:55:02 +0100 <geekosaur> I couldn't tell you about what in Hasql does it
2022-01-08 16:55:07 +0100 <lechner> as it should be
2022-01-08 16:55:12 +0100 <geekosaur> yes
2022-01-08 16:56:32 +0100 <lechner> that mean aeson doesn't convert it, right?
2022-01-08 16:57:33 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-01-08 16:57:35 +0100 <lechner> or encode it, to be exact
2022-01-08 16:58:03 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 16:58:03 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 16:58:03 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 16:58:23 +0100 <geekosaur> that I don't know. although if aeson gives you a String it should not be encoded
2022-01-08 16:58:35 +0100 <geekosaur> if it's a Text then it may be (see text 2.0)
2022-01-08 16:58:46 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 256 seconds)
2022-01-08 16:59:09 +0100 <lechner> that's only internal though, isn't it?
2022-01-08 16:59:17 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-01-08 16:59:26 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-08 16:59:28 +0100 <lechner> externally Text still represents code points?
2022-01-08 16:59:28 +0100 <Clint> the question is how you're saving it to a file
2022-01-08 17:00:01 +0100 <geekosaur> I think they're sending it to a database. that *should* be a binary protocol
2022-01-08 17:00:01 +0100 <Clint> because it's the f.ex. String/Text->ByteString step that matters
2022-01-08 17:00:27 +0100 <lechner> actually, i am not saving it at all. i want to send it to Postgres, but in Perl it leads to double encoding
2022-01-08 17:00:29 +0100 <geekosaur> but I don't know where in that pipeline the conversion would happen, as Clint said
2022-01-08 17:00:38 +0100 <lechner> i am migrating all my code
2022-01-08 17:00:56 +0100 <lechner> you will be happy to hear!
2022-01-08 17:01:11 +0100 <lechner> i think haskell is fine
2022-01-08 17:01:20 +0100 <lechner> i love this language
2022-01-08 17:01:45 +0100 <geekosaur> anyway I would probaly not encode it until I discovered it caused problems, since there should already be a proper encoding layer in place
2022-01-08 17:02:09 +0100 <razetime> i just sarted haskell today with the book "Real World Haskell"
2022-01-08 17:02:14 +0100 <razetime> I like its approach so far
2022-01-08 17:02:20 +0100 <lechner> congrats!
2022-01-08 17:02:58 +0100 <lechner> in perl i turn off all I/O layers
2022-01-08 17:03:54 +0100 <lechner> but as usual haskell does the right thing (TM)
2022-01-08 17:04:08 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-01-08 17:04:16 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-01-08 17:04:44 +0100 <lechner> Clint: thanks!
2022-01-08 17:05:45 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-01-08 17:05:50 +0100 <geekosaur> if they're doing t right then encoding should be the last thing that happens before handing the SQL or data off to libpq
2022-01-08 17:05:53 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
2022-01-08 17:06:01 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-08 17:06:33 +0100xlei(~akans@pool-68-129-84-118.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-01-08 17:08:34 +0100 <lechner> it can be confusing because UTF-8 is part of the JSON spec https://datatracker.ietf.org/doc/html/rfc8259#section-8.1
2022-01-08 17:09:13 +0100 <lechner> but aeson will work well!
2022-01-08 17:09:14 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer)
2022-01-08 17:09:40 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
2022-01-08 17:09:40 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer)
2022-01-08 17:09:48 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-01-08 17:10:09 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-01-08 17:10:42 +0100 <lechner> thank you all for building this fine language. i wish i hadk found it ten years earlier
2022-01-08 17:11:05 +0100ouestbillie(~gallup@192-222-138-215.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2022-01-08 17:11:39 +0100aouestbillie(~gallup@192-222-138-215.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2022-01-08 17:13:27 +0100zmt00(~zmt00@user/zmt00)
2022-01-08 17:16:45 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 256 seconds)
2022-01-08 17:17:02 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
2022-01-08 17:18:10 +0100roboguy(~roboguy@user/roboguy)
2022-01-08 17:18:11 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 17:19:39 +0100 <lechner> wow, APL is symbolic https://en.wikipedia.org/wiki/APL_syntax_and_symbols
2022-01-08 17:20:22 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-08 17:24:41 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-08 17:27:41 +0100shapr(~user@98.54.1.142)
2022-01-08 17:30:18 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-01-08 17:30:18 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-01-08 17:30:22 +0100allbery_bgeekosaur
2022-01-08 17:32:09 +0100 <geekosaur> very symbolic. and used a lot of overprints
2022-01-08 17:32:11 +0100 <razetime> yes, APL has its roots in math notation so it uses symbols.
2022-01-08 17:32:27 +0100 <razetime> overprints?
2022-01-08 17:32:47 +0100 <geekosaur> type a symbol, backspace over it, type another symbol on top
2022-01-08 17:33:35 +0100 <geekosaur> think quote-quad for a common example
2022-01-08 17:34:05 +0100 <razetime> ⍞?
2022-01-08 17:34:14 +0100stef204(~stef204@user/stef204)
2022-01-08 17:34:15 +0100 <razetime> well, i just have keyboard layout for it
2022-01-08 17:34:28 +0100 <geekosaur> in unicode they gave them all distinct symbols because overprinting terminals are kinda rare these days
2022-01-08 17:34:38 +0100 <hpc> on typewriters you might write a 0 by writing O backspace /
2022-01-08 17:34:39 +0100 <geekosaur> but they started out on ttys
2022-01-08 17:35:04 +0100 <geekosaur> but originally you did quote-quad as quad backspace quote
2022-01-08 17:35:19 +0100 <geekosaur> and lamp was cap backspace circle
2022-01-08 17:35:34 +0100 <razetime> bash has ~/.inputrc which allows an overprinting like setup.
2022-01-08 17:35:59 +0100 <razetime> lamp is AltGr-, in the newer layouts
2022-01-08 17:37:14 +0100 <geekosaur> damn I had fun experimenting with that stuff. parents weren't so happy when they got slapped with a $600 CPU time bill though (I'd had no idea they did that)
2022-01-08 17:38:22 +0100 <razetime> wow, you must've been using the timesharing machines from the I.P. Sharp times
2022-01-08 17:38:42 +0100 <geekosaur> they had fancy APL terminals by the time I was playing with it
2022-01-08 17:38:52 +0100 <geekosaur> still did the overprinting thing
2022-01-08 17:39:15 +0100 <razetime> that's like.. >40 years ago?
2022-01-08 17:39:27 +0100 <geekosaur> this was 1981-82, I spent half days my senior HS year at CWRU
2022-01-08 17:39:53 +0100 <geekosaur> so yes, 40 years ago
2022-01-08 17:41:13 +0100 <razetime> very cool! Most people I encounter in the array community nowadays come up from older demo videos.
2022-01-08 17:41:37 +0100 <razetime> it must've been something to try out apl in those times
2022-01-08 17:41:50 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-08 17:43:43 +0100xlei(~akans@pool-108-54-97-84.nycmny.fios.verizon.net)
2022-01-08 17:44:24 +0100 <geekosaur> also played with SPITBOL (IBM SNOBOL compiler), SAIL (variant of ALGOL-60 from Stanford), SIMULA, and I think there were a few others but can't recall them now
2022-01-08 17:44:46 +0100 <geekosaur> took me a while to remember the name of SAIL, all I was recalling was that it was an ALGOL derivative
2022-01-08 17:47:52 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 17:49:01 +0100 <razetime> wonder how many of those still have implementations
2022-01-08 17:49:48 +0100 <geekosaur> dunno. this was all on a DECsystem 20/60, they pulled the plug on the last of those years ago
2022-01-08 17:49:52 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-01-08 17:50:09 +0100 <geekosaur> oh, a bit of BLISS-10. which led to my learning about how PDP10s worked
2022-01-08 17:51:16 +0100 <geekosaur> and explained why everything but SNOBOL was based on 6s instead of 8s
2022-01-08 17:52:15 +0100 <geekosaur> on the other hand that meant I understood the TENEX directive in FTP when I discovered that a few years later
2022-01-08 17:53:10 +0100shapr(~user@98.54.1.142) (Ping timeout: 256 seconds)
2022-01-08 17:53:16 +0100 <razetime> i only recognize SNOBOL from there(and ALGOL, i guess)
2022-01-08 17:53:55 +0100xlei(~akans@pool-108-54-97-84.nycmny.fios.verizon.net) (Quit: ZNC 1.9.x-git-167-81df4dec - https://znc.in)
2022-01-08 17:54:07 +0100 <geekosaur> SIMULA's still used, I think
2022-01-08 17:54:16 +0100ouestbillie(~gallup@modemcable057.194-20-96.mc.videotron.ca)
2022-01-08 17:54:16 +0100aouestbillie(~gallup@modemcable057.194-20-96.mc.videotron.ca)
2022-01-08 17:54:40 +0100 <geekosaur> simulation language generally considered to be the first object oriented language, using the actor model
2022-01-08 17:54:44 +0100xlei(~akans@pool-108-54-97-84.nycmny.fios.verizon.net)
2022-01-08 17:55:39 +0100 <geekosaur> SNOBOL was replaced by Icon in much the same way APL was replaced by J then K
2022-01-08 17:57:33 +0100edr(~edr@user/edr) (Ping timeout: 250 seconds)
2022-01-08 17:57:45 +0100edr(~edr@enlo.co)
2022-01-08 17:57:45 +0100edr(~edr@enlo.co) (Changing host)
2022-01-08 17:57:45 +0100edr(~edr@user/edr)
2022-01-08 17:57:59 +0100polux(~polux@51.15.169.172) (Ping timeout: 250 seconds)
2022-01-08 17:58:13 +0100polux(~polux@51.15.169.172)
2022-01-08 17:58:23 +0100 <geekosaur> now I'm trying to imagine how different the programming world would be today if Unicon (Icon with a focus on Unix programming) had come along early enough to displace Perl
2022-01-08 17:58:43 +0100 <razetime> APL hasn't quite been replaced yet, but BQN seems like a worthy successor now
2022-01-08 17:58:51 +0100xsarnik(xsarnik@lounge.fi.muni.cz) (Ping timeout: 250 seconds)
2022-01-08 17:59:06 +0100xsarnik(xsarnik@lounge.fi.muni.cz)
2022-01-08 17:59:16 +0100 <razetime> K is very different from the other two and my personal favourit
2022-01-08 17:59:17 +0100n3t(~n3t@user/n3t) (Ping timeout: 250 seconds)
2022-01-08 18:00:22 +0100n3t(n3t@s45.mydevil.net)
2022-01-08 18:01:20 +0100kawpuh(~kawpuh@66.42.81.80) (Ping timeout: 252 seconds)
2022-01-08 18:01:30 +0100kawpuh(~kawpuh@66.42.81.80)
2022-01-08 18:01:53 +0100nerdypepper(~nerdypepp@user/nerdypepper) (Ping timeout: 250 seconds)
2022-01-08 18:02:41 +0100nerdypepper(~nerdypepp@user/nerdypepper)
2022-01-08 18:02:56 +0100nhatanh02(~satori@123.24.172.30)
2022-01-08 18:03:41 +0100c_wraith(~c_wraith@adjoint.us) (Ping timeout: 245 seconds)
2022-01-08 18:03:52 +0100c_wraith(~c_wraith@adjoint.us)
2022-01-08 18:04:55 +0100Philonous(~Philonous@user/philonous) (Ping timeout: 250 seconds)
2022-01-08 18:04:55 +0100clever(~clever@99.192.114.98) (Ping timeout: 250 seconds)
2022-01-08 18:05:09 +0100clever(~clever@99.192.114.98)
2022-01-08 18:05:21 +0100Philonous(~Philonous@user/philonous)
2022-01-08 18:06:39 +0100AWizzArd(~code@user/awizzard) (Ping timeout: 250 seconds)
2022-01-08 18:06:45 +0100AWizzArd(~code@gehrels.uberspace.de)
2022-01-08 18:06:46 +0100razetime(~quassel@49.207.213.63) (Ping timeout: 256 seconds)
2022-01-08 18:07:56 +0100Patternmaster(~georg@li1192-118.members.linode.com) (Ping timeout: 252 seconds)
2022-01-08 18:08:10 +0100Patternmaster(~georg@li1192-118.members.linode.com)
2022-01-08 18:08:16 +0100xerox(~edi@user/edi) (Ping timeout: 245 seconds)
2022-01-08 18:08:25 +0100xerox(~edi@user/edi)
2022-01-08 18:10:04 +0100 <EvanR> A -> a, is Applicative. What are the requirements for A -> (B,a) to be Applicative... also what is this
2022-01-08 18:10:45 +0100 <[exa]> EvanR: Monoid B?
2022-01-08 18:11:01 +0100 <EvanR> that's why I was thinking, but didn't know if I was missing a more general thing
2022-01-08 18:11:06 +0100 <EvanR> s/why/what/
2022-01-08 18:11:06 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer)
2022-01-08 18:11:07 +0100 <monochrom> Usually we want B to be a monoid. Then you have ReaderT A (Writer B).
2022-01-08 18:11:15 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-01-08 18:12:17 +0100 <EvanR> ok, mempty is "required" for pure
2022-01-08 18:13:25 +0100 <monochrom> For foo<*>bar, "use <> to combine the two B's" is more general than "always prefer the B from foo" and "always prefer the B from bar".
2022-01-08 18:13:41 +0100fluxit(~fluxit@techsmix.net) (Ping timeout: 245 seconds)
2022-01-08 18:14:12 +0100 <monochrom> and is pivotal to associative laws of Applicative anyway.
2022-01-08 18:14:36 +0100 <EvanR> crazy how Monoid keeps cropping up
2022-01-08 18:14:53 +0100elvishjerricco(sid237756@helmsley.irccloud.com) (Ping timeout: 250 seconds)
2022-01-08 18:15:02 +0100elvishjerricco(sid237756@id-237756.helmsley.irccloud.com)
2022-01-08 18:15:18 +0100 <EvanR> Applicative itself is a form of Monoid in some category, forgot the details
2022-01-08 18:15:44 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2022-01-08 18:16:09 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2022-01-08 18:16:13 +0100 <geekosaur> "strong lax monoidal functor" (looked it up to double check)
2022-01-08 18:16:44 +0100fluxit(~fluxit@techsmix.net)
2022-01-08 18:18:21 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Ping timeout: 250 seconds)
2022-01-08 18:18:46 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-01-08 18:21:49 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-08 18:23:26 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2022-01-08 18:24:10 +0100 <EvanR> if I have type f and type g which are both Applicative, is the composition f `O` g Applicative
2022-01-08 18:24:30 +0100 <[exa]> :k Compose
2022-01-08 18:24:30 +0100 <lambdabot> error:
2022-01-08 18:24:30 +0100 <lambdabot> Not in scope: type constructor or class ‘Compose’
2022-01-08 18:24:34 +0100 <[exa]> ayay
2022-01-08 18:24:41 +0100 <geekosaur> % :k Compose
2022-01-08 18:24:41 +0100 <yahb> geekosaur: ; <interactive>:1:1: error: Not in scope: type constructor or class `Compose'
2022-01-08 18:24:52 +0100 <geekosaur> % import Data.Compose
2022-01-08 18:24:52 +0100 <yahb> geekosaur: ; <no location info>: error:; Could not find module `Data.Compose'; Perhaps you meant Data.Complex (from base-4.15.0.0)
2022-01-08 18:24:57 +0100 <EvanR> oof
2022-01-08 18:25:01 +0100 <[exa]> EvanR: basically https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Functor-Compose.html#t:Compose
2022-01-08 18:25:04 +0100 <geekosaur> % import Control.Category
2022-01-08 18:25:04 +0100 <yahb> geekosaur:
2022-01-08 18:25:11 +0100 <geekosaur> oh
2022-01-08 18:25:14 +0100 <geekosaur> % :k Compose
2022-01-08 18:25:14 +0100 <yahb> geekosaur: ; <interactive>:1:1: error: Not in scope: type constructor or class `Compose'
2022-01-08 18:25:28 +0100 <EvanR> that's cool, that they compose
2022-01-08 18:25:45 +0100 <geekosaur> pretty sure they compose, but monads don't in general
2022-01-08 18:25:54 +0100neurocyte0917(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2022-01-08 18:26:39 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4)
2022-01-08 18:26:52 +0100 <EvanR> let see what else Compose can do
2022-01-08 18:26:53 +0100neurocyte0917(~neurocyte@IP-094046083160.dynamic.medianet-world.de)
2022-01-08 18:26:53 +0100neurocyte0917(~neurocyte@IP-094046083160.dynamic.medianet-world.de) (Changing host)
2022-01-08 18:26:53 +0100neurocyte0917(~neurocyte@user/neurocyte)
2022-01-08 18:27:51 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-08 18:27:58 +0100Jing(~hedgehog@240e:390:7c53:a7e1:8d38:5b59:3c2d:440) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-08 18:28:07 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 18:28:35 +0100 <EvanR> Functor, Foldable, Traversable, Semigroup, Monoid,
2022-01-08 18:28:42 +0100 <[exa]> Alternative!
2022-01-08 18:29:00 +0100 <EvanR> somehow two Contravariants isn't contravariant?
2022-01-08 18:29:20 +0100 <[exa]> I'd guess that's a Functor
2022-01-08 18:29:31 +0100a1paca(~a1paca@user/a1paca) (Ping timeout: 245 seconds)
2022-01-08 18:29:35 +0100 <EvanR> oh... and we can't get to the same instance two ways
2022-01-08 18:30:13 +0100 <[exa]> I'd say that the order is set by order of composing the types
2022-01-08 18:30:20 +0100a1paca(~a1paca@user/a1paca)
2022-01-08 18:30:22 +0100 <[exa]> but that's a wild guess
2022-01-08 18:31:09 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 18:31:12 +0100 <EvanR> no..
2022-01-08 18:32:13 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-01-08 18:34:23 +0100xlei(~akans@pool-108-54-97-84.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-01-08 18:39:17 +0100 <EvanR> Compose would be cool to have in lambdabot
2022-01-08 18:40:53 +0100 <polyphem> % import Data.Functor.Compose
2022-01-08 18:40:53 +0100 <yahb> polyphem:
2022-01-08 18:40:56 +0100 <geekosaur> @let import Data.Functor Compose
2022-01-08 18:40:56 +0100 <lambdabot> Parse failed: Parse error: Compose
2022-01-08 18:41:02 +0100 <geekosaur> @let import Data.Functor.Compose
2022-01-08 18:41:03 +0100 <lambdabot> Defined.
2022-01-08 18:41:06 +0100 <geekosaur> there ya go
2022-01-08 18:42:37 +0100xlei(~akans@pool-71-190-222-100.nycmny.fios.verizon.net)
2022-01-08 18:46:59 +0100raym(~raym@user/raym)
2022-01-08 18:47:17 +0100lavaman(~lavaman@98.38.249.169)
2022-01-08 18:47:58 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-08 18:48:02 +0100stef204(~stef204@user/stef204) (Ping timeout: 268 seconds)
2022-01-08 18:52:23 +0100stef204(~stef204@user/stef204)
2022-01-08 18:52:58 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-08 18:59:58 +0100haritz(~hrtz@user/haritz) (Read error: Connection reset by peer)
2022-01-08 19:02:42 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-01-08 19:03:44 +0100 <EvanR> > ((\x -> ("a",Sum x)) <> (\y -> ("b", Sum y))) 2
2022-01-08 19:03:45 +0100 <lambdabot> ("ab",Sum {getSum = 4})
2022-01-08 19:03:51 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 19:04:18 +0100 <EvanR> :t Compose (\x -> ("a",Sum x)) <> Compose (\y -> ("b", Sum y))
2022-01-08 19:04:19 +0100 <lambdabot> Semigroup (Compose ((->) a) ((,) [Char]) (Sum a)) => Compose ((->) a) ((,) [Char]) (Sum a)
2022-01-08 19:05:24 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4)
2022-01-08 19:05:25 +0100 <EvanR> > getCompose (Compose (\x -> ("a",Sum x)) <> Compose (\y -> ("b", Sum y))) 2
2022-01-08 19:05:26 +0100 <lambdabot> error:
2022-01-08 19:05:26 +0100 <lambdabot> • No instance for (Semigroup
2022-01-08 19:05:26 +0100 <lambdabot> (Compose ((->) Integer) ((,) [Char]) (Sum Integer)))
2022-01-08 19:05:30 +0100 <EvanR> :(
2022-01-08 19:06:40 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 19:06:40 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 19:06:40 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 19:07:47 +0100haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2022-01-08 19:07:48 +0100haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
2022-01-08 19:07:48 +0100haritz(~hrtz@user/haritz)
2022-01-08 19:08:04 +0100 <EvanR> > getCompose (Compose (\x -> ("a",Sum x)) <> Compose (\y -> ("b", Sum y))) (Sum 2)
2022-01-08 19:08:05 +0100 <lambdabot> error:
2022-01-08 19:08:06 +0100 <lambdabot> • No instance for (Semigroup
2022-01-08 19:08:06 +0100 <lambdabot> (Compose ((->) (Sum Integer)) ((,) [Char]) (Sum (Su...
2022-01-08 19:09:58 +0100 <EvanR> fixing that, it seems the problem is there's no instance specifically for (Sum Int -> (String, Sum Int))
2022-01-08 19:11:07 +0100 <xerox> @unmtl State (Sum Int) String
2022-01-08 19:11:07 +0100 <lambdabot> Sum Int -> (String, Sum Int)
2022-01-08 19:12:30 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-08 19:12:42 +0100 <EvanR> > getCompose (liftA2 (<>) (Compose (\x -> ("a",x))) (Compose (\y -> ("b",y)))) (Sum 2)
2022-01-08 19:12:43 +0100 <lambdabot> ("ab",Sum {getSum = 4})
2022-01-08 19:13:39 +0100 <EvanR> if monoiding directly doesn't work, switch to applicative
2022-01-08 19:14:12 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-01-08 19:14:37 +0100xlei(~akans@pool-71-190-222-100.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-01-08 19:14:53 +0100xlei_(~akans@pool-71-125-19-142.nycmny.fios.verizon.net)
2022-01-08 19:15:01 +0100 <EvanR> this is really cool, should save writing a lot of Applicative instances
2022-01-08 19:15:08 +0100emad_(~emad@156.214.64.147)
2022-01-08 19:15:40 +0100little_mac(~little_ma@2601:410:4300:3ce0:e09f:2436:e1e3:cca8)
2022-01-08 19:16:21 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-08 19:17:23 +0100emad_(~emad@156.214.64.147) (Client Quit)
2022-01-08 19:17:25 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-01-08 19:17:46 +0100emad(~emad@156.214.64.147)
2022-01-08 19:19:51 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-08 19:21:17 +0100xlei_(~akans@pool-71-125-19-142.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-08 19:22:40 +0100xlei(~akans@pool-71-125-19-142.nycmny.fios.verizon.net)
2022-01-08 19:23:43 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-08 19:23:43 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-08 19:23:43 +0100wroathe(~wroathe@user/wroathe)
2022-01-08 19:23:57 +0100xlei(~akans@pool-71-125-19-142.nycmny.fios.verizon.net) (Client Quit)
2022-01-08 19:25:45 +0100xlei(~akans@pool-71-125-19-142.nycmny.fios.verizon.net)
2022-01-08 19:28:05 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-08 19:31:01 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-08 19:33:12 +0100econo(uid147250@user/econo)
2022-01-08 19:34:02 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-08 19:36:15 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2022-01-08 19:36:16 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2022-01-08 19:39:50 +0100juhp(~juhp@128.106.188.82) (Read error: Connection reset by peer)
2022-01-08 19:40:19 +0100zincy(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-08 19:59:46 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-08 20:10:18 +0100nhatanh02(~satori@123.24.172.30) (Ping timeout: 256 seconds)
2022-01-08 20:12:24 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-01-08 20:13:40 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-08 20:14:15 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-08 20:14:30 +0100coolnickname(uid531864@user/coolnickname)
2022-01-08 20:15:46 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-08 20:17:06 +0100user01(~aj@154.0.137.32)
2022-01-08 20:19:37 +0100little_mac(~little_ma@2601:410:4300:3ce0:e09f:2436:e1e3:cca8) (Ping timeout: 240 seconds)
2022-01-08 20:21:05 +0100little_mac(~little_ma@c-24-127-188-93.hsd1.mi.comcast.net)
2022-01-08 20:21:38 +0100deadmarshal(~deadmarsh@95.38.113.27) (Ping timeout: 256 seconds)
2022-01-08 20:26:39 +0100zzz(~z@user/zero)
2022-01-08 20:29:08 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 20:29:10 +0100zero(~z@user/zero) (Ping timeout: 268 seconds)
2022-01-08 20:29:10 +0100zzzzero
2022-01-08 20:29:37 +0100 <ProfSimm> Let's imagine a hypothetical autocompletion feature where when you type a function you see a drop-down of all valid values on each argument.
2022-01-08 20:30:09 +0100 <ProfSimm> So when you have a function that takes prime numbers as input, you see a dropdown of primes.
2022-01-08 20:30:17 +0100 <ProfSimm> I wonder how feasible this is
2022-01-08 20:30:26 +0100texasmynsted(~texasmyns@99.96.221.112) (WeeChat 3.3)
2022-01-08 20:30:53 +0100 <polyphem> ProfSimm: and a function that takes Integer ?
2022-01-08 20:31:20 +0100 <ProfSimm> polux: list of all integers. Well it'll be lazily computed as you scroll. And you can type it to jump around the list
2022-01-08 20:31:32 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-01-08 20:31:49 +0100 <ProfSimm> polux: gets a bit tricky if it takes a double.
2022-01-08 20:32:05 +0100 <ProfSimm> polux: that would need a box that scrolls in two directions. Mantissa and exponent.
2022-01-08 20:32:23 +0100 <ProfSimm> :D
2022-01-08 20:32:25 +0100cosimone`(~user@93-47-228-11.ip115.fastwebnet.it)
2022-01-08 20:33:40 +0100 <polyphem> ProfSimm: and a function that takes a complex number ?
2022-01-08 20:33:46 +0100 <ProfSimm> polux: I was thinking about this in the context of implementing a record as a function taking fieldname as input. And needing autocompletion on that argument therefore.
2022-01-08 20:34:01 +0100 <ProfSimm> polyphem: more dimensions
2022-01-08 20:34:08 +0100 <polyphem> hehe
2022-01-08 20:34:43 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
2022-01-08 20:35:24 +0100 <polyphem> autocompletion is done vie prefix trees
2022-01-08 20:35:33 +0100 <polyphem> s/vie/via/
2022-01-08 20:35:45 +0100matrox(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-01-08 20:38:03 +0100 <monochrom> So I type in fmap...
2022-01-08 20:39:43 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-08 20:40:25 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-08 20:44:47 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-08 20:45:19 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
2022-01-08 20:47:25 +0100Sgeo(~Sgeo@user/sgeo)
2022-01-08 20:58:11 +0100 <lechner> Hi, do I have to use hasql-transactions to have transactions with hasql?
2022-01-08 20:59:09 +0100n3t(n3t@s45.mydevil.net) (Changing host)
2022-01-08 20:59:09 +0100n3t(n3t@user/n3t)
2022-01-08 21:01:42 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 21:01:50 +0100vglfr(~vglfr@88.155.96.35)
2022-01-08 21:04:03 +0100 <[itchyjunk]> https://bpa.st/SOHA
2022-01-08 21:04:08 +0100cosimone`(~user@93-47-228-11.ip115.fastwebnet.it) (Ping timeout: 256 seconds)
2022-01-08 21:04:46 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 21:07:38 +0100juhp(~juhp@128.106.188.82)
2022-01-08 21:07:55 +0100 <EvanR> I type in the first character of the source code for an MMO
2022-01-08 21:08:13 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
2022-01-08 21:08:23 +0100 <EvanR> 🤑
2022-01-08 21:11:29 +0100emad(~emad@156.214.64.147) (Quit: Leaving)
2022-01-08 21:11:30 +0100vglfr(~vglfr@88.155.96.35) (Read error: Connection reset by peer)
2022-01-08 21:11:52 +0100emad(~emad@156.214.64.147)
2022-01-08 21:12:09 +0100vglfr(~vglfr@88.155.96.35)
2022-01-08 21:12:34 +0100user01(~aj@154.0.137.32) ()
2022-01-08 21:12:57 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
2022-01-08 21:22:26 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-01-08 21:23:06 +0100 <Inst> do you know where i can find a good tutorial on haskell type signatures?
2022-01-08 21:23:16 +0100 <Inst> like, i'm fed up with meeting crap like ~ and forall
2022-01-08 21:24:45 +0100 <[itchyjunk]> Hm, i have having a little brain dead movement. I have a function that takes 2 ints. but if the list doesn't have enough, it will only get one of the int. I am trying to figure out how to deal with this situation. go x _ = x isn't it :x
2022-01-08 21:26:55 +0100 <polyphem> patttern match on all cases : go [] = ... ; go (x:y:xs) ; go [x] = error ...
2022-01-08 21:27:18 +0100 <bjs> [itchyjunk]: is go the function that takes a list or the function that takes the 2 ints?
2022-01-08 21:28:46 +0100 <[itchyjunk]> https://bpa.st/ZPXQ
2022-01-08 21:28:49 +0100 <[itchyjunk]> takes 2 ints.
2022-01-08 21:28:52 +0100zaquest(~notzaques@5.130.79.72)
2022-01-08 21:29:07 +0100 <[itchyjunk]> I am trying to understand why foldr1 didn't have the non exhaustive pattern issue but foldl1 does
2022-01-08 21:29:10 +0100 <[itchyjunk]> ;_;
2022-01-08 21:29:34 +0100xmyst(~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de)
2022-01-08 21:30:30 +0100 <bjs> [itchyjunk]: did you mean minListl not minList at the bottom line?
2022-01-08 21:30:30 +0100vglfr(~vglfr@88.155.96.35) (Read error: Connection reset by peer)
2022-01-08 21:30:39 +0100 <[itchyjunk]> !
2022-01-08 21:30:40 +0100 <[itchyjunk]> dangit
2022-01-08 21:31:04 +0100 <[itchyjunk]> that was the bug?
2022-01-08 21:31:07 +0100 <[itchyjunk]> /o\
2022-01-08 21:31:07 +0100lavaman(~lavaman@98.38.249.169)
2022-01-08 21:31:15 +0100vglfr(~vglfr@88.155.96.35)
2022-01-08 21:31:28 +0100 <[itchyjunk]> works now..
2022-01-08 21:32:21 +0100little_mac(~little_ma@c-24-127-188-93.hsd1.mi.comcast.net) (Remote host closed the connection)
2022-01-08 21:33:31 +0100 <EvanR> Inst, tutorials... better go straight to the documentation
2022-01-08 21:33:45 +0100 <Inst> back to haskell report 2010 it is, then
2022-01-08 21:34:07 +0100 <EvanR> or the ghc manual
2022-01-08 21:34:24 +0100 <geekosaur> the report won't have either forall or ~
2022-01-08 21:34:24 +0100 <EvanR> if you're stuck on really advanced stuff
2022-01-08 21:35:48 +0100little_mac(~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263)
2022-01-08 21:35:53 +0100 <c_wraith> the ghc manual is really quite readable
2022-01-08 21:38:06 +0100 <geekosaur> mostly. iirc the stuff about ~ is less so
2022-01-08 21:40:01 +0100 <EvanR> Inst, a ~ b is a Constraint that means a and b are the same type
2022-01-08 21:40:18 +0100 <Inst> thank you so much
2022-01-08 21:40:29 +0100 <Inst> trying to search through HPFFP
2022-01-08 21:40:49 +0100ouestbillie(~gallup@modemcable057.194-20-96.mc.videotron.ca) (Ping timeout: 256 seconds)
2022-01-08 21:40:49 +0100aouestbillie(~gallup@modemcable057.194-20-96.mc.videotron.ca) (Ping timeout: 256 seconds)
2022-01-08 21:41:04 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4)
2022-01-08 21:41:27 +0100 <EvanR> it goes in the same place as other constraints like Ord a, which means a has (to have) an Ord instance
2022-01-08 21:42:02 +0100 <geekosaur> in general if you're seeing ~ as a constraint then you've kinda blown past the stuff most Haskell introductory courses cover
2022-01-08 21:42:03 +0100 <Inst> i'm more looking for an authoritative reference on type signatures
2022-01-08 21:42:25 +0100 <EvanR> it's complicated because there have been so many extensions
2022-01-08 21:42:57 +0100 <EvanR> and some of them are really beyond everyday use case
2022-01-08 21:43:32 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4) (Client Quit)
2022-01-08 21:43:47 +0100xff0x(~xff0x@2001:1a81:5298:9f00:c8df:ae8c:ee9b:1cca) (Ping timeout: 268 seconds)
2022-01-08 21:43:50 +0100 <c_wraith> and there are things like type families that will look like nothing new in a type signature, but actually are very different.
2022-01-08 21:44:13 +0100 <c_wraith> I kind of wish they had a different syntax, but it's far from clear what other syntax was available
2022-01-08 21:44:19 +0100xff0x(~xff0x@2001:1a81:5298:9f00:374f:4390:4780:3d6)
2022-01-08 21:44:35 +0100vglfr(~vglfr@88.155.96.35) (Read error: Connection reset by peer)
2022-01-08 21:44:36 +0100 <c_wraith> especially with the ability to hide them behind a type alias
2022-01-08 21:45:29 +0100vglfr(~vglfr@88.155.96.35)
2022-01-08 21:46:02 +0100 <[itchyjunk]> oh a~b means there is a type equivalence ? interesting!
2022-01-08 21:46:10 +0100 <[itchyjunk]> is this the precursor to HoTT stuff?
2022-01-08 21:46:24 +0100 <c_wraith> No, it's mostly a result of adding GADTs to the language
2022-01-08 21:46:38 +0100 <[itchyjunk]> hmm
2022-01-08 21:46:43 +0100 <c_wraith> when you pattern match on a GADT constructor, you can add evidence to the current context that two types are equivalent
2022-01-08 21:46:57 +0100 <c_wraith> the ~ syntax was added as a way to express that independently
2022-01-08 21:47:04 +0100 <[itchyjunk]> algebriac datatypes. haven't come across those yet
2022-01-08 21:47:41 +0100 <c_wraith> you've certainly come across algebraic datatypes. just not generalized ones. (all uses `data' to create a type create algebraic types)
2022-01-08 21:47:43 +0100 <geekosaur> you probably have, just announced. but GADTs (generalized algebraic datatypes) are a bit different
2022-01-08 21:48:54 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-08 21:49:00 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-08 21:49:01 +0100 <geekosaur> *unannounced
2022-01-08 21:49:08 +0100 <geekosaur> hm, how did I do that
2022-01-08 21:49:34 +0100 <c_wraith> I do it all the time. It's way too easy.
2022-01-08 21:52:13 +0100vglfr(~vglfr@88.155.96.35) (Read error: Connection reset by peer)
2022-01-08 21:52:31 +0100vglfr(~vglfr@88.155.96.35)
2022-01-08 21:55:42 +0100rond_(~rond_@2a01:115f:943:5e00:3fb6:23a4:a917:27c7) (Quit: Client closed)
2022-01-08 21:56:17 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-01-08 21:56:17 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-01-08 21:56:20 +0100allbery_bgeekosaur
2022-01-08 21:57:47 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2022-01-08 21:59:17 +0100 <Inst> EvanR: I took a preview of "type-level programming"
2022-01-08 21:59:47 +0100 <Inst> immediately starts talking about cardinality and stuff, I'm faintly familiar with cardinality from popular science interpretations of Cantor, but your type-level stuff is really "wild"
2022-01-08 22:00:32 +0100 <Inst> https://leanpub.com/thinking-with-types/
2022-01-08 22:01:15 +0100 <EvanR> cardinality is either the number of values a type has, infinite, or you just jumped the shark and went to set theory, which is down the hall and to the left
2022-01-08 22:02:20 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
2022-01-08 22:02:28 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection)
2022-01-08 22:02:58 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2022-01-08 22:04:03 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 22:04:12 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Client Quit)
2022-01-08 22:06:18 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 22:06:31 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Client Quit)
2022-01-08 22:07:00 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 22:07:56 +0100 <[itchyjunk]> lol
2022-01-08 22:14:01 +0100Garbanzo(~Garbanzo@2602:304:6eac:dc10::46)
2022-01-08 22:14:33 +0100DNH(~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4)
2022-01-08 22:14:49 +0100ouestbillie(~gallup@192-222-138-215.qc.cable.ebox.net)
2022-01-08 22:14:49 +0100aouestbillie(~gallup@192-222-138-215.qc.cable.ebox.net)
2022-01-08 22:17:05 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
2022-01-08 22:22:29 +0100zebrag(~chris@user/zebrag)
2022-01-08 22:24:12 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
2022-01-08 22:30:36 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Read error: Connection reset by peer)
2022-01-08 22:32:37 +0100sagax(~sagax_nb@user/sagax)
2022-01-08 22:32:49 +0100emad(~emad@156.214.64.147) (Quit: Leaving)
2022-01-08 22:33:51 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2022-01-08 22:35:43 +0100Guest3(~Guest3@88.220.154.34)
2022-01-08 22:35:59 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-01-08 22:38:57 +0100emf(~emf@2620:10d:c090:400::5:9fd9) (Ping timeout: 240 seconds)
2022-01-08 22:43:29 +0100anderson(~ande@user/anderson) (Ping timeout: 252 seconds)
2022-01-08 22:43:36 +0100shapr(~user@2601:7c0:c202:5190:6f6c:93b7:78e9:4fee)
2022-01-08 22:44:57 +0100anderson(~ande@user/anderson)
2022-01-08 22:46:19 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-01-08 22:49:37 +0100ncopa3(~ncopa@gbr2-dev1.alpinelinux.org) (Ping timeout: 250 seconds)
2022-01-08 22:49:56 +0100ncopa3(~ncopa@gbr2-dev1.alpinelinux.org)
2022-01-08 22:53:23 +0100haskl(~haskl@user/haskl) (Ping timeout: 252 seconds)
2022-01-08 22:53:42 +0100haskl(~haskl@user/haskl)
2022-01-08 22:55:51 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-08 22:56:33 +0100nshepperd(~nshepperd@li364-218.members.linode.com) (Ping timeout: 250 seconds)
2022-01-08 22:56:36 +0100Square(~a@user/square) (Ping timeout: 245 seconds)
2022-01-08 22:56:52 +0100nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
2022-01-08 22:57:14 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com)
2022-01-08 22:57:30 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: leaving)
2022-01-08 22:57:40 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-01-08 22:59:27 +0100Square(~a@user/square)
2022-01-08 23:00:16 +0100jgeerds(~jgeerds@55d4bbed.access.ecotel.net)
2022-01-08 23:01:38 +0100dminuoso(~dminuoso@user/dminuoso) (Ping timeout: 252 seconds)
2022-01-08 23:02:21 +0100acidjnk_new3(~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de)
2022-01-08 23:02:21 +0100acidjnk(~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de)
2022-01-08 23:03:25 +0100dminuoso(~dminuoso@user/dminuoso)
2022-01-08 23:05:39 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-01-08 23:06:29 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection)
2022-01-08 23:06:48 +0100roboguy(~roboguy@user/roboguy) ()
2022-01-08 23:09:04 +0100 <little_mac> cause theres an ai that can code does that mean someone can make a robot that can improve its self
2022-01-08 23:09:07 +0100 <little_mac> oh no
2022-01-08 23:09:40 +0100 <little_mac> a robot sleeping at night would be just its cpu re-compiling all its code and imporving
2022-01-08 23:12:46 +0100zer0bitz_(~zer0bitz@196.244.192.61) (Read error: Connection reset by peer)
2022-01-08 23:13:13 +0100 <EvanR> riddle me this
2022-01-08 23:13:26 +0100 <EvanR> :t head
2022-01-08 23:13:27 +0100 <lambdabot> [a] -> a
2022-01-08 23:13:58 +0100 <EvanR> well, imagine we're talking about Foldable. And you want to implement a 'safe head' using a fold.
2022-01-08 23:14:15 +0100 <EvanR> by returning a Maybe.
2022-01-08 23:14:35 +0100 <EvanR> how to do this without wrapping and unwrapping maybes
2022-01-08 23:14:39 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-01-08 23:14:47 +0100 <EvanR> wait, foldr
2022-01-08 23:15:19 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-08 23:15:47 +0100 <EvanR> duh
2022-01-08 23:16:02 +0100 <geekosaur> yeh, I didn't see the problem
2022-01-08 23:18:04 +0100 <EvanR> I should have asked this about getting a maybe minimum
2022-01-08 23:18:26 +0100 <EvanR> in which case you gotta traverse through all the values
2022-01-08 23:23:19 +0100zincy(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-08 23:24:24 +0100zincy(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-08 23:26:02 +0100dsrt^(~dsrt@wsip-98-188-246-242.mc.at.cox.net)
2022-01-08 23:26:56 +0100 <geekosaur> conceivably the unwraps/rewraps get optimized if ghc is smart enough to fuse the whole thing
2022-01-08 23:27:30 +0100 <geekosaur> hm, guess not since it'll sometimes be Nothing and sometimes Just. feh
2022-01-08 23:28:49 +0100zincy(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-08 23:31:28 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Ping timeout: 256 seconds)
2022-01-08 23:31:33 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
2022-01-08 23:32:33 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-01-08 23:32:54 +0100 <Rembane> Will catMaybes make it faster?
2022-01-08 23:33:27 +0100 <geekosaur> no?
2022-01-08 23:33:57 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 240 seconds)
2022-01-08 23:34:02 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-08 23:34:21 +0100 <geekosaur> hm, actually if there is any value in the list then only the first time is it Nothing. this might fuse after all
2022-01-08 23:35:44 +0100 <geekosaur> and then "wrapping"/"unwrapping" is just writing/reading the correct offset
2022-01-08 23:36:51 +0100 <geekosaur> which will be fixed because it's fused
2022-01-08 23:37:27 +0100 <geekosaur> not sure ghc is smart enough to unroll the list once to get something fusible though
2022-01-08 23:37:28 +0100 <EvanR> that... sounds slick... if it works
2022-01-08 23:38:19 +0100 <geekosaur> that might be a question for #ghc
2022-01-08 23:39:42 +0100 <geekosaur> hm, in fact it doesn't even need tounroll, just jump into the middle the first time through
2022-01-08 23:40:01 +0100 <geekosaur> bypass the unwrap and comparison and store the value
2022-01-08 23:41:01 +0100xmyst(~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2022-01-08 23:41:39 +0100zincy(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-08 23:47:17 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com)
2022-01-08 23:50:34 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-01-08 23:55:21 +0100Hayek1(~xxx@rrcs-173-196-3-254.west.biz.rr.com)
2022-01-08 23:55:25 +0100Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 240 seconds)
2022-01-08 23:55:58 +0100Hayek(~xxx@rrcs-173-196-3-254.west.biz.rr.com) (Read error: Connection reset by peer)
2022-01-08 23:56:24 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-01-08 23:57:50 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-01-08 23:59:37 +0100shapr(~user@2601:7c0:c202:5190:6f6c:93b7:78e9:4fee) (Remote host closed the connection)