Home liberachat/#haskell: Logs Calendar

Logs on 2021-07-13 (liberachat/#haskell)

00:00:11 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
00:01:17 <Axman6> hololeap: https://github.com/pcapriotti/optparse-applicative
00:02:39 <hololeap> Axman6: ha, I should have looked there first ... :)
00:03:12 vicfred joins (~vicfred@user/vicfred)
00:05:09 <AWizzArd> Looking for: (Traversable t) => t a -> Maybe a
00:05:51 <Axman6> (^? traverse) :P
00:05:59 <Axman6> :t (^? traverse)
00:06:00 <lambdabot> Traversable t => t a -> Maybe a
00:06:28 <glguy> :t foldr (\x _ -> Just x) Nothing
00:06:29 <lambdabot> Foldable t => t a -> Maybe a
00:06:36 <Raugh> hmm, neither fromString nor BS.pack are working for me
00:06:41 <Raugh> constructor not in scope
00:07:15 <Raugh> AWizzArd: are you using that exact syntax? for me its a type error
00:08:31 <geekosaur> looks to me like the Query data constructor might not be exported
00:08:42 <AWizzArd> What is your type error? In my code I have literally: (Query qry) where `qry` is coming from my DB from an earlier query.
00:09:22 <AWizzArd> geekosaur: I am doing import Database.PostgreSQL.Simple.Types ( Query (..) )
00:09:25 <geekosaur> which was a worry given the docs said it was a wrapped ByteString with a restricted API for type safety
00:09:56 <geekosaur> AWizzArd, that might well succeed importing nothing if the data constructor isn't exported
00:10:17 <AWizzArd> geekosaur: I can at least tell that my code runs/works.
00:10:31 <geekosaur> what version of postgresql-simple?
00:10:40 <Axman6> it's ecported in the latest release
00:10:45 <Axman6> exported*
00:11:12 <Raugh> how do i tell which version got pulled in by stack?
00:11:23 <AWizzArd> geekosaur: https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/src/Database.PostgreSQL.Simple.Types.html
00:11:33 <Raugh> Yeah I'm impoerting Query (..)
00:11:33 <AWizzArd> In there I see an export.
00:11:48 <AWizzArd> Raugh: can you please paste the type error that you see?
00:11:55 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
00:12:13 <Raugh> 0.6.4
00:12:14 <geekosaur> yeh, I just checked that myself
00:12:22 <geekosaur> so it's exported
00:12:35 <AWizzArd> newtype Query = Query { fromQuery :: ByteString } deriving (Eq, Ord, Typeable)} deriving (Eq, Ord, Typeable)
00:12:41 × yaroot quits (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
00:13:01 <AWizzArd> Raugh: if you import Query (..) and pass in a ByteString then it will work.
00:13:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
00:13:17 <Raugh> ok its imported now i'm on to bytesting errors i should be able to figure these out
00:13:30 yaroot joins (~yaroot@6.3.30.125.dy.iij4u.or.jp)
00:13:54 <Raugh> BS.pack is expecting a Word8 not [Char] going to the docs
00:13:59 <AWizzArd> Raugh: from what module do you try to import ByteString? The PG lib is doing it like this: import Data.ByteString (ByteString)
00:14:11 <AWizzArd> I keep forgetting if this is strict or lazy.
00:14:28 <Raugh> import qualified Data.ByteString as BS (pack)
00:14:30 <geekosaur> Raugh, you should probably use what I pasted originally, which deals with UTF8
00:14:58 <geekosaur> there's an ugly hack Data.ByteString.Char8 but that will fail if there's any Unicode involved
00:15:22 <geekosaur> it pack will appear to work but silently produce garbage
00:15:25 <geekosaur> *its
00:15:32 <AWizzArd> Raugh: how do you read from your file? Are you using something like https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/Data-ByteString.html#v:readFile
00:15:56 × mikolaj__ quits (~mikon@duch.mimuw.edu.pl) (Ping timeout: 265 seconds)
00:16:06 <Raugh> geekosaur: I couldn't parse what you posted, should I be using Data.String fromString?
00:16:48 <Raugh> I'm using a derpy yaml config of all things, maybe its time to go back to the books on this one.
00:17:05 <geekosaur> https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/src/Database.PostgreSQL.Simple.Types.html#line-90 which uses stringUtf8 and fromString
00:17:34 mikolaj joins (~mikon@duch.mimuw.edu.pl)
00:17:40 <geekosaur> alternately read the ByteString as a ByteString and just wrap it in Query
00:18:03 × chomwitt quits (~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
00:18:44 <AWizzArd> Raugh: yeah, what geekosaur just wrote sounds good. Can you possibly use a `readFile` function that will actually give you directly a BS?
00:19:20 × Danishman quits (~Allan@2-104-144-110-cable.dk.customer.tdc.net) (Quit: Leaving)
00:19:54 <AWizzArd> glguy: ah, interesting foldr!
00:20:32 mikail_ joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
00:20:36 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
00:20:49 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
00:22:08 <Raugh> geekosaur: oh interesting, i'll try it that uses some parts of postgresql.simple as well
00:22:17 × trufas quits (~trufas@177.240.218.218) (Ping timeout: 252 seconds)
00:22:50 trufas joins (~trufas@177.240.218.218)
00:25:08 × mikail_ quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 256 seconds)
00:27:23 warnz joins (~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
00:28:07 × Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa)
00:30:06 dajoer joins (~david@user/gvx)
00:31:56 × warnz quits (~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Ping timeout: 256 seconds)
00:31:57 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
00:32:50 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
00:34:25 <Raugh> lol, ok copied the same composition of funcions in as a helper but now for some reason its injecting table names in my sql wrong its adding quotes around them I must be using the wrong type. I'm using Only String as the table name
00:35:31 <c_wraith> most parameterized query libraries don't let you parameterize the name of the table
00:38:04 tabemann_ is now known as tabemann
00:38:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:39:10 mikail_ joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
00:39:59 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
00:41:00 <Raugh> ok, i think i'm starting to be able to walk here. Theres an Identifier in types i can use to tell it to treat it as a table name
00:41:34 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 256 seconds)
00:42:40 retro_ joins (~retro@90.218.175.34)
00:46:49 × retroid_ quits (~retro@90.218.175.34) (Ping timeout: 268 seconds)
00:47:12 <Raugh> AWizzArd: geekosaur: thanks!
00:49:48 favonia joins (~favonia@user/favonia)
00:52:08 warnz joins (~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
00:52:48 × mikail_ quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 255 seconds)
00:56:45 × codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
00:56:51 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 255 seconds)
00:57:01 codedmart joins (~codedmart@li335-49.members.linode.com)
01:08:18 × warnz quits (~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Remote host closed the connection)
01:12:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
01:17:49 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:20:07 notzmv joins (~zmv@user/notzmv)
01:20:09 × Jonno_FT1 quits (~come@api.carswap.me) (Quit: Reconnecting)
01:20:15 Jonno_FTW joins (~come@api.carswap.me)
01:21:02 × smichel17 quits (~smichel17@2601:193:8300:4b9::600) (Quit: smichel17)
01:22:04 × Jonno_FTW quits (~come@api.carswap.me) (Changing host)
01:22:04 Jonno_FTW joins (~come@user/jonno-ftw/x-0835346)
01:29:25 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
01:29:48 × xff0x quits (~xff0x@2001:1a81:52d6:3f00:1a58:61d8:8aa3:1417) (Ping timeout: 272 seconds)
01:29:59 <hololeap> Axman6: that answered my question about how to get the --help option, but I would like to get some more fine-grained control over options that I don't think is going to be convenient using the Applicative and Alternative interface,
01:30:42 chris-the-slurpa joins (~chris@81.96.113.213)
01:30:50 Vajb joins (~Vajb@85-76-37-111-nat.elisa-mobile.fi)
01:31:02 <hololeap> I would like to do further processing of the arguments that were passed in, and have the option to exit and print the help outside the execParser function
01:31:25 xff0x joins (~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67)
01:31:46 <hololeap> so having something like `printHelp :: ParserInfo a -> IO ()` would be very useful
01:34:03 <hololeap> for instance, I don't want to allow a certain number to be less than 1, but I don't think it's possible to check this within the Parser since there is no Monad instance
01:37:01 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
01:38:33 × Vajb quits (~Vajb@85-76-37-111-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
01:40:21 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
01:48:20 × alx741 quits (~alx741@186.178.108.22) (Quit: alx741)
01:51:20 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
01:55:14 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
01:55:37 smtnet3 joins (~asdfasdfa@202.36.244.25)
01:56:10 pavonia joins (~user@user/siracusa)
01:56:12 <dmj`> hololeap: optparse-applicative supports all of that
02:03:54 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
02:06:13 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
02:06:20 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:08:13 hendursaga joins (~weechat@user/hendursaga)
02:09:48 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:11:40 wei2912 joins (~wei2912@112.199.250.21)
02:15:21 × wei2912 quits (~wei2912@112.199.250.21) (Read error: Connection reset by peer)
02:16:10 wei2912 joins (~wei2912@112.199.250.21)
02:16:34 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
02:19:36 × td_ quits (~td@94.134.91.208) (Ping timeout: 272 seconds)
02:19:42 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:19:42 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (molybdenum.libera.chat (Nickname regained by services)))
02:19:42 finn_elija is now known as FinnElija
02:21:03 td_ joins (~td@94.134.91.7)
02:21:18 × derelict quits (~derelict@user/derelict) (Ping timeout: 256 seconds)
02:21:34 koz- joins (~koz@121.99.240.58)
02:22:05 × koz quits (~koz@2404:4408:4309:8800:f7ec:14dd:f995:fa8c) (Ping timeout: 255 seconds)
02:22:31 koz- is now known as koz
02:25:03 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
02:30:21 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:35:32 × zmt01 quits (~zmt00@user/zmt00) (Quit: Gone.)
02:38:48 zmt00 joins (~zmt00@user/zmt00)
02:42:52 × phma quits (phma@2001:5b0:211b:d008:91ae:cdcd:6362:add2) (Read error: Connection reset by peer)
02:47:58 phma joins (~phma@host-67-44-208-254.hnremote.net)
02:48:27 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
02:54:36 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 276 seconds)
02:57:33 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 268 seconds)
02:58:35 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
03:00:05 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
03:00:13 <hololeap> dmj`: how do you just print out the help as an IO operation?
03:00:33 eggplant_ joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
03:02:34 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
03:02:51 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:6d00:2ab2:6519:235b) (Ping timeout: 255 seconds)
03:05:09 <dmj`> hololeap: you can do it all purely before you print anything, https://hackage.haskell.org/package/optparse-applicative-0.16.1.0/docs/Options-Applicative.html#v:execParserPure
03:06:41 hook54321_ is now known as hook54321
03:08:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:10:40 <dmj`> hololeap: running a failing parser purely will get you the help object
03:12:22 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
03:12:23 <hololeap> dmj`: that makes sense, but I have an Int that represents string length which needs to be >=1 ... as far as I can tell, there would be no way to check this and have the parser fail until after the parser was run, even running it purely
03:14:39 <hololeap> even if that were possible, there are some other fine-grained things I would like to do, such as ensuring at least one of a set of options is passed, or none at all
03:15:26 <hololeap> it can be done with the Alternative instance, but it just makes more sense to have a second level of argument validation after the Parser is run, and it would be nice to have the option to print the help screen there
03:15:54 <glguy> hololeap: an flag taking an option would use something like: option :: ReadM a -> Mod OptionFields a -> Parser a
03:15:56 <dmj`> hololeap: you can validate the arguments before you run the parser, then just run your parser with prefShowHelpOnEmpty = True
03:15:56 thiross joins (~user@173.242.113.143.16clouds.com)
03:16:08 <glguy> ReadM is a Monad, so you can do arbitrary dependencies there (like checking for >= 1)
03:16:20 <glguy> hololeap: is that what you're asking about?
03:16:50 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 256 seconds)
03:17:58 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
03:21:00 <hololeap> glguy: that was one of my concerns, and you make a good point about ReadM being a Monad. I will remember that
03:22:36 <hololeap> but in general, I want to do some validation of arguments that seem like they would be much easier to do _after_ running the Parser, and I would like to have access to the help text in case I want to print that out
03:23:12 <hololeap> I could just move on and print out an error without the help text
03:24:40 × phma quits (~phma@host-67-44-208-254.hnremote.net) (Read error: Connection reset by peer)
03:25:07 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:25:48 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
03:34:11 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
03:37:28 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
03:38:56 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
03:39:49 phma joins (phma@2001:5b0:211f:8638:196:5581:d6d8:1f7e)
03:42:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
03:52:05 × thiross quits (~user@173.242.113.143.16clouds.com) (Remote host closed the connection)
03:52:22 thiross joins (~user@173.242.113.143.16clouds.com)
04:02:12 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
04:02:25 juhp joins (~juhp@128.106.188.66)
04:04:57 × thiross quits (~user@173.242.113.143.16clouds.com) (Ping timeout: 255 seconds)
04:11:56 nick80 joins (~nick@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
04:12:13 <nick80> hello
04:13:37 <glguy> hi
04:19:48 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
04:20:10 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
04:20:42 prite joins (~pritam@user/pritambaral)
04:29:47 × hatz_ quits (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) (Quit: hatz_)
04:31:29 hatz_ joins (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349)
04:37:16 × bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 272 seconds)
04:42:24 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 256 seconds)
04:44:59 × nick80 quits (~nick@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Connection closed)
04:48:46 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:51:00 × sheepduck quits (~sheepduck@user/sheepduck) (Remote host closed the connection)
04:59:35 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0)
05:06:13 berberman_ joins (~berberman@user/berberman)
05:06:36 × berberman quits (~berberman@user/berberman) (Ping timeout: 255 seconds)
05:08:18 qbt joins (~edun@user/edun)
05:09:03 warnz joins (~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452)
05:11:21 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
05:12:44 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
05:12:44 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Read error: Connection reset by peer)
05:12:53 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
05:13:17 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
05:14:00 × warnz quits (~warnz@2600:1700:77c0:5610:acd9:fdbc:f96e:2452) (Ping timeout: 272 seconds)
05:15:09 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
05:21:57 whoschen joins (~user@58.210.85.58)
05:28:00 favonia joins (~favonia@user/favonia)
05:29:28 gehmehgeh joins (~user@user/gehmehgeh)
05:30:26 × Guest25 quits (~Guest25@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
05:34:06 jneira joins (~jneira@212.8.115.226)
05:39:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:53:24 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:03:19 fef joins (~thedawn@user/thedawn)
06:04:37 whoschen parts (~user@58.210.85.58) (ERC (IRC client for Emacs 27.1))
06:07:48 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 255 seconds)
06:14:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
06:16:10 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
06:20:51 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
06:20:55 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
06:21:24 × Raugh quits (~mike@174.127.249.180) (Remote host closed the connection)
06:26:12 beka joins (~beka@104.193.170-244.PUBLIC.monkeybrains.net)
06:37:26 × favonia quits (~favonia@user/favonia) (Ping timeout: 256 seconds)
06:41:56 fendor joins (~fendor@178.115.59.187.wireless.dyn.drei.com)
06:42:18 favonia joins (~favonia@user/favonia)
06:45:01 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:46:30 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 256 seconds)
06:48:02 a6a45081-2b83 joins (~aditya@223.226.229.57)
06:53:22 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
06:59:03 chele joins (~chele@user/chele)
07:00:31 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
07:01:00 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
07:06:09 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 276 seconds)
07:07:20 wwalker is now known as wwalker_comatose
07:09:20 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
07:10:03 × beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 276 seconds)
07:11:52 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
07:12:20 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
07:15:36 acidjnk joins (~acidjnk@p200300d0c72b95096d4cdcac61b6b349.dip0.t-ipconnect.de)
07:16:33 × jlamothe quits (~jlamothe@198.251.60.157) (Ping timeout: 268 seconds)
07:17:47 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
07:18:00 jlamothe joins (~jlamothe@198.251.60.157)
07:20:18 × jespada quits (~jespada@90.254.247.46) (Ping timeout: 265 seconds)
07:21:24 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:22:31 jespada joins (~jespada@90.254.247.46)
07:22:57 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
07:24:45 × trufas quits (~trufas@177.240.218.218) (Ping timeout: 255 seconds)
07:27:03 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
07:28:42 trufas joins (~trufas@177.240.218.218)
07:30:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:31:16 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 256 seconds)
07:32:06 Pickchea joins (~private@user/pickchea)
07:33:51 × eggplant_ quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:34:54 MQ-17J joins (~MQ-17J@8.21.10.15)
07:41:51 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
07:41:53 × MQ-17J quits (~MQ-17J@8.21.10.15) (Read error: Connection reset by peer)
07:42:04 MQ-17J joins (~MQ-17J@8.21.10.15)
07:42:16 favonia joins (~favonia@user/favonia)
07:42:44 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
07:45:37 × euandreh quits (~euandreh@2804:14c:33:9fe5:3720:61ec:ee32:2ddc) (Ping timeout: 246 seconds)
07:46:49 euandreh joins (~euandreh@2804:14c:33:9fe5:50a8:9802:856c:54ce)
07:52:51 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
07:53:20 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
07:57:09 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
07:57:34 favonia joins (~favonia@user/favonia)
07:57:35 ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
07:58:36 × ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Remote host closed the connection)
07:59:35 ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
08:01:52 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
08:02:05 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
08:06:42 hendursa1 joins (~weechat@user/hendursaga)
08:08:55 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:10:19 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
08:10:30 × jlamothe quits (~jlamothe@198.251.60.157) (Ping timeout: 276 seconds)
08:12:59 AlexZenon_2 joins (~alzenon@94.233.240.7)
08:13:31 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
08:13:40 × AlexZenon quits (~alzenon@94.233.240.7) (Read error: Connection reset by peer)
08:16:00 jlamothe joins (~jlamothe@198.251.60.157)
08:17:32 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
08:17:46 juhp joins (~juhp@128.106.188.66)
08:18:56 × favonia quits (~favonia@user/favonia) (Ping timeout: 272 seconds)
08:19:21 favonia joins (~favonia@user/favonia)
08:24:23 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:25:09 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
08:25:36 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:26:24 anonymous-haskel joins (~anonymous@78.155.54.115)
08:26:58 × anonymous-haskel quits (~anonymous@78.155.54.115) (Client Quit)
08:27:27 haskell-anon joins (~haskell-a@78.155.54.115)
08:27:48 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
08:27:56 Lord_of_Life_ is now known as Lord_of_Life
08:28:30 × favonia quits (~favonia@user/favonia) (Ping timeout: 256 seconds)
08:29:21 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
08:33:18 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
08:34:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
08:35:04 michalz joins (~michalz@185.246.204.45)
08:44:24 × ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
08:45:27 × Xnuk quits (~xnuk@45.76.202.58) (Quit: ZNC - https://znc.in)
08:45:44 Xnuk joins (~xnuk@vultr.xnu.kr)
08:45:56 zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
08:46:08 tom__ joins (~tom@2a00:23c8:9700:8001:a918:fa2c:4713:fcbd)
08:46:45 × Katarushisu quits (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Ping timeout: 258 seconds)
08:48:27 × azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 255 seconds)
08:48:39 × a6a45081-2b83 quits (~aditya@223.226.229.57) (Remote host closed the connection)
08:49:39 azeem joins (~azeem@176.201.21.158)
08:50:01 × zincy__ quits (~tom@2a00:23c8:9700:8001:6c68:60ee:e6e9:8a4c) (Ping timeout: 246 seconds)
08:50:04 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
08:51:05 zcombinator joins (~zcombinat@host-80-104-237-159.retail.telecomitalia.it)
08:51:48 zaquest joins (~notzaques@5.128.210.178)
08:52:15 geekosaur joins (~geekosaur@xmonad/geekosaur)
08:52:24 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:52:40 × haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
08:52:52 haykam1 joins (~haykam@static.100.2.21.65.clients.your-server.de)
08:56:10 hatz_ parts (~user@2a05:f480:1400:f44:5400:3ff:fe6d:f349) ()
08:57:38 Katarushisu joins (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
09:02:20 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
09:03:21 × GIANTWORLDKEEPER quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Read error: Connection reset by peer)
09:09:36 × azeem quits (~azeem@176.201.21.158) (Ping timeout: 255 seconds)
09:11:25 azeem joins (~azeem@176.201.21.158)
09:13:41 GIANTWORLDKEEPER joins (~pjetcetal@128-71-13-182.broadband.corbina.ru)
09:16:34 × azeem quits (~azeem@176.201.21.158) (Ping timeout: 272 seconds)
09:17:35 azeem joins (~azeem@176.201.21.158)
09:24:02 junkicide joins (~user@2a01:e0a:195:20c0:3def:71a:a949:5adb)
09:25:23 <junkicide> I have the function length . lines <$> readFile "countLines.hs" but it gives an error when I try to fmap it over a list of filenames and I can't understand why
09:25:46 <Rembane> junkicide: What's the error and what's your code?
09:26:15 × azeem quits (~azeem@176.201.21.158) (Ping timeout: 255 seconds)
09:26:30 <junkicide> countLines :: String -> String -> IO ()
09:26:30 <junkicide> countLines str ext = do files <- getDirectoryContents str
09:26:30 <junkicide> let filtered = [do y <- readFile x | x <- files, ext == takeWhile (/='.') (reverse x)]
09:26:30 <junkicide> putStrLn $ show $ zip files $ fmap ( length . lines) filtered
09:27:20 <junkicide> hang on, this isn't the right one
09:28:20 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
09:28:28 azeem joins (~azeem@176.201.21.158)
09:28:44 GIANTWORLDKEEPER is now known as pj_
09:29:22 <Rembane> junkicide: Put it in a pastebin instead, like for instance: https://paste.tomsmeding.com/
09:30:22 <junkicide> ok that's useful, thanks
09:31:05 <Rembane> No worries. :)
09:31:46 × shutdown_-h_now quits (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 265 seconds)
09:33:35 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
09:33:54 <junkicide> here it is
09:33:55 <junkicide> https://paste.tomsmeding.com/vaSgxQD6
09:34:01 <smtnet3> seems to work on my end
09:34:03 agua joins (~agua@2804:18:49:ccb3:1:0:1397:e350)
09:34:35 <smtnet3> (length . lines) <$> readFile "Chapter6.hs"
09:35:11 <junkicide> yeah the problem comes when I try to fmap it over a list of filenames
09:36:12 <Rembane> junkicide: You need to use one fmap to do things on IO, and then another fmap to do things on the contents of list.
09:36:22 <smtnet3> try fmap . fmap
09:36:32 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
09:36:53 <smtnet3> :t (fmap . fmap)
09:36:54 <lambdabot> (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
09:36:57 hyiltiz joins (~quassel@31.220.5.250)
09:37:30 × azeem quits (~azeem@176.201.21.158) (Ping timeout: 255 seconds)
09:37:41 shutdown_-h_now joins (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
09:38:10 <junkicide> oh, fmap . fmap doesn't seem to work right away but I see where the problem is
09:38:22 <junkicide> thanks smtnet3 and Rembane
09:38:58 <smtnet3> junkicide, n/w
09:41:25 azeem joins (~azeem@176.201.7.106)
09:42:45 pesada joins (~agua@2804:14c:8793:8e2f:98f1:8c28:1a2b:634a)
09:44:10 Core8606 joins (~agua@2804:18:49:ccb3:1:0:1397:e350)
09:44:24 × agua quits (~agua@2804:18:49:ccb3:1:0:1397:e350) (Read error: Connection reset by peer)
09:44:44 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
09:46:57 × pesada quits (~agua@2804:14c:8793:8e2f:98f1:8c28:1a2b:634a) (Ping timeout: 255 seconds)
09:47:06 fef joins (~thedawn@user/thedawn)
09:47:28 × fef quits (~thedawn@user/thedawn) (Client Quit)
09:50:02 <haskell-anon> how do you make lsp's "jump to definition" work with dependencies
09:50:32 jippiedoe joins (~david@145.107.129.65)
09:52:53 lep- joins (~lep@94.31.97.183)
09:53:16 × lep quits (~lep@94.31.86.183) (Read error: Connection reset by peer)
09:54:00 lep joins (~lep@94.31.86.183)
09:56:22 <smtnet3> w/ emacs, haskell-anon
09:56:24 <smtnet3> *?
09:56:35 <haskell-anon> yes, with emacs
09:56:52 <Rembane> junkicide: np!
09:57:05 × qbt quits (~edun@user/edun) (Quit: WeeChat 3.2)
09:57:42 <smtnet3> unrelated but why is this the case with multiple shadowing bindings... let seems to take precedence over where https://pastebin.com/XBgTHEvw
09:57:44 × lep- quits (~lep@94.31.97.183) (Ping timeout: 272 seconds)
09:58:20 <smtnet3> haskell-anon, there's an lsp discord if you don't find your answer here
09:58:47 <haskell-anon> ok
09:58:47 <smtnet3> lsp is a pain to setup if you don't know the whole shebang of it all
09:59:23 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
09:59:49 <tomsmeding> smtnet3: the where-block is attached to the whole function right-hand side here
10:00:24 <tomsmeding> haskell-anon: there is also #haskell-language-server on this irc network :)
10:00:53 fef joins (~thedawn@user/thedawn)
10:02:52 __monty__ joins (~toonn@user/toonn)
10:10:32 Atum_ joins (IRC@user/atum/x-2392232)
10:11:03 <smtnet3> ah thanks, makes sense
10:11:10 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Quit: -)
10:14:04 Kugge joins (~Kugge@2a01:cb15:81e5:f00:cdab:bdca:57aa:ef6f)
10:15:44 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:18:26 agua joins (~agua@2804:14c:8793:8e2f:5173:dc4e:eaad:a0b8)
10:20:21 chexum joins (~chexum@gateway/tor-sasl/chexum)
10:21:51 × Kugge quits (~Kugge@2a01:cb15:81e5:f00:cdab:bdca:57aa:ef6f) (Quit: Client closed)
10:23:06 × Core8606 quits (~agua@2804:18:49:ccb3:1:0:1397:e350) (Ping timeout: 276 seconds)
10:24:09 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Client Quit)
10:24:23 <fef> feel Recursion is too hard.
10:25:11 <fef> and finding recurrence relation the most hardest part
10:26:06 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:30:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:30:49 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
10:31:00 kadobanana joins (~mud@user/kadoban)
10:31:06 pesada joins (~agua@2804:18:49:ccb3:1:0:1397:e350)
10:31:56 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
10:34:18 × agua quits (~agua@2804:14c:8793:8e2f:5173:dc4e:eaad:a0b8) (Ping timeout: 256 seconds)
10:34:43 × pj_ quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT)
10:35:13 GIANTWORLDKEEPER joins (~pjetcetal@128-71-13-182.broadband.corbina.ru)
10:35:54 <smtnet3> if you're completely new to recursion the first time it can feel a little weird
10:36:45 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds)
10:36:51 <smtnet3> come back to it again after a little while again. There's also some great resources on youtube that introduce the concept very well
10:37:38 × dre quits (~dre@2001:8003:c932:c301:44a6:1427:4d7d:b99a) (Quit: Leaving)
10:37:55 × tlax quits (tlax@kapsi.fi) (Ping timeout: 258 seconds)
10:38:12 × ent quits (entgod@kapsi.fi) (Ping timeout: 268 seconds)
10:41:08 ent joins (entgod@kapsi.fi)
10:41:08 tlax joins (tlax@kapsi.fi)
10:42:57 <fef> smtnet3, not new
10:43:44 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
10:46:06 AlexZenon_2 is now known as AlexZenon
10:46:30 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 272 seconds)
10:55:21 × azeem quits (~azeem@176.201.7.106) (Ping timeout: 255 seconds)
10:55:41 azeem joins (~azeem@176.201.7.106)
10:59:30 × ent quits (entgod@kapsi.fi) (Ping timeout: 276 seconds)
11:01:44 ent joins (entgod@kapsi.fi)
11:02:33 oxide joins (~lambda@user/oxide)
11:04:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:05:28 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
11:05:31 × MorrowM quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
11:05:39 × haskell-anon quits (~haskell-a@78.155.54.115) (Quit: Client closed)
11:05:45 cheater joins (~Username@user/cheater)
11:06:10 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
11:07:06 AlexNoo_ joins (~AlexNoo@178.34.162.3)
11:09:53 × AlexZenon quits (~alzenon@94.233.240.7) (Ping timeout: 265 seconds)
11:09:53 × Alex_test quits (~al_test@94.233.240.7) (Ping timeout: 265 seconds)
11:10:51 × AlexNoo quits (~AlexNoo@94.233.240.7) (Ping timeout: 265 seconds)
11:11:44 × MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
11:12:22 MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon)
11:13:44 × Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds)
11:14:35 Alex_test joins (~al_test@178.34.162.3)
11:14:45 AlexZenon joins (~alzenon@178.34.162.3)
11:20:16 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:23:30 niemand joins (~niemand@p2e52f80a.dip0.t-ipconnect.de)
11:29:53 smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
11:30:29 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
11:30:40 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
11:31:16 jneira joins (~jneira@212.8.115.226)
11:31:48 × pbrisbin quits (~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 255 seconds)
11:31:59 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
11:32:04 × Teacup quits (~teacup@user/teacup) (Ping timeout: 246 seconds)
11:32:06 × azeem quits (~azeem@176.201.7.106) (Ping timeout: 256 seconds)
11:33:16 azeem joins (~azeem@176.201.7.106)
11:33:36 Teacup joins (~teacup@user/teacup)
11:33:57 × jippiedoe quits (~david@145.107.129.65) (Ping timeout: 276 seconds)
11:36:35 Pickchea joins (~private@user/pickchea)
11:37:22 jippiedoe joins (~david@145.107.129.65)
11:37:35 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
11:38:51 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
11:38:53 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
11:39:27 ukari joins (~ukari@user/ukari)
11:41:58 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
11:42:19 × junkicide quits (~user@2a01:e0a:195:20c0:3def:71a:a949:5adb) (Remote host closed the connection)
11:43:52 cheater1__ joins (~Username@user/cheater)
11:45:04 bontaq joins (~user@ool-18e47f8d.dyn.optonline.net)
11:46:02 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
11:46:05 cheater1__ is now known as cheater
11:48:30 AlexNoo_ is now known as AlexNoo
11:53:22 anandprabhu joins (~anandprab@94.202.243.198)
11:58:00 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
11:58:18 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
11:58:39 × azeem quits (~azeem@176.201.7.106) (Ping timeout: 276 seconds)
12:00:36 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 272 seconds)
12:00:38 azeem joins (~azeem@176.201.7.106)
12:09:30 × azeem quits (~azeem@176.201.7.106) (Ping timeout: 256 seconds)
12:10:36 azeem joins (~azeem@176.201.32.198)
12:11:24 × niemand quits (~niemand@p2e52f80a.dip0.t-ipconnect.de) (Quit: Connection closed)
12:12:52 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
12:13:06 juhp joins (~juhp@128.106.188.66)
12:17:49 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:f009:5606:b7ea:3eb0) (Quit: Leaving)
12:17:54 mikail_ joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
12:19:30 × azeem quits (~azeem@176.201.32.198) (Ping timeout: 255 seconds)
12:19:58 azeem joins (~azeem@176.201.32.198)
12:24:26 wolfshappen joins (~waff@irc.furworks.de)
12:27:31 favonia joins (~favonia@user/favonia)
12:28:20 × smarton quits (~smarton@gnu/webmaster/smarton) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
12:28:33 smarton joins (~smarton@gnu/webmaster/smarton)
12:29:12 × mikail_ quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 276 seconds)
12:31:09 × prite quits (~pritam@user/pritambaral) (Ping timeout: 276 seconds)
12:31:57 × wolfshappen quits (~waff@irc.furworks.de) (Quit: later)
12:32:06 pbrisbin joins (~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
12:32:22 wolfshappen joins (~waff@irc.furworks.de)
12:33:46 × azeem quits (~azeem@176.201.32.198) (Read error: Connection reset by peer)
12:34:24 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 276 seconds)
12:36:09 azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
12:38:36 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds)
12:39:28 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:42:35 hseg joins (~gesh@185.120.126.10)
12:43:19 <hseg> hi. for a bit of pretty-printing, would like to define a type ~ (String, a -> b) and give it a Category instance
12:43:29 <hseg> not sure how to spell the deriving via clause for this though
12:44:23 <hseg> like, if I were just deriving (* -> *) -> Constraint I could derive via (K1 String :*: T)
12:45:01 <hseg> but not sure how to make that product feed two arguments to the factors
12:46:34 lbseale joins (~lbseale@user/ep1ctetus)
12:47:10 <hseg> also, is there a way to derivevia a single-constructor data type via its obvious repacking into a tuple?
12:47:10 × azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Read error: Connection reset by peer)
12:47:31 azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
12:47:35 <hseg> eg data V3 a = V3 a a a deriving C via ((a,a,a) ?)
12:47:50 <Hecate> davean: o/ hi! Could you remind me how you deal with routing API calls in Happstack to a Servant/WAI server? :)
12:47:53 <hseg> .. oops, ? and ) transposed there
12:50:53 <hseg> ah nm, can get away with Endo String :*: Endo a in my usecase, no need for the full power of Category
12:51:09 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
12:53:08 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
12:53:37 cheater joins (~Username@user/cheater)
12:55:46 <hseg> hrm. is a bit painful though, would prefer a full category
12:57:48 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 276 seconds)
13:00:42 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
13:00:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:01:08 alx741 joins (~alx741@186.178.108.22)
13:03:10 roconnor joins (~roconnor@host-45-78-194-41.dyn.295.ca)
13:03:16 <roconnor> Module ‘Data.ByteString.Short’ does not export ‘reverse’. :(
13:04:10 qbt joins (~edun@user/edun)
13:04:42 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
13:05:36 ukari joins (~ukari@user/ukari)
13:06:00 thecoder joins (~mrrobot@static-47-206-93-60.tamp.fl.frontiernet.net)
13:07:40 agua joins (~agua@2804:18:46:bafa:1:0:1551:7319)
13:10:09 × pesada quits (~agua@2804:18:49:ccb3:1:0:1397:e350) (Ping timeout: 276 seconds)
13:12:58 × Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds)
13:15:31 zebrag joins (~chris@user/zebrag)
13:17:12 × anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving)
13:18:36 × hseg quits (~gesh@185.120.126.10) (Ping timeout: 276 seconds)
13:22:18 <maerwald> roconnor: yeah
13:22:32 <maerwald> roconnor: I've been creating my own prelude for it in another project
13:23:43 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:24:11 <maerwald> I'm not sure if that was a concious decision to leave it crippled
13:24:33 <maerwald> I mean, it's obvious that many operations require copying the entire bytestring
13:24:35 Pickchea joins (~private@user/pickchea)
13:25:57 hseg joins (~gesh@185.120.126.10)
13:26:11 <maerwald> https://github.com/hasufell/abstract-filepath/blob/master/lib/AbstractFilePath/ShortByteString.hs but I don't have 'reverse', lol
13:28:21 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
13:30:02 <davean> Hecate: https://hackage.haskell.org/package/happstack-server-7.7.1.1/docs/Happstack-Server-Internal-Monads.html You build the happstack Request from WAI's, you call runServerPartT and then you convert the response back. IIRC, its been a long, long while.
13:31:36 chris-the-slurpa joins (~chris@81.96.113.213)
13:32:00 × chris-the-slurpa quits (~chris@81.96.113.213) (Read error: Connection reset by peer)
13:32:12 chris-the-slurpa joins (~chris@81.96.113.213)
13:33:37 Sgeo joins (~Sgeo@user/sgeo)
13:34:37 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
13:34:37 dibblego joins (~dibblego@haskell/developer/dibblego)
13:35:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
13:38:25 <Hecate> davean: okay so it's really more about embedding Happstack in WAI and converting. :) Thank you!
13:38:32 <davean> yep
13:40:48 × jolly quits (~jolly@208.180.97.158) (Quit: Connection closed)
13:44:36 × cheater quits (~Username@user/cheater) (Ping timeout: 258 seconds)
13:45:00 cheater joins (~Username@user/cheater)
13:47:54 × favonia quits (~favonia@user/favonia) (Remote host closed the connection)
13:49:04 favonia joins (~favonia@user/favonia)
13:52:12 × hseg quits (~gesh@185.120.126.10) (Ping timeout: 255 seconds)
13:52:47 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
13:53:07 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:53:46 × acidjnk quits (~acidjnk@p200300d0c72b95096d4cdcac61b6b349.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
13:57:39 × zcombinator quits (~zcombinat@host-80-104-237-159.retail.telecomitalia.it) (Quit: WeeChat 3.2)
14:00:18 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
14:01:19 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
14:02:07 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
14:02:16 × michalz quits (~michalz@185.246.204.45) (Remote host closed the connection)
14:03:13 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
14:03:28 juhp joins (~juhp@128.106.188.66)
14:05:16 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:06:36 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 255 seconds)
14:07:22 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 256 seconds)
14:07:46 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
14:08:57 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:10:12 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
14:10:36 × shutdown_-h_now quits (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 276 seconds)
14:15:39 shutdown_-h_now joins (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
14:16:38 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
14:17:17 hendursaga joins (~weechat@user/hendursaga)
14:18:23 Atum__ joins (IRC@user/atum/x-2392232)
14:18:48 wwalker_comatose is now known as wwalker
14:20:03 stevenxl joins (~stevenlei@66.63.167.105)
14:20:22 × smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
14:21:02 smichel17 joins (~smichel17@2601:193:8300:4b9::600)
14:22:18 × Atum_ quits (IRC@user/atum/x-2392232) (Ping timeout: 276 seconds)
14:23:45 warnz joins (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
14:28:02 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
14:28:08 × infinisil quits (~infinisil@2001:470:69fc:105::ff8) (*.net *.split)
14:28:08 × vbeatrice[m] quits (~vbeatrice@2001:470:69fc:105::3ebf) (*.net *.split)
14:28:08 × jellz[m] quits (~jellzmatr@2001:470:69fc:105::2daa) (*.net *.split)
14:28:08 × adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (*.net *.split)
14:28:08 × unrooted quits (~unrooted@2001:470:69fc:105::a4a) (*.net *.split)
14:28:08 × fabfianda[m] quits (~fabfianda@2001:470:69fc:105::6db) (*.net *.split)
14:28:08 × peddie quits (~peddie@2001:470:69fc:105::25d) (*.net *.split)
14:28:08 × img quits (~img@user/img) (*.net *.split)
14:28:08 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (*.net *.split)
14:28:08 × sqrt2 quits (~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (*.net *.split)
14:28:08 × sshine quits (~simon@hubris.eta.solutions) (*.net *.split)
14:28:08 × synthmeat quits (~synthmeat@user/synthmeat) (*.net *.split)
14:28:08 × dminuoso quits (~dminuoso@user/dminuoso) (*.net *.split)
14:28:08 × dextaa quits (~DV@aftr-37-201-214-197.unity-media.net) (*.net *.split)
14:28:09 × welterde quits (welterde@thinkbase.srv.welterde.de) (*.net *.split)
14:28:09 × AWizzArd quits (~code@user/awizzard) (*.net *.split)
14:28:09 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (*.net *.split)
14:28:09 × oldmate quits (~spider@user/oldmate) (*.net *.split)
14:28:09 × jle` quits (~justin@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
14:28:09 × xlei quits (znc@pool-68-129-84-118.nycmny.fios.verizon.net) (*.net *.split)
14:28:09 × liskin quits (~liskin@xmonad/liskin) (*.net *.split)
14:28:09 × wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
14:28:09 × bastelfreak quits (~bastelfre@basteles-bastelknecht.bastelfreak.org) (*.net *.split)
14:28:09 × cocreature quits (~moritz@2a03:b0c0:3:d0::c8:f001) (*.net *.split)
14:28:13 AWizzArd_ joins (~code@gehrels.uberspace.de)
14:28:17 sqrt2_ joins (~ben@80-108-18-7.cable.dynamic.surfer.at)
14:28:18 sshine joins (~simon@hubris.eta.solutions)
14:28:28 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
14:28:29 oldmate joins (~spider@vps-951ce37a.vps.ovh.ca)
14:28:38 wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de)
14:28:38 liskin joins (~liskin@ackle.nomi.cz)
14:28:41 dextaa joins (~DV@aftr-37-201-214-197.unity-media.net)
14:28:42 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
14:28:43 jle` joins (~justin@cpe-23-240-75-236.socal.res.rr.com)
14:28:52 dminuoso joins (~dminuoso@static.88-198-218-68.clients.your-server.de)
14:28:56 bastelfreak joins (~bastelfre@basteles-bastelknecht.bastelfreak.org)
14:28:57 welterde joins (welterde@thinkbase.srv.welterde.de)
14:29:09 cocreature joins (~moritz@2a03:b0c0:3:d0::c8:f001)
14:29:14 synthmeat joins (~synthmeat@user/synthmeat)
14:29:49 × welterde quits (welterde@thinkbase.srv.welterde.de) (Client Quit)
14:29:57 welterde joins (welterde@thinkbase.srv.welterde.de)
14:31:06 × liskin quits (~liskin@ackle.nomi.cz) (Client Quit)
14:31:15 liskin joins (~liskin@ackle.nomi.cz)
14:32:41 × fendor quits (~fendor@178.115.59.187.wireless.dyn.drei.com) (Remote host closed the connection)
14:32:48 × liskin quits (~liskin@ackle.nomi.cz) (Changing host)
14:32:48 liskin joins (~liskin@xmonad/liskin)
14:33:49 fendor joins (~fendor@178.115.59.187.wireless.dyn.drei.com)
14:36:44 xlei joins (znc@pool-68-129-84-118.nycmny.fios.verizon.net)
14:36:51 img joins (~img@user/img)
14:37:35 × warnz quits (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Remote host closed the connection)
14:41:22 × Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds)
14:43:04 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:46:47 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:50:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:51:00 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
15:00:37 zinc is now known as zdleaf
15:00:37 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
15:05:43 <guibou> I'm wondering about "full lazyness", CAF and memoization function. If you have a 'memo' function, such as the one available in the hackage package 'memoize' or 'uglymemo'. If you use it like: myFunctionMemo = memo f, it works, but if you use it like: myFunctionMemo s = memo f s, it may not works, unless GHC "floats" "memo f" out. All of the "pure" memoization library I know are based on this fact.
15:05:49 <guibou> However, is this guaranteed and if yes, why? (pointers to the right part of documentation highly appreciated).
15:07:34 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
15:09:39 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Client Quit)
15:10:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:10:48 <guibou> (the keywords I do have in mind are related to "full lazyness", "CAF", "fully/partially saturated", but nothing precise enough in order to find details about this behavior.
15:12:06 derelict joins (~derelict@user/derelict)
15:12:30 × jippiedoe quits (~david@145.107.129.65) (Ping timeout: 272 seconds)
15:12:54 × liskin quits (~liskin@xmonad/liskin) (Quit: liskin)
15:13:02 liskin joins (~liskin@xmonad/liskin)
15:13:33 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
15:13:48 juhp joins (~juhp@128.106.188.66)
15:15:33 Pickchea joins (~private@user/pickchea)
15:16:18 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 272 seconds)
15:16:41 mr-red joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
15:17:04 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 256 seconds)
15:17:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
15:19:02 chomwitt joins (~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374)
15:19:03 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
15:20:28 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
15:26:47 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
15:28:02 × mr-red quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in)
15:28:56 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
15:29:51 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 255 seconds)
15:29:55 rostero joins (uid236576@id-236576.tooting.irccloud.com)
15:30:08 MQ-17J joins (~MQ-17J@8.21.10.15)
15:30:21 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
15:32:14 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
15:33:26 ukari joins (~ukari@user/ukari)
15:34:51 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
15:36:37 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
15:37:00 <lechner> Hi, Haskell is so much better than Java! "return type polymorphism" https://joyofhaskell.com/posts/2017-03-15-typeclasses-in-translation.html
15:37:52 hexfive joins (~eric@50.35.83.177)
15:38:36 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
15:38:45 cheater joins (~Username@user/cheater)
15:40:09 <dsal> modern idiomatic java is the worst thing I've had to deal with.
15:40:59 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
15:41:06 × jespada quits (~jespada@90.254.247.46) (Ping timeout: 255 seconds)
15:42:18 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
15:43:16 jespada joins (~jespada@90.254.247.46)
15:43:43 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
15:46:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:51:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
15:52:30 × thecoder quits (~mrrobot@static-47-206-93-60.tamp.fl.frontiernet.net) (Quit: leaving)
15:53:11 shapr joins (~user@pool-108-28-144-11.washdc.fios.verizon.net)
15:54:46 × stevenxl quits (~stevenlei@66.63.167.105) (Quit: leaving)
15:55:13 <systemfault> You need more PHP in your life then :)
15:57:21 jolly joins (~jolly@208.180.97.158)
15:59:08 <monochrom> I find higher-kind polymorphism even nicer. I.e., you can generalize from "Maybe Int" and "List Int" to "f Int".
16:00:04 lbseale joins (~lbseale@user/ep1ctetus)
16:02:51 × zdleaf quits (~zinc@163.ip-51-254-203.eu) (Quit: )
16:06:18 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 255 seconds)
16:07:54 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
16:08:11 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:08:19 ukari joins (~ukari@user/ukari)
16:15:14 zdleaf joins (~zdleaf@163.ip-51-254-203.eu)
16:16:29 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
16:18:37 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
16:19:00 × qbt quits (~edun@user/edun) (Ping timeout: 272 seconds)
16:20:23 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:21:04 ec joins (~ec@gateway/tor-sasl/ec)
16:25:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:29:16 mikail_ joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
16:38:05 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
16:38:09 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
16:41:01 chexum joins (~chexum@gateway/tor-sasl/chexum)
16:41:46 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
16:41:58 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
16:42:26 machinedgod joins (~machinedg@24.105.81.50)
16:45:24 <hendursaga> *cough* Clojure anyone?
16:47:31 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
16:48:11 × dminuoso quits (~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host)
16:48:11 dminuoso joins (~dminuoso@user/dminuoso)
16:49:53 eggplantade joins (~Eggplanta@108.201.191.115)
16:50:07 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Quit: -)
16:54:27 chexum joins (~chexum@gateway/tor-sasl/chexum)
16:55:52 eight joins (~eight@user/eight)
16:56:21 × dajoer quits (~david@user/gvx) (Quit: leaving)
16:57:29 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:57:37 shapr hops cheerfully
16:59:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
17:02:03 justsomeguy joins (~justsomeg@user/justsomeguy)
17:03:12 × roconnor quits (~roconnor@host-45-78-194-41.dyn.295.ca) (Ping timeout: 265 seconds)
17:03:20 × oxide quits (~lambda@user/oxide) (Ping timeout: 272 seconds)
17:04:31 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Quit: -)
17:04:48 oxide joins (~lambda@user/oxide)
17:07:30 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
17:13:00 × jess quits (~jess@libera/staff/jess) ()
17:14:11 × mikail_ quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Quit: Leaving)
17:19:06 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 276 seconds)
17:19:17 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
17:20:32 hseg joins (~gesh@185.120.126.10)
17:22:05 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
17:24:37 SimonWeiss[m] joins (~weiss-dma@2001:470:69fc:105::bebd)
17:27:29 × thonkpod quits (~thonkpod@user/thonkpod) (Ping timeout: 255 seconds)
17:30:09 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds)
17:32:08 geekosaur joins (~geekosaur@xmonad/geekosaur)
17:34:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:35:26 chris-the-slurpa joins (~chris@81.96.113.213)
17:35:32 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
17:36:22 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
17:36:52 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
17:38:17 chexum joins (~chexum@gateway/tor-sasl/chexum)
17:39:18 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
17:39:40 cheater joins (~Username@user/cheater)
17:39:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
17:41:12 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
17:42:15 × eggplantade quits (~Eggplanta@108.201.191.115) (Remote host closed the connection)
17:42:50 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
17:43:03 × azeem quits (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 255 seconds)
17:43:30 Guest2168 joins (~Guest21@187.83.249.216.dyn.smithville.net)
17:44:23 <maerwald> why are Go projects always these huge things that do so much stuff that I don't even understand what they do
17:44:37 chris-the-slurpa joins (~chris@81.96.113.213)
17:44:56 Guest9 joins (~Guest9@103.250.139.121)
17:44:59 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
17:46:23 <Guest2168> I have a cyclic module dependency where Foo imports Bar and Bar imports Foo which ghc doesn't like...but Bar was really just functions in Foo that I wanted to put in a separate file for clarity
17:46:35 azeem joins (~azeem@176.200.242.63)
17:46:38 <Guest2168> breaking the dependency is painful, but is there a way to say "compile Foo.hs and Bar.hs as if you concatenated the source"?
17:47:05 <maerwald> Guest2168: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#how-to-compile-mutually-recursive-modules
17:47:08 × hrnz quits (~ulli@irc.plumbing) (Quit: das ist mir zu bld hier; bb)
17:49:04 <monochrom> Turn on CPP and use #include?
17:49:07 <dminuoso> Guest2168: So the short answer is: No. You either move things into the same source file, or you try to float definitions into separate files.
17:49:13 hrnz joins (~ulli@irc.plumbing)
17:49:29 Guest997 joins (~Guest9@103.250.139.121)
17:49:48 × hrnz quits (~ulli@irc.plumbing) (Client Quit)
17:49:54 <dminuoso> Guest2168: The long answer is: boot modules sort of work, but they break in mysterious ways. Avoid circular imports.
17:50:05 <dminuoso> (strange, that the long answer is shorter...)
17:50:05 <maerwald> what's wrong with boot modules
17:50:09 <hseg> still trying to derivevia a Category instance for a type ~ (m, a -> b) for m a monoid. problem is I don't see how to spell a type coercible with this one that eta-contracts away the a and b
17:50:10 <Guest2168> thanks, yeah I saw that maerwald but it looks like it'll be a huge pain and might not work (I need to expose a lot of stuff that actually do depend on the other file)
17:50:20 <maerwald> Guest2168: I use it, it works well
17:50:24 <maerwald> GHC itself uses it
17:50:42 <dminuoso> maerwald: Yes. Ask the the GHC core team what they think of it.
17:50:49 hrnz joins (~ulli@irc.plumbing)
17:50:58 <maerwald> dminuoso: why? you claimed that it breaks :>
17:51:03 <dminuoso> It does.
17:51:05 <maerwald> so I'm asking you
17:51:36 <monochrom> No, my answer is better and I am more right!
17:51:36 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 255 seconds)
17:51:38 <Guest2168> I guess the easy solution is to just write a script to concatenate the files pre-compile
17:51:58 <maerwald> monochrom: yeah, except CPP breaks... all sorts of other tools (linters, formatters, ...)
17:52:12 × hrnz quits (~ulli@irc.plumbing) (Client Quit)
17:52:22 × azeem quits (~azeem@176.200.242.63) (Read error: Connection reset by peer)
17:52:36 azeem joins (~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
17:52:53 <hseg> guess I could go the hask route and define newtype Product f g a b = Product (f (Fst a) (Fst b), g (Snd a b)
17:52:54 × Guest9 quits (~Guest9@103.250.139.121) (Ping timeout: 276 seconds)
17:52:57 <maerwald> but I also use CPP heavily
17:52:58 <maerwald> so what
17:53:21 thonkpod joins (~thonkpod@user/thonkpod)
17:55:56 <maerwald> we should have defined all our tools as microservices
17:56:31 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:56:33 <maerwald> I mean, we're almost there, LSP, neovim, ...
17:56:47 <maerwald> docker
17:56:57 <maerwald> just send a HTTP request to ghc
17:57:03 <int-e> maerwald: https://blog.davetcode.co.uk/post/21st-century-emulator/
17:57:33 hrnz joins (~ulli@irc.plumbing)
17:57:39 <maerwald> unix is dead, now is HTTP and json APIs
17:58:07 <Rembane> POSIX over REST?
17:58:18 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:58:52 × derelict quits (~derelict@user/derelict) (Ping timeout: 245 seconds)
17:59:26 <maerwald> but does it scale?
18:01:22 × Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds)
18:02:04 <monochrom> The "is this actully possible?" section is, I don't know, interesting or more jokes. So, reinventing copy-on-write, out-of-order execution, and speculative execution but for microservices?
18:02:31 × silverwhitefish quits (~hidden@47.202.102.10) (Remote host closed the connection)
18:02:59 <Rembane> Sounds like modern JS
18:03:00 silverwhitefish joins (~hidden@47.202.102.10)
18:03:09 × silverwhitefish quits (~hidden@47.202.102.10) (Client Quit)
18:03:18 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
18:03:53 <int-e> monochrom: it's absolutely a joke
18:03:55 silverwhitefish joins (~hidden@47.202.102.10)
18:04:07 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
18:04:16 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
18:05:52 <int-e> especially if you take "any instruction which changes the program counter" literally
18:06:22 qbt joins (~edun@user/edun)
18:07:34 chris-the-slurpa joins (~chris@81.96.113.213)
18:09:36 × vk3wtf quits (~doc@124.168.198.139) (Ping timeout: 272 seconds)
18:11:05 × eight quits (~eight@user/eight) (Quit: leaving)
18:11:06 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
18:12:09 finsternis joins (~X@23.226.237.192)
18:12:15 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
18:13:28 <yin[m]> i know there's a --warnings flag in ghcid that lets you run your function even with warnings, but is there a way to supress the warnings within ghcid (independently from ghci)?
18:15:05 derelict joins (~derelict@user/derelict)
18:15:46 <tomsmeding> maerwald: surely not webscale
18:17:36 Bayes joins (~Bayes@user/bayes)
18:18:15 <tomsmeding> yin[m]: tell ghcid to pass -w to ghci?
18:18:19 <tomsmeding> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/flags.html#warnings
18:18:52 son0p joins (~ff@181.136.122.143)
18:20:20 <Bayes> so I have a function that "stitches up" all other smaller functions, i.e. an end-user facing function taking several arguments that will run a whole things. What's the best practice in a functional programming here? have the front-end user to pass functions and call them sequentially in my code as needed, or maybe wrap around each of the inner
18:20:20 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
18:20:20 <Bayes> functions sequentially one by one to always have a one-argument function?
18:20:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:21:16 <dminuoso> Can you perhaps present this as code?
18:21:29 <Bayes> I was really trying to do that and I have a mess in my mind :D
18:21:47 <Bayes> I'm trying to write some pseudocode that's simple enough to show what I'm trying to do
18:22:10 <dminuoso> Yes, even that would be helpful.
18:23:17 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
18:23:47 <EvanR> there's the 'congiguration monoid' pattern where you have a type for the massive up front argument to your massive function. And you begin with default config and just tweak parts by monoiding
18:23:49 warnz joins (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
18:23:53 <EvanR> configuration monoid
18:26:59 <Bayes> dminuoso https://paste.tomsmeding.com/efuXPVxV
18:27:06 <Bayes> that's how my code looks like
18:27:35 <Bayes> but I have this very strong intuition deep down me that tells me that's ugly and completely antifunctional programming
18:27:49 <dminuoso> Bayes: Does the return type vary between each function?
18:28:03 <dminuoso> I guess it sort of does, considering step_three
18:29:08 <Bayes> we can assume for the moment that all functions have the same return type
18:29:40 <dminuoso> If we can, then EvanR is right.
18:29:57 <Bayes> as in any of these two will return the same type: step_two_alt_a, step_two_alt_b
18:30:18 <dminuoso> If not, you could perhaps use an indexed monad
18:30:24 <dminuoso> Ah
18:30:28 <Bayes> configuration monoid? that's cool will look it up
18:30:35 <dminuoso> Bayes: but step1 might produce a different output?
18:30:36 <EvanR> dunno if that's really what it's called
18:30:36 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 276 seconds)
18:31:13 <Bayes> yeah, step1 might produce a different output type than step2 and step3
18:31:24 <EvanR> and yeah, it seems unweildy to do and at risk of becoming a terrible API like jQuery
18:31:44 <dminuoso> Bayes: Are there clear stages that a user has to choce (say because first you have a bunch of (potentially parametrized) functions going from `A` to `B`, and then you have a bunch of (potentially parametrized) functions going from `B` to C`, and so forth?
18:32:13 <hseg> ok, so I *can* just roll my own http://ix.io/3sTP, but it seems like there should be a standard solution for this
18:32:14 <dminuoso> (Such that at some point you provide some initial A, and the users specification would give a sort of `A -> D` specification using your bunch of functions?
18:32:23 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
18:32:50 <Bayes> yeah, in this case it's a "closed set" of options so you could enumerate a small-ish set of combinations
18:33:13 <Bayes> EvanR oh I know my code is ... not nice
18:33:17 <dminuoso> Bayes: I see. I would perhaps describe this with an IxState monad.
18:33:37 <Bayes> EvanR is this what you mean by "configuration monoid" https://medium.com/@jonathangfischoff/the-partial-options-monoid-pattern-31914a71fc67 ?
18:33:37 <dminuoso> This gives you a sort of imperative language, without having to explicitly tie "previous layers" into the function calls
18:33:45 <dminuoso> Then you could simply do:
18:34:02 <dminuoso> do { step1; step2 "foo"; step3 10 True }
18:34:15 <dminuoso> And each step is an IxState action that changes the underlying state type
18:34:28 <dminuoso> Then you can simply provide a bunch of combinators for the user to choose
18:35:44 × Patternmaster quits (~georg@li1192-118.members.linode.com) (Remote host closed the connection)
18:35:50 <Bayes> uhm that's not too different from what I'm doing, but just instead of taking the three functions in as arguments I'll get it all resolved for the end user
18:37:22 <Bayes> so you have like three layers, the bottom layer with all the step functions, the middle layer with the function that stitch them up together, and the top layer which is just a bunch of one-line combinations
18:41:21 <Bayes> thanks dminuoso
18:41:30 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
18:41:38 <Bayes> I think this is enough to get me going
18:41:55 geekosaur joins (~geekosaur@xmonad/geekosaur)
18:46:00 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Remote host closed the connection)
18:47:47 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
18:48:38 <hseg> any ideas how to get http://ix.io/3sTP from standard libraries?
18:51:17 cfricke joins (~cfricke@user/cfricke)
18:52:25 <yin[m]> apparently not
18:52:32 kilolympus joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
18:53:05 <yin[m]> is notElem more performant than (not . elem) or something? hlint is really picky with it
18:53:19 <maerwald> no, hlint is just annoying
18:53:34 <kilolympus> I always wondered the same for concatMap and (concat . map)
18:54:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
18:56:22 eight joins (~eight@user/eight)
18:56:22 × eight quits (~eight@user/eight) (Client Quit)
18:56:41 <EvanR> in haskell you get used to such 'spelling differences' not mattering. Then you go back to the real world and shake your head
18:59:25 beka joins (~beka@104.193.170-244.PUBLIC.monkeybrains.net)
19:01:21 × Bayes quits (~Bayes@user/bayes) (Quit: Connection closed)
19:05:04 zopsi_ is now known as zopsi
19:06:01 <zzz> kilolympus: concatMap can be much more efficient in some cases
19:06:18 <zzz> it's the reason it exists
19:07:37 <zzz> i can't think of any structure for which notElem would have an advantage, but for concatMap there are many
19:07:50 <Rembane> zzz: Do you have any concrete examples for concatMap?
19:08:11 × derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2)
19:08:41 <monochrom> hlint is nowhere remotely close to C lint. Don't be fooled by the name.
19:08:47 jess joins (~jess@libera/staff/jess)
19:09:29 prite joins (~pritam@user/pritambaral)
19:09:30 <monochrom> C lint notices objectively probable mistakes. hlint is just one person's personal preference.
19:11:04 <monochrom> What you're seeing is a version of First World Problem.
19:11:32 <zzz> Rembane: concatMap can benefit from foldr/build fusion
19:11:54 <hseg> nm, was overengineering something that would require quite a bit more work than it's worth
19:12:04 <monochrom> C allows you to make a mistake like "if (x = y) { ... }" where it is highly probable you meant "x == y". A tool that catches those is helpful.
19:12:14 <hseg> welp. there goes half an hour's work
19:13:06 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
19:13:16 <monochrom> In Haskell, you can't make that kind of mistakes, it's already a compiler error. So, people get bored and start picking on personal style like (1 +) vs (\x -> 1 + x).
19:14:11 <monochrom> When hlint says "why not foo . bar" my reply is "why don't you shut up"
19:14:35 Pickchea joins (~private@user/pickchea)
19:15:26 <Rembane> zzz: Why can't concat . map do that?
19:15:40 <monochrom> The only reason I am so upset is that there was once upon a time a scenerio forced hlint on me. We had an hpaste.org which forced htlint on every paste.
19:16:07 <zzz> Rembane: also think about some kinds of trees where union requires a lot of reordering~
19:16:33 <Rembane> zzz: That's true, and then those trees have implemented their own Foldable instance I guess.
19:17:20 <monochrom> You can imagine a scenerio that a beginner asks about lambda examples, I posted an example like (\x -> 1 + x) on hpaste.org, and hlint should shut the **** up because this is educational code, not meant to be code-golfed.
19:17:37 × qbt quits (~edun@user/edun) (Ping timeout: 245 seconds)
19:18:55 <monochrom> In Haskell if you use "ghc -Wall" you have already got more lint than you ever need.
19:20:55 Guest1825 joins (~Guest18@70.109.128.127)
19:21:36 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 255 seconds)
19:21:39 <zzz> Rembane: https://stackoverflow.com/questions/27570154/difference-between-concatmap-f-xs-and-concat-map-f-xs
19:21:56 <Rembane> zzz: Thank you!
19:22:57 × Guest997 quits (~Guest9@103.250.139.121) (Ping timeout: 255 seconds)
19:23:13 × chris-the-slurpa quits (~chris@81.96.113.213) (Remote host closed the connection)
19:24:00 <zzz> i remember tripping on concatMap when i was a beginner and now i'm finaly able to follow this rabbit hole years later
19:26:13 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
19:26:29 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:26:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:26:57 <yin[m]> quick notice: matrix bridge is not working
19:27:21 <yin[m]> last message here is from 14:38
19:28:34 × warnz quits (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Remote host closed the connection)
19:29:02 desophos joins (~desophos@2601:249:1680:a570:489c:f364:abf0:5de7)
19:29:33 <Profpatsch> monochrom: https://gist.github.com/Profpatsch/5a41d0283755d573511b08c01ff40148
19:30:22 × alx741 quits (~alx741@186.178.108.22) (Ping timeout: 256 seconds)
19:30:25 × polykernel quits (~polykerne@user/polykernel) (Read error: Connection reset by peer)
19:30:25 × ac quits (~aloiscoch@2001:470:69fc:105::65) (Write error: Connection reset by peer)
19:30:25 × thedward[m] quits (~thedwardm@2001:470:69fc:105::f79) (Write error: Connection reset by peer)
19:30:25 × jaror[m] quits (~jaror@2001:470:69fc:105::265) (Read error: Connection reset by peer)
19:30:26 × cdepillabout[m] quits (~cdepillab@2001:470:69fc:105::3d3) (Read error: Connection reset by peer)
19:30:26 × amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Read error: Connection reset by peer)
19:30:26 × the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Read error: Connection reset by peer)
19:30:26 × SimonWeiss[m] quits (~weiss-dma@2001:470:69fc:105::bebd) (Read error: Connection reset by peer)
19:30:26 × inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Read error: Connection reset by peer)
19:30:26 × Drezil quits (~drezilkif@2001:470:69fc:105::7f8) (Write error: Connection reset by peer)
19:30:26 × jakefromstatefar quits (~jakefroms@2001:470:69fc:105::15ef) (Read error: Connection reset by peer)
19:30:26 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Write error: Connection reset by peer)
19:30:26 × Soft quits (~soft-matr@2001:470:69fc:105::c75) (Write error: Connection reset by peer)
19:30:26 × reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Write error: Connection reset by peer)
19:30:26 × kadoban quits (~kadoban@user/kadoban) (Write error: Connection reset by peer)
19:30:26 × RohitGoswami[m] quits (~rgoswamim@2001:470:69fc:105::16cc) (Read error: Connection reset by peer)
19:30:26 × ecameron[m] quits (~ecameronm@2001:470:69fc:105::35df) (Read error: Connection reset by peer)
19:30:26 × Deewiant quits (~deewiant@2001:470:69fc:105::2fd3) (Read error: Connection reset by peer)
19:30:26 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Read error: Connection reset by peer)
19:30:27 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Read error: Connection reset by peer)
19:30:27 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Read error: Connection reset by peer)
19:30:27 × jophish quits (~jophish@2001:470:69fc:105::670) (Write error: Connection reset by peer)
19:30:27 × Guest2833 quits (~sylveonma@2001:470:69fc:105::2d95) (Read error: Connection reset by peer)
19:30:27 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Read error: Connection reset by peer)
19:30:27 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Write error: Connection reset by peer)
19:30:27 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Write error: Connection reset by peer)
19:30:27 × PotatoHatsue quits (~berberman@2001:470:69fc:105::b488) (Write error: Connection reset by peer)
19:30:28 × kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Read error: Connection reset by peer)
19:30:28 × gxt quits (~gxt@2001:470:69fc:105::3513) (Read error: Connection reset by peer)
19:30:28 × ormaaj quits (~ormaaj@user/ormaaj) (Read error: Connection reset by peer)
19:30:28 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Read error: Connection reset by peer)
19:30:28 × aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Read error: Connection reset by peer)
19:30:28 × fakehacker[m] quits (~fakehacke@2001:470:69fc:105::b5f0) (Read error: Connection reset by peer)
19:30:28 × Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Read error: Connection reset by peer)
19:30:28 × sm quits (~sm@plaintextaccounting/sm) (Read error: Connection reset by peer)
19:30:28 × MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Read error: Connection reset by peer)
19:30:28 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Write error: Connection reset by peer)
19:30:28 × hjulle[m] quits (~hjullemat@2001:470:69fc:105::1dd) (Write error: Connection reset by peer)
19:30:28 × siraben quits (~siraben@user/siraben) (Read error: Connection reset by peer)
19:30:29 × Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Read error: Connection reset by peer)
19:30:29 × lwe[m] quits (~dendrumat@2001:470:69fc:105::2f9b) (Read error: Connection reset by peer)
19:30:29 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Read error: Connection reset by peer)
19:30:29 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Write error: Connection reset by peer)
19:30:29 × ru0mad[m] quits (~ru0madmat@2001:470:69fc:105::9b2) (Write error: Connection reset by peer)
19:30:29 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Read error: Connection reset by peer)
19:30:29 × yin[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Read error: Connection reset by peer)
19:30:29 × bitonic quits (~bitonic@2001:470:69fc:105::1812) (Write error: Connection reset by peer)
19:30:29 × Aleci[m] quits (~alecilibr@2001:470:69fc:105::32e7) (Read error: Connection reset by peer)
19:30:29 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
19:30:29 × dualinverter[m] quits (~dualinver@2001:470:69fc:105::16a7) (Read error: Connection reset by peer)
19:30:29 × Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Read error: Connection reset by peer)
19:30:29 × autrim64[m] quits (~autrim64m@2001:470:69fc:105::16a1) (Read error: Connection reset by peer)
19:30:29 × carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Read error: Connection reset by peer)
19:30:29 × cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Write error: Connection reset by peer)
19:30:29 × ixlun quits (~ixlun@2001:470:69fc:105::41b3) (Read error: Connection reset by peer)
19:30:29 × sridonhiatus[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Read error: Connection reset by peer)
19:30:30 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Read error: Connection reset by peer)
19:30:30 × ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Read error: Connection reset by peer)
19:30:30 × justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Read error: Connection reset by peer)
19:30:31 × bryan[m] quits (~bchreekat@2001:470:69fc:105::16b5) (Read error: Connection reset by peer)
19:30:31 × boxscape quits (~boxscape@user/boxscape) (Write error: Connection reset by peer)
19:30:31 × wallymathieu[m] quits (~wallymath@2001:470:69fc:105::16ae) (Read error: Connection reset by peer)
19:30:31 × dminuoso[m] quits (~dminuosom@2001:470:69fc:105::33bb) (Read error: Connection reset by peer)
19:30:31 × octeep[m]1 quits (~octeepmoc@2001:470:69fc:105::695e) (Write error: Connection reset by peer)
19:30:31 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Write error: Connection reset by peer)
19:30:33 <Profpatsch> I *think* there are some useful lints, but you have to disable a whole lot of “redundant bracket” bullshit before you get anything resembling sanity
19:30:58 <Profpatsch> It’s kinda useful if you want to forbid functions from being used in favor of wrappers
19:31:47 chris-the-slurpa joins (~chris@81.96.113.213)
19:31:57 × xff0x quits (~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67) (Ping timeout: 255 seconds)
19:32:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
19:32:40 × Pickchea quits (~private@user/pickchea) (Ping timeout: 258 seconds)
19:33:08 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Remote host closed the connection)
19:33:21 pavonia joins (~user@user/siracusa)
19:33:37 xff0x joins (~xff0x@185.65.135.235)
19:34:40 <monochrom> I am sympathetic to forking hlint to delete the bad 90%.
19:35:54 <Hecate> relude's hlint configuration file is indeed a very good example of how you can instrumentalise hlint to enforce conventions/wrappers
19:35:57 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
19:39:03 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
19:39:17 <Profpatsch> monochrom: same
19:43:07 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:43:22 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 246 seconds)
19:43:24 alx741 joins (~alx741@186.178.109.32)
19:45:10 <maerwald> Hecate: I feel that's excessive
19:45:35 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
19:45:38 <maerwald> it feels like golfing
19:45:48 Hanicef joins (~hanicef@90-229-213-50-no68.tbcn.telia.com)
19:47:20 <maerwald> or maybe it's because I like it when people break the rules...
19:47:39 <maerwald> so yeah, I have an hlint config too and I encourage people to ignore it
19:48:18 Pickchea joins (~private@user/pickchea)
19:49:15 <maerwald> let me write things that are less concise... why is it so bad?
19:49:37 <Profpatsch> I can understand for functions that are known bad
19:49:42 × xff0x quits (~xff0x@185.65.135.235) (Ping timeout: 245 seconds)
19:49:42 <Profpatsch> e.g. a warning for foldl
19:49:46 <maerwald> true
19:49:55 <Profpatsch> or for stuff that is bad complexity
19:50:24 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 268 seconds)
19:50:27 <Profpatsch> you could make an argument for throwing a warning if somebody tries to concat []s
19:50:45 <Profpatsch> “this is O(n) in every concatenation to you want to continue y/n”
19:50:49 <maerwald> but most of the interesting stuff needs a more powerful linter, which hlint is not... I think stan can deliver more. Like writing actual context aware rules?
19:51:04 <monochrom> My personal coding goal is always simplicity and considering the audience. Concision is just a sometimes side effect.
19:51:05 <Profpatsch> but yeah, hlint doesn’t go very fatr
19:51:17 <Profpatsch> monochrom: amen brother
19:51:21 <Profpatsch> *break starts*
19:51:37 <maerwald> I mean, I've written custom Java rules with SonarQube 8 years ago or so. It's actually amazing.
19:51:46 × chomwitt quits (~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374) (Quit: Leaving)
19:51:49 xff0x joins (~xff0x@2001:1a81:5314:1800:204a:df94:d24b:de67)
19:52:01 <maerwald> If I compare that with what we have in haskell, it's laughable.
19:52:04 <monochrom> For a beginner I am very happy to even write "map (\x -> Just x) [1,2,3]" if they like it better.
19:52:12 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 245 seconds)
19:52:39 <Profpatsch> I feel like hlint is partially a teaching tool? But not super useful in production by default
19:52:44 <monochrom> Fun fact: In SML you have to write "\x -> SOME x" for that example, you have no choice.
19:53:02 <maerwald> Profpatsch: except many companies have it in their CI
19:53:05 <Profpatsch> where you usually don’t want to Eta reduce for readability’s sake
19:53:38 <monochrom> err of course it's also "fun x => SOME x" in SML.
19:54:23 <maerwald> Profpatsch: https://git.io/JCmfu
19:55:42 Erutuon joins (~Erutuon@user/erutuon)
19:55:57 <Profpatsch> maerwald: uh, they don’t even disable many things
19:56:15 <Profpatsch> at least redundant bracket and do
19:56:17 <Profpatsch> but not even $
19:56:19 <maerwald> Profpatsch: stuff is sometimes disabled in the source code
19:56:30 <Profpatsch> would never enforce in CI
19:56:37 <Profpatsch> this is like these things that check the formatter on CI
19:56:40 <Profpatsch> even worse
19:56:45 _73 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net)
19:56:45 <davean> Yah I think hlint's rules are insane personally.
19:56:50 <Profpatsch> Just make everybody set it up in their editor
19:57:00 <davean> I think hlint clean code is actively harmful
19:57:06 <Profpatsch> hls has ormolu integration by default
19:57:08 <Profpatsch> just use that
19:57:15 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
19:57:43 <monochrom> And now for the counterpart in llvm and clang: By default, they warn you when you use recursion.
19:57:48 <davean> Uh, ormolu?
19:58:01 <maerwald> monochrom: xD
19:58:02 <Profpatsch> https://github.com/tweag/ormolu
19:58:11 <Profpatsch> Mark has really thought about this
19:58:14 <Profpatsch> there is nothing to add
19:58:21 <monochrom> or perhaps I mean just llvm's C++ style checker.
19:58:27 <Profpatsch> if you don’t like it, don’t complain, just use it and be happy you never have to indent shit againt
19:58:30 <Profpatsch> -t
19:58:31 <davean> Profpatsch: I'm familiar with it and dislike it
19:58:33 ph88 joins (~ph88@2a02:8109:9e00:7e5c:146a:5c4b:109:2ce4)
19:58:40 <davean> Profpatsch: I'm not google, and theres a reason I'm not google
19:58:52 <Profpatsch> davean: see, you’re a special flower
19:58:56 <monochrom> I prefer fourmolu.
19:58:58 <davean> Profpatsch: no I don't think I am
19:59:04 <davean> Profpatsch: layout leads reading
19:59:11 <desophos> is it wrong that i prefer brittany
19:59:12 lavaman joins (~lavaman@98.38.249.169)
19:59:13 <Profpatsch> your syntax is so important you want people to spend time on it
19:59:27 <maerwald> I'm questioning that formatters add any value. I used to think so too, but I think it's just all OCD or the belief that consistency matters
19:59:31 <davean> Profpatsch: No I want to speed understanding of the code
19:59:45 <davean> layout shows relation
19:59:46 <Profpatsch> davean: yes, and consistently indented code is the easiest to read
19:59:50 × ukari quits (~ukari@user/ukari) (Ping timeout: 256 seconds)
19:59:55 <maerwald> I question that
19:59:56 <davean> Profpatsch: No, semanticly indented code is easier
19:59:57 <Profpatsch> it will always give you a normalized layout
20:00:08 <Profpatsch> davean: it is semantically indentet
20:00:08 <davean> Profpatsch: yes, which will lose all the insite into what goes toegehr
20:00:11 <Profpatsch> *d
20:00:16 <davean> no, its syntacticly indented
20:00:18 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 276 seconds)
20:00:21 <monochrom> Local consistency matters. Global consistency? Would you even notice?
20:00:22 <davean> Those are VERY different
20:00:25 × Erutuon quits (~Erutuon@user/erutuon) (Client Quit)
20:00:37 <Profpatsch> davean: you mean newlines between lines?
20:00:59 <davean> no, though that can come into it
20:01:06 <Profpatsch> davean: I mean, give an example
20:01:09 <Profpatsch> I don’t know of one
20:01:22 <maerwald> monochrom: if you have sudden changes in indenting/style within a single function, it's a good sign that you want to read blame/git log of said function. Why remove that information?
20:01:31 <davean> Like aligning parallel parts of code to show the relation between the lines
20:01:57 <Profpatsch> davean: you mean aligning symbools?
20:02:01 <davean> Profpatsch: a fairly trivial one would be to make all the "action" parts of a conditional structure at the same depth so you can scan them
20:02:04 <dminuoso> I only use stylish-haskell for a single thing: sorting and formatting imports, and that's because its formatting style coincides with mine. So this tool assists me.
20:02:09 <Profpatsch> Sorry, but that’s never worth it
20:02:23 <davean> I said it was trivial
20:02:35 <Profpatsch> It will mess with line diffs, it will mess with automatic formatters, which are just extreme time and brain cycle savers
20:02:35 <davean> You wanted an example that fits in IRC though
20:02:46 × Hanicef quits (~hanicef@90-229-213-50-no68.tbcn.telia.com) (Quit: leaving)
20:02:47 <Profpatsch> davean: nah, can be a paste if you want
20:02:48 <davean> So what about diffs? we read code, diffs are an implimentation detail
20:02:50 <maerwald> coding isn't just talking to the PC, it's talking to each other and expressing yourself... all of those convey information. Inconsistency conveys information, personaly style conveys information
20:02:55 nuncanada joins (~dude@179.235.162.215)
20:02:59 <Profpatsch> davean: I read more diffs than code
20:03:04 × nuncanada quits (~dude@179.235.162.215) (Remote host closed the connection)
20:03:09 <Profpatsch> as does anybody working in a team
20:03:17 <maerwald> If your goal is to read "as fast as possible", then I'm not even sure that's a good goal
20:03:24 <Profpatsch> maerwald: that’s a strawman
20:03:34 <davean> You should understand as fast as possible, not read as fast as possible
20:03:53 <Profpatsch> ormolu helps both, speed of expressing ideas and speed of understanding code
20:04:02 <Profpatsch> not reading code, understanding code
20:04:05 <davean> no, ormolu makes code a mush
20:04:22 <maerwald> I've looked at ormolu formatted code and it looked stripped of information
20:04:22 <Profpatsch> have you … written production code?
20:04:30 <dminuoso> Profpatsch: You can assume they have.
20:04:32 <davean> Yes, of course I have
20:04:37 <maerwald> a bit :D
20:04:48 <[exa]> there's fourmolu to fix some of ormolu problems
20:04:50 <davean> Profpatsch: given you're in this community, I expect i've writen code you use
20:05:07 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 245 seconds)
20:05:10 <dminuoso> I tend to agree with davean. Indenting is highly contextual - a blanket rule cannot reasonably assist understanding in general, because the meaning of what code even means is very.. well.. contextual.
20:05:18 <Profpatsch> davean: I mean a library is usually written by one or two people
20:05:24 <[exa]> still, a proper set oneliners never requires formatting.
20:05:51 <maerwald> Profpatsch: I've worked at a 300 modules proprietary project. We didn't have a formatter and it was mostly anarchy wrt style. It never imposed a problem.
20:06:08 <Profpatsch> maerwald: have you, like, tried it out in seriousness?
20:06:15 <maerwald> tried what
20:06:17 <Profpatsch> Or just looked at it for a few minutes and decided against it?
20:06:24 <Profpatsch> ormolu, or any formatter without configuration
20:06:25 <maerwald> formatters? Yes, all.
20:06:31 <davean> Profpatsch: formaters are for where you don't have quality contributors - specificly like google
20:06:44 <Profpatsch> okay, I’ll stop now
20:06:47 <davean> It patches over horrid team management
20:06:50 <dminuoso> Profpatsch: Formatters begin with a big problem. If I want to communicate something with a particular style that your formatter disagrees with, what do we do now?
20:06:53 <maerwald> I got stuck with brittany and opened a bazillion issues on the issue tracker, until I gave up
20:06:56 <Profpatsch> The takes are getting worse lol
20:07:10 <Profpatsch> syntax is the least important part, but people like to bikeshed
20:07:10 <maerwald> And now I'm free of formatters and it feels good
20:07:16 <davean> Profpatsch: I'm quite serious about where it comes from
20:07:24 <Profpatsch> since it touches identity and strongly held beliefs
20:07:32 <davean> No, its not about identity
20:08:00 <maerwald> I identify as an ormolu?
20:08:17 juhp joins (~juhp@128.106.188.66)
20:09:50 <Profpatsch> I stick with “use ormolu and don’t complain, since it’s not worth the overhead of aligning things by hand”
20:10:13 <dminuoso> Does the ormolu style always exactly indent it as you would have to communicate a particular code structure?
20:10:24 <dminuoso> If you answer with yes, then the tool seems genuinely useful.
20:10:40 <maerwald> Profpatsch: well, I agree with you that there's something worse than formatters: PR discussions about formatting. These make me furious.
20:11:00 <Profpatsch> dminuoso: I’ve written hundreds if not thousands of lines with it and I’ve never once had a problem with the indentation
20:11:16 <davean> ... hundreads?
20:11:22 <dminuoso> Profpatsch: That could perhaps just be indicative of you not caring what indention communicates, or what you could communicate with different styles.
20:11:25 <davean> So you've barely used it?
20:11:31 <maerwald> Especially because you have a limited focus capacity per day and then half of it is eaten up by formatting and style discussions, before you even manage to get to anything useful
20:11:56 <davean> Theres more than 100 different things to lay out
20:12:12 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:12:52 ukari joins (~ukari@user/ukari)
20:12:52 <dminuoso> As one example, I find myself using SPJ-style do-notation from time to time - in some situation it improves readability with nested do-blocks. But it's nothing I would argue "should be done always"
20:12:56 <Profpatsch> davean: not really, a few dozen
20:13:15 <dminuoso> Most of the time I find it noisy and distracting.
20:13:21 <davean> Profpatsch: I can list a few dozen off the top of my head
20:13:21 acidjnk joins (~acidjnk@p200300d0c72b9557fc98475d99842c11.dip0.t-ipconnect.de)
20:14:10 <davean> Profpatsch: we have more than a few dozen language extensions, and many introduce more than one piece of syntax
20:14:49 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
20:18:26 <[exa]> I often hope that tabs could be restored to align proper tabular code, like if you want elements of 2 lists below each other to be aligned for clarity
20:18:45 <davean> [exa]: mmm, sadly tabs aren't reliable
20:18:49 <davean> so sometimes we do it with spaces ...
20:19:15 <maerwald> haskell with tabs and snake case, yay
20:19:48 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 276 seconds)
20:20:14 <dminuoso> maerwald: Hah, I have that!
20:20:56 chomwitt joins (~Pitsikoko@2a02:587:dc04:e00:12c3:7bff:fe6d:d374)
20:22:33 <maerwald> end goal: build a haskell company where this style is mandatory
20:23:09 <davean> maerwald: I think we should select the style of the name based on the modulus of the line its defined on
20:23:20 <davean> and if you change the line number, you have to change the style.
20:23:48 <maerwald> can we auto-format that please?
20:23:59 maerwald writes a patch for ormolu
20:24:32 dre joins (~dre@2001:8003:c932:c301:b299:b352:c4c4:74a1)
20:25:08 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
20:25:37 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
20:25:49 <shapr> Does anyone know when ghc 9.0.2 is likely to be released?
20:26:05 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
20:26:17 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
20:26:41 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
20:29:55 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Ping timeout: 246 seconds)
20:30:57 × prite quits (~pritam@user/pritambaral) (Ping timeout: 245 seconds)
20:31:37 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
20:32:18 gehmehgeh joins (~user@user/gehmehgeh)
20:38:10 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
20:39:30 × beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 256 seconds)
20:42:51 <maerwald> shapr: https://gitlab.haskell.org/ghc/ghc/-/issues/19632
20:42:55 beka joins (~beka@104.193.170-244.PUBLIC.monkeybrains.net)
20:43:26 <shapr> maerwald: thanks!
20:43:44 <maerwald> oh dear, none of the boxes are checked
20:45:39 <tomsmeding> oh boy
20:49:19 xkuru joins (~xkuru@user/xkuru)
20:52:37 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
20:52:56 thedward[m] joins (~thedwardm@2001:470:69fc:105::f79)
20:55:46 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds)
20:58:01 × xkuru quits (~xkuru@user/xkuru) (Quit: Unvirtualizing)
20:59:56 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
21:00:10 machinedgod joins (~machinedg@24.105.81.50)
21:01:46 <koz> What's the QuantifiedConstraints version of MonadTrans? I.e. the one we 'should' have if QuantifiedConstraints existed at the time it was created.
21:01:47 MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22)
21:02:01 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
21:02:01 ac joins (~aloiscoch@2001:470:69fc:105::65)
21:02:01 sm joins (~sm@plaintextaccounting/sm)
21:02:01 hjulle[m] joins (~hjullemat@2001:470:69fc:105::1dd)
21:02:13 dualinverter[m] joins (~dualinver@2001:470:69fc:105::16a7)
21:02:19 jaror[m] joins (~jaror@2001:470:69fc:105::265)
21:02:19 fgaz joins (~fgaz@2001:470:69fc:105::842)
21:02:19 peddie joins (~peddie@2001:470:69fc:105::25d)
21:02:19 cdsmith joins (~cdsmithma@2001:470:69fc:105::284)
21:02:19 ru0mad[m] joins (~ru0madmat@2001:470:69fc:105::9b2)
21:02:19 fabfianda[m] joins (~fabfianda@2001:470:69fc:105::6db)
21:02:19 bb010g joins (~bb010g@2001:470:69fc:105::9a5)
21:02:19 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
21:02:19 ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a)
21:02:19 Las[m] joins (~lasmatrix@2001:470:69fc:105::74e)
21:02:19 cdepillabout[m] joins (~cdepillab@2001:470:69fc:105::3d3)
21:02:19 amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b)
21:02:19 the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f)
21:02:19 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
21:02:19 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
21:02:19 kadoban joins (~kadoban@user/kadoban)
21:02:19 bitonic joins (~bitonic@2001:470:69fc:105::1812)
21:02:19 carmysilna joins (~brightly-@2001:470:69fc:105::2190)
21:02:19 jophish joins (~jophish@2001:470:69fc:105::670)
21:02:19 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
21:02:19 PotatoHatsue joins (~berberman@2001:470:69fc:105::b488)
21:02:19 siraben joins (~siraben@user/siraben)
21:02:19 Deewiant joins (~deewiant@2001:470:69fc:105::2fd3)
21:02:20 unclechu joins (~unclechu@2001:470:69fc:105::354)
21:02:20 bryan[m] joins (~bchreekat@2001:470:69fc:105::16b5)
21:02:20 unrooted joins (~unrooted@2001:470:69fc:105::a4a)
21:02:20 Aleci[m] joins (~alecilibr@2001:470:69fc:105::32e7)
21:02:20 rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70)
21:02:20 maralorn joins (~maralorn@2001:470:69fc:105::251)
21:02:20 jakefromstatefar joins (~jakefroms@2001:470:69fc:105::15ef)
21:02:20 lwe[m] joins (~dendrumat@2001:470:69fc:105::2f9b)
21:02:20 inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
21:02:20 reza[m] joins (~rezaphone@2001:470:69fc:105::3eda)
21:02:20 gxt joins (~gxt@2001:470:69fc:105::3513)
21:02:20 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
21:02:20 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
21:02:20 boxscape joins (~boxscape@user/boxscape)
21:02:20 infinisil joins (~infinisil@2001:470:69fc:105::ff8)
21:02:20 ormaaj joins (~ormaaj@user/ormaaj)
21:02:20 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
21:02:20 sridonhiatus[m] joins (~sridmatri@2001:470:69fc:105::1c2)
21:02:20 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
21:02:20 polykernel joins (~polykerne@user/polykernel)
21:02:25 Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0)
21:02:32 ecameron[m] joins (~ecameronm@2001:470:69fc:105::35df)
21:02:32 autrim64[m] joins (~autrim64m@2001:470:69fc:105::16a1)
21:02:32 Soft joins (~soft-matr@2001:470:69fc:105::c75)
21:02:32 RohitGoswami[m] joins (~rgoswamim@2001:470:69fc:105::16cc)
21:02:32 yin[m] joins (~zwromatri@2001:470:69fc:105::1d4)
21:02:32 justosophy[m] joins (~justosoph@2001:470:69fc:105::572f)
21:02:32 adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d)
21:02:32 jellz[m] joins (~jellzmatr@2001:470:69fc:105::2daa)
21:02:32 Drezil joins (~drezilkif@2001:470:69fc:105::7f8)
21:02:32 dminuoso[m] joins (~dminuosom@2001:470:69fc:105::33bb)
21:02:32 wallymathieu[m] joins (~wallymath@2001:470:69fc:105::16ae)
21:02:32 kosmikus[m] joins (~andresloe@2001:470:69fc:105::95d)
21:02:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:02:33 octeep[m]1 joins (~octeepmoc@2001:470:69fc:105::695e)
21:02:33 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
21:02:33 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
21:02:33 fakehacker[m] joins (~fakehacke@2001:470:69fc:105::b5f0)
21:02:33 vbeatrice[m] joins (~vbeatrice@2001:470:69fc:105::3ebf)
21:02:33 SimonWeiss[m] joins (~weiss-dma@2001:470:69fc:105::bebd)
21:02:33 oak- joins (~oakuniver@2001:470:69fc:105::fcd)
21:02:33 ixlun joins (~ixlun@2001:470:69fc:105::41b3)
21:02:34 Sylveon joins (~sylveonma@2001:470:69fc:105::2d95)
21:02:57 Sylveon is now known as Guest7801
21:05:04 _73 parts (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (ERC (IRC client for Emacs 27.2))
21:05:57 × beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 245 seconds)
21:06:08 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 256 seconds)
21:08:21 × Guest1825 quits (~Guest18@70.109.128.127) (Quit: Client closed)
21:08:50 Patternmaster joins (~georg@li1192-118.members.linode.com)
21:11:52 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
21:12:49 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
21:12:55 FixedPointDude joins (~FixedPoin@204.237.49.106)
21:13:11 <FixedPointDude> hello, i have a horrible conjecture
21:13:57 <koz> FixedPointDude: P vs NP is still undecided.
21:14:22 <FixedPointDude> abusing types, let f 0 = id, f k = f k-1 fmap
21:14:26 <FixedPointDude> (har)
21:14:40 <FixedPointDude> so that f k = fmap fmap ... fmap, with k terms
21:15:14 <FixedPointDude> then: f 4 is a fixed point of f k, for all k >= 6
21:15:42 <FixedPointDude> i.e. (fmap ... fmap) 10 times = (fmap ... fmap) 6 times, etc
21:15:50 <monochrom> Is that "fmap (fmap (fmap ..."? Is that "(...(fmap fmap) fmap) ..."?
21:15:57 <FixedPointDude> left associate i believe
21:16:02 <Hecate> koz: :')
21:16:27 <koz> Hecate: What can I say? It's the source of many horrible conjectures.
21:16:55 <FixedPointDude> the basis of this conjecture is that ghc claims these have the same types, and no other combinations i've noticed do
21:17:22 <monochrom> @type ((fmap fmap) fmap) fmap
21:17:23 <lambdabot> (Functor f1, Functor f2, Functor f3) => f1 (f2 (a -> b)) -> f1 (f2 (f3 a -> f3 b))
21:17:26 <FixedPointDude> inspired by the observation that fmap fmap fmap = (.).(.)
21:18:01 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
21:18:03 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
21:18:22 <hseg> ah. you mean after a point, the types cycle between [(a -> b) -> f1 (f2 (f3 a)) -> f1 (f2 (f3 b))], [f1 (f2 (f3 (a -> b))) -> f1 (f2 (f3 (f4 a -> f4 b)))], [f1 (f2 (f3 (a -> b))) -> f1 (f2 (f3 (f4 a -> f4 b)))], [f1 (f2 (f3 (a -> b))) -> f1 (f2 (f3 (f4 a -> f4 b)))]
21:18:32 <hseg> .... that was unreadable
21:18:35 <FixedPointDude> not that i can parse what you wrote, but probably
21:18:49 <FixedPointDude> haha
21:19:07 <Hecate> hahaha
21:19:14 <FixedPointDude> the idea of proving this makes my palms sweaty
21:19:25 <FixedPointDude> i want to practice these kinds of things, but not actually this
21:19:43 <hseg> not too bad -- it's just four unifications
21:19:58 <FixedPointDude> (i don't know what a unification is)
21:20:42 <FixedPointDude> https://github.com/jozefg/higher-order-unification/blob/master/explanation.md
21:20:44 <hseg> when you apply f :: a -> b to a value c :: t, ghc checks a ~ c
21:20:46 <FixedPointDude> this looks abstract
21:21:24 <hseg> sorry, a ~t
21:21:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:22:01 <hseg> and to do that, it *unifies* the two types -- tries applying known equalities to show they are also equal
21:22:25 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 246 seconds)
21:24:03 <FixedPointDude> so like, e.g. given two parametric types, what's the biggest parametric type which is a subtype both?
21:24:16 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
21:24:21 <FixedPointDude> the meet of parametric types
21:24:21 <hseg> yup
21:25:21 <hseg> e.g. x :: (Int, a), f :: (b,Bool) -> Char is legal since there is a unification (~ assignment of variables) s.t. (Int, a) ~ (b, Bool)
21:26:34 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 272 seconds)
21:27:00 <FixedPointDude> it seems to me that things like this can only show that a term is well-typed, so that two functions *might* be equal
21:27:34 <FixedPointDude> but given two functions f,g : a -> b, i don't see how this technique can show that they are equal
21:27:46 <FixedPointDude> extentionally, on all possible values
21:28:16 <FixedPointDude> is this particular to some special universal property of fmap?
21:28:26 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
21:28:27 <hseg> don't _think_ so?
21:28:34 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
21:28:56 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
21:30:45 <hseg> btw, note this depends on you applying left-associatively
21:31:29 <hseg> right-associatively, fmap (fmap (...) :: f1 (f2 (f3 ... (a -> b) -> f1 (f2 (f3 ... (g a -> g b)
21:33:04 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
21:34:42 <hseg> ah, I see where the fixpoint comes from -- recall we have a Functor ((->) a) instance
21:38:11 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:41:52 o1lo01ol1o joins (~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
21:42:54 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
21:43:09 <FixedPointDude> i went and got a snack and i actually think the "fixed point" formulation is wrong
21:43:23 o1lo01ol_ joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
21:43:32 <FixedPointDude> for the simple reason that (f f)(f f) is different from ((f f) f) f
21:43:47 <FixedPointDude> so the re-stated conjecture is instead:
21:44:00 <hseg> yes, but it's a fixed point of \k -> k fmap
21:44:03 <FixedPointDude> f k+4 = f k, for all k >= 6
21:44:15 <FixedPointDude> aaaah re: k as the variable
21:44:29 <hseg> (well, it enters a cycle of period 4
21:44:48 <hseg> so actually you want "is a fixed point of \k -> k fmap fmap fmap fmap"
21:44:50 <hseg> )
21:44:56 Guest6135 joins (~Guest61@2001:ac8:27:20::a01e)
21:45:04 <FixedPointDude> yes, that'll do it
21:45:45 <hololeap> koz: MonadTrans is one of the examples in the docs. see the second example under "Motiviation"
21:45:50 <hololeap> *Motivation
21:46:05 <koz> hololeap: The docs for QuantifiedConstraints I'm guessing?
21:46:17 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
21:46:17 <hololeap> yeah
21:46:32 <hololeap> GHC user's guide
21:46:35 <hseg> yeah, so the first couple steps are tiresome
21:46:50 × o1lo01ol1o quits (~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 272 seconds)
21:47:59 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0)
21:48:22 <hololeap> (this is actually the first time I've read about this extension...)
21:49:23 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:49:51 <hololeap> so, would this allow us to make Set a real haskell Functor?
21:50:32 <hseg> don't think so -- to make set into a Functor you'd need to be able to restrict the types at which it is applied
21:50:54 justsomeguy joins (~justsomeg@user/justsomeguy)
21:51:28 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 246 seconds)
21:52:40 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
21:52:51 mariohesles joins (~user@172.58.97.195)
21:53:43 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:55:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
21:55:24 <hseg> FixedPointDude: http://ix.io/3sUI
21:55:39 × fendor quits (~fendor@178.115.59.187.wireless.dyn.drei.com) (Read error: Connection reset by peer)
21:55:40 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
21:55:51 <hseg> note the heavy use made of the Functor ((->) a) instance to supply enough arguments
21:56:49 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:146a:5c4b:109:2ce4) (Ping timeout: 268 seconds)
21:57:10 <FixedPointDude> this is interesting
21:57:15 <FixedPointDude> i don't know how to read it though
21:57:40 <hseg> the existence of such an instance means that a bare fmap can be fed any number of arguments, as can be checked by asking GHC for the types of fmap, fmap _, fmap _ _, ...
21:58:35 <hseg> ok, so lines outside {} are the types of various iterations of fmap
21:59:02 <hseg> one then applies the term of that type to fmap :: (α -> β) -> (φ α -> φ β)
21:59:35 <hseg> in order for this to be legal, the type of the parameter of the term must unify with this type
21:59:51 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
21:59:57 <hseg> so eg first unification unifies (α -> β) -> (φ α -> φ β) and (a -> b)
22:00:19 <hseg> for this to happen, we must have a ~ (α -> β), b ~ (φ α -> φ β)
22:00:31 <hseg> ( ~ is type equality)
22:01:20 × hgolden quits (uid507415@id-507415.highgate.irccloud.com) (Quit: Connection closed for inactivity)
22:01:38 <hseg> I then make a couple of bookkeeping renamings, to avoid having α, β, φ in the resulting type
22:01:51 <hseg> (so read {} from left to right)
22:02:43 <hseg> the multiline {} decompose the desired equality more and more, producing assignments for some of the variables
22:05:14 <mariohesles> Say I want to implement a library for defining social relationships, so a function in this library might be something like getPaternalGrandfather :: Person -> Person; I want to have references to each `Person`s children and parents within a given value. What would be a "Haskell-y" way of doing this? I'm thinking of doing something like the following `data Person = P UID Name Sex Parents Children deriving (Eq, Show)`, where `type UID =
22:05:14 <mariohesles> Int`, `type Name = String`, `data Sex = Female | Male deriving (Eq, Show), `type Parents = [UID]` and `type Children = [UID]`, but it feels wrong. I would have to have a database of all Persons and would have to refer to this database to do anything interesting. Is this bad?
22:05:42 ph88 joins (~ph88@2a02:8109:9e00:7e5c:146a:5c4b:109:2ce4)
22:08:38 <hololeap> is what bad? having a database or needing it to do anything interesting?
22:08:51 <hololeap> those both sound like pretty reasonable things to me
22:09:11 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:09:45 <hololeap> it's a pretty simple schema that would fit well inside an SQL database, so it's not going to need the full expressiveness of haskell. there's nothing wrong with that.
22:09:59 <hseg> mariohesles: you mean you feel the encoding should be closer to the relationship graph?
22:10:30 <hseg> otoh, being closer to the graph is nicer conceptually, but as hololeap points out, it'll be harder to serialize
22:10:57 <hseg> and grippingly, it can potentially entail retaining huge objects in memory
22:12:47 <FixedPointDude> yeah the graphiest thing that jumps out to me is: an Ancestry is a tree of Person, and every Person contains an Ancestry
22:13:03 <FixedPointDude> data Person = Person Ancestry
22:13:04 <FixedPointDude> data Ancestry = Empty | Tree [Person]
22:13:35 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:146a:5c4b:109:2ce4) (Quit: Leaving)
22:13:47 <FixedPointDude> well the Empty is redundant
22:15:57 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 245 seconds)
22:16:05 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
22:16:38 × Guest6135 quits (~Guest61@2001:ac8:27:20::a01e) (Quit: Client closed)
22:16:58 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:19:47 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:21:48 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:23:22 vk3wtf joins (~doc@124.168.198.139)
22:23:45 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
22:31:18 Guest6176 joins (~Guest61@2001:ac8:27:20::a01e)
22:31:29 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
22:34:10 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 246 seconds)
22:35:12 <dsal> mariohesles: modeling this is going to be ridiculously hard. Are you sure every person is only either Male or Female and only has one paternal grandfather?
22:36:33 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:39:24 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 272 seconds)
22:39:24 × sm2n quits (~sm2n@user/sm2n) (Ping timeout: 272 seconds)
22:39:38 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
22:39:45 × rostero quits (uid236576@id-236576.tooting.irccloud.com) (Quit: Connection closed for inactivity)
22:40:01 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
22:43:12 × dextaa quits (~DV@aftr-37-201-214-197.unity-media.net) (Ping timeout: 255 seconds)
22:43:16 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds)
22:44:11 Gurkenglas_ joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
22:45:10 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
22:45:19 dextaa joins (~DV@37.201.214.197)
22:46:34 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
22:46:53 pavonia_ joins (~user@user/siracusa)
22:48:16 × pavonia quits (~user@user/siracusa) (Ping timeout: 272 seconds)
22:48:19 pavonia_ is now known as pavonia
22:50:07 × shapr quits (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
22:50:24 × Gurkenglas_ quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
22:50:25 <mariohesles> dsal for the purpose of the library, yes, assume that there are only two sexes and everyone has exactly two real parents
22:50:49 <davean> mariohesles: haha, I worked with genetics lab data, parents are complicated.
22:51:18 <mariohesles> hseg yes I do feel the encoding could be closer to the graph itself
22:52:20 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
22:52:36 <dsal> A person may have multiple arbitrary relationships with multiple people. It's going to be easiest to just do a plain graph and perhaps have common named edges, but there are people for whom their father and grandfather are the same person, or have multiple fathers to traverse for grandparents.
22:52:47 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
22:57:45 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
22:58:35 × fryguybob quits (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Ping timeout: 252 seconds)
22:59:18 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
23:03:08 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
23:03:41 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
23:04:16 × acidjnk quits (~acidjnk@p200300d0c72b9557fc98475d99842c11.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
23:04:28 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
23:05:20 ph88 joins (~ph88@2a02:8109:9e00:7e5c:b510:a429:9a65:bf36)
23:07:20 derelict joins (~derelict@user/derelict)
23:07:25 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:b510:a429:9a65:bf36) (Client Quit)
23:13:22 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
23:13:35 juhp joins (~juhp@128.106.188.66)
23:20:09 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
23:22:56 × o1lo01ol_ quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
23:28:51 drd parts (~drd@93-39-151-19.ip76.fastwebnet.it) (ERC (IRC client for Emacs 28.0.50))
23:31:37 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:32:23 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
23:32:29 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
23:34:34 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:34:40 warnz joins (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845)
23:35:09 machinedgod joins (~machinedg@24.105.81.50)
23:39:25 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
23:40:17 × warnz quits (~warnz@2600:1700:77c0:5610:9856:f279:a598:9845) (Remote host closed the connection)
23:41:24 × zebrag quits (~chris@user/zebrag) (Ping timeout: 256 seconds)
23:42:20 zebrag joins (~chris@user/zebrag)
23:44:35 × jess quits (~jess@libera/staff/jess) ()
23:46:01 × smtnet3 quits (~asdfasdfa@202.36.244.25) (Quit: Leaving)
23:46:38 dajoer joins (~david@user/gvx)
23:47:58 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:51:41 × dre quits (~dre@2001:8003:c932:c301:b299:b352:c4c4:74a1) (Quit: Leaving)
23:52:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:52:59 cjb joins (~cjb@user/cjb)
23:55:45 × Atum__ quits (IRC@user/atum/x-2392232) (Quit: Atum__)

All times are in UTC on 2021-07-13.