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.