2021-12-16 00:00:56 +0100 | avidela | (~textual@88.98.244.170) |
2021-12-16 00:02:43 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
2021-12-16 00:03:09 +0100 | avidela | (~textual@88.98.244.170) (Client Quit) |
2021-12-16 00:06:30 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-12-16 00:08:41 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-12-16 00:10:40 +0100 | hololeap_ | (~hololeap@user/hololeap) |
2021-12-16 00:10:57 +0100 | hololeap_ | hololeap |
2021-12-16 00:16:44 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 00:16:53 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2021-12-16 00:19:45 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Remote host closed the connection) |
2021-12-16 00:20:12 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-12-16 00:20:17 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-12-16 00:21:16 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 00:21:29 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
2021-12-16 00:21:59 +0100 | sagax | (~sagax_nb@user/sagax) |
2021-12-16 00:22:31 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 00:24:09 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-12-16 00:26:37 +0100 | ubert | (~Thunderbi@p200300ecdf1abb061518ea9ba8d342d1.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2021-12-16 00:26:37 +0100 | ub | ubert |
2021-12-16 00:27:05 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-12-16 00:27:44 +0100 | <Axman6> | Hecate: isn't that soimething that pg_config can do for you? |
2021-12-16 00:28:33 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) |
2021-12-16 00:29:22 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-12-16 00:31:06 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-12-16 00:31:27 +0100 | pfurla | (~pfurla@177.25.189.1) |
2021-12-16 00:32:29 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:7939:82b5:8236:6c32) (Remote host closed the connection) |
2021-12-16 00:32:46 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) |
2021-12-16 00:34:14 +0100 | cosimone | (~user@93-47-228-203.ip115.fastwebnet.it) (Ping timeout: 252 seconds) |
2021-12-16 00:34:38 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-12-16 00:37:04 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) (Remote host closed the connection) |
2021-12-16 00:37:22 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) |
2021-12-16 00:37:39 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 00:40:46 +0100 | Ainoretho | (~ypw@huji-132-64-244-88.xt.huji.ac.il) (Ping timeout: 245 seconds) |
2021-12-16 00:42:29 +0100 | gentauro | (~gentauro@user/gentauro) (Ping timeout: 252 seconds) |
2021-12-16 00:42:29 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 00:42:46 +0100 | gentauro_ | (~gentauro@185.107.12.141) (Ping timeout: 268 seconds) |
2021-12-16 00:43:30 +0100 | notzmv | (~zmv@user/notzmv) |
2021-12-16 00:45:01 +0100 | mikoto-chan | (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan) |
2021-12-16 00:45:07 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) (Read error: Connection reset by peer) |
2021-12-16 00:45:25 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) |
2021-12-16 00:45:49 +0100 | <janus> | Axman6: how do you call pg_config from cabal.project? does it have shell interpolation :O ? |
2021-12-16 00:47:01 +0100 | Jing_ | (~hedgehog@2604:a840:3::103e) (Remote host closed the connection) |
2021-12-16 00:47:41 +0100 | Jing | (~hedgehog@2604:a840:3::103e) |
2021-12-16 00:49:29 +0100 | <geekosaur> | ideally whatever it is that actually needs it would call it itself |
2021-12-16 00:49:38 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) (Ping timeout: 252 seconds) |
2021-12-16 00:49:43 +0100 | <geekosaur> | then again that probably requires custom Setup |
2021-12-16 00:52:46 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) |
2021-12-16 00:54:33 +0100 | Guest27 | (~Guest27@cpc148070-lewi21-2-0-cust347.2-4.cable.virginm.net) |
2021-12-16 00:55:55 +0100 | Guest27 | (~Guest27@cpc148070-lewi21-2-0-cust347.2-4.cable.virginm.net) (Client Quit) |
2021-12-16 01:00:03 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (*.net *.split) |
2021-12-16 01:00:03 +0100 | pfurla[m] | (uid345156@id-345156.tinside.irccloud.com) (*.net *.split) |
2021-12-16 01:00:03 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (*.net *.split) |
2021-12-16 01:00:03 +0100 | benin | (~benin@183.82.204.250) (*.net *.split) |
2021-12-16 01:00:03 +0100 | jkaye | (~jkaye@2601:281:8300:7530:7bc1:436b:e88b:37f9) (*.net *.split) |
2021-12-16 01:00:03 +0100 | zmt01 | (~zmt00@user/zmt00) (*.net *.split) |
2021-12-16 01:00:03 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) (*.net *.split) |
2021-12-16 01:00:03 +0100 | zaquest | (~notzaques@5.130.79.72) (*.net *.split) |
2021-12-16 01:00:03 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (*.net *.split) |
2021-12-16 01:00:03 +0100 | nfd | (~nfd@user/nfd) (*.net *.split) |
2021-12-16 01:00:03 +0100 | dsrt^ | (~dsrt@wsip-98-188-240-142.mc.at.cox.net) (*.net *.split) |
2021-12-16 01:00:03 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) (*.net *.split) |
2021-12-16 01:00:03 +0100 | econo | (uid147250@user/econo) (*.net *.split) |
2021-12-16 01:00:03 +0100 | srk | (~sorki@user/srk) (*.net *.split) |
2021-12-16 01:00:03 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (*.net *.split) |
2021-12-16 01:00:03 +0100 | landonf | (landonf@mac68k.info) (*.net *.split) |
2021-12-16 01:00:03 +0100 | jlamothe | (~jlamothe@198.251.61.229) (*.net *.split) |
2021-12-16 01:00:03 +0100 | nvmd | (~nvmd@user/nvmd) (*.net *.split) |
2021-12-16 01:00:03 +0100 | h_ | (~rootveget@fsf/member/hays) (*.net *.split) |
2021-12-16 01:00:03 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (*.net *.split) |
2021-12-16 01:00:03 +0100 | rembo10 | (~rembo10@remulis.com) (*.net *.split) |
2021-12-16 01:00:03 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (*.net *.split) |
2021-12-16 01:00:03 +0100 | tom_ | (~tom@2a00:23c8:970c:4801:f5c6:93c3:2f5e:e0) (*.net *.split) |
2021-12-16 01:00:03 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (*.net *.split) |
2021-12-16 01:00:03 +0100 | bliminse | (~bliminse@host86-186-4-210.range86-186.btcentralplus.com) (*.net *.split) |
2021-12-16 01:00:03 +0100 | pavonia | (~user@user/siracusa) (*.net *.split) |
2021-12-16 01:00:03 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (*.net *.split) |
2021-12-16 01:00:03 +0100 | acidsys | (~LSD@2.lsd.systems) (*.net *.split) |
2021-12-16 01:00:03 +0100 | emf_ | (~emf@2620:10d:c091:480::1:305b) (*.net *.split) |
2021-12-16 01:00:03 +0100 | jespada | (~jespada@87.74.33.157) (*.net *.split) |
2021-12-16 01:00:03 +0100 | arahael | (~arahael@203.158.51.1) (*.net *.split) |
2021-12-16 01:00:03 +0100 | noctux | (~noctux@user/noctux) (*.net *.split) |
2021-12-16 01:00:04 +0100 | x88x88x | (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (*.net *.split) |
2021-12-16 01:00:04 +0100 | sander | (~sander@user/sander) (*.net *.split) |
2021-12-16 01:00:04 +0100 | turlando | (~turlando@user/turlando) (*.net *.split) |
2021-12-16 01:00:04 +0100 | Taneb | (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (*.net *.split) |
2021-12-16 01:00:04 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (*.net *.split) |
2021-12-16 01:00:04 +0100 | mud | (~mud@user/kadoban) (*.net *.split) |
2021-12-16 01:00:04 +0100 | fluffyballoon | (45ce440a48@2604:bf00:561:2000::e2) (*.net *.split) |
2021-12-16 01:00:04 +0100 | Hawker | (~pi@user/hawker) (*.net *.split) |
2021-12-16 01:00:04 +0100 | spoofer | (~spoofer@64.185.111.205) (*.net *.split) |
2021-12-16 01:00:04 +0100 | LambdaDuck | (~anka@ksit.fixme.fi) (*.net *.split) |
2021-12-16 01:00:04 +0100 | opqdonut | (opqdonut@pseudo.fixme.fi) (*.net *.split) |
2021-12-16 01:00:04 +0100 | ishutin | (~ishutin@85-238-77-101.pool.digikabel.hu) (*.net *.split) |
2021-12-16 01:00:04 +0100 | FragByte | (~christian@user/fragbyte) (*.net *.split) |
2021-12-16 01:00:04 +0100 | gawen | (~gawen@user/gawen) (*.net *.split) |
2021-12-16 01:00:04 +0100 | EvanR | (~evan@user/evanr) (*.net *.split) |
2021-12-16 01:00:04 +0100 | vgtw | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (*.net *.split) |
2021-12-16 01:00:04 +0100 | tv | (~tv@user/tv) (*.net *.split) |
2021-12-16 01:00:04 +0100 | exarkun | (~exarkun@user/exarkun) (*.net *.split) |
2021-12-16 01:00:04 +0100 | tired- | (~tired@user/tired) (*.net *.split) |
2021-12-16 01:00:04 +0100 | xdej | (~xdej@quatramaran.salle-s.org) (*.net *.split) |
2021-12-16 01:00:04 +0100 | sm2n | (ae95cb1267@user/sm2n) (*.net *.split) |
2021-12-16 01:00:04 +0100 | jakzale | (6291399afa@user/jakzale) (*.net *.split) |
2021-12-16 01:00:04 +0100 | tdmm | (1c9b9145fc@2604:bf00:561:2000::1c8) (*.net *.split) |
2021-12-16 01:00:04 +0100 | jkoshy | (99b9359beb@2604:bf00:561:2000::10f) (*.net *.split) |
2021-12-16 01:00:04 +0100 | evanrelf | (3addc196af@2604:bf00:561:2000::f0) (*.net *.split) |
2021-12-16 01:00:04 +0100 | filwisher | (2e6936c793@2604:bf00:561:2000::170) (*.net *.split) |
2021-12-16 01:00:04 +0100 | lukec | (9dfd4d094e@2604:bf00:561:2000::10e) (*.net *.split) |
2021-12-16 01:00:04 +0100 | catern | (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (*.net *.split) |
2021-12-16 01:00:04 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (*.net *.split) |
2021-12-16 01:00:04 +0100 | pepeiborra | (sid443799@id-443799.ilkley.irccloud.com) (*.net *.split) |
2021-12-16 01:00:04 +0100 | hendi | (sid489601@id-489601.lymington.irccloud.com) (*.net *.split) |
2021-12-16 01:00:04 +0100 | Vq | (~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split) |
2021-12-16 01:00:04 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split) |
2021-12-16 01:00:04 +0100 | Guest2359 | (1000@gabilgathol.bandrate.org) (*.net *.split) |
2021-12-16 01:00:04 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) (*.net *.split) |
2021-12-16 01:00:04 +0100 | byorgey | (~byorgey@155.138.238.211) (*.net *.split) |
2021-12-16 01:00:04 +0100 | carbolymer | (~carbolyme@dropacid.net) (*.net *.split) |
2021-12-16 01:00:04 +0100 | hook54321 | (sid149355@user/hook54321) (*.net *.split) |
2021-12-16 01:00:04 +0100 | koolazer | (~koo@user/koolazer) (*.net *.split) |
2021-12-16 01:00:05 +0100 | bradparker | (sid262931@id-262931.uxbridge.irccloud.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | taktoa[c] | (sid282096@id-282096.tinside.irccloud.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | flukiluke | (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (*.net *.split) |
2021-12-16 01:00:05 +0100 | Jonno_FTW | (~come@api.carswap.me) (*.net *.split) |
2021-12-16 01:00:05 +0100 | int-e | (~noone@int-e.eu) (*.net *.split) |
2021-12-16 01:00:05 +0100 | wz1000 | (~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split) |
2021-12-16 01:00:05 +0100 | elvishjerricco | (sid237756@id-237756.helmsley.irccloud.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | res0nat0r | (~Fletch@dia.whatbox.ca) (*.net *.split) |
2021-12-16 01:00:05 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (*.net *.split) |
2021-12-16 01:00:05 +0100 | MasseR | (~MasseR@51.15.143.128) (*.net *.split) |
2021-12-16 01:00:05 +0100 | m5zs7k | (aquares@web10.mydevil.net) (*.net *.split) |
2021-12-16 01:00:05 +0100 | ozzymcduff | (~mathieu@81-234-151-21-no94.tbcn.telia.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | dibblego | (~dibblego@haskell/developer/dibblego) (*.net *.split) |
2021-12-16 01:00:05 +0100 | Typedfern | (~Typedfern@75.red-88-22-25.staticip.rima-tde.net) (*.net *.split) |
2021-12-16 01:00:05 +0100 | stefan-_ | (~cri@42dots.de) (*.net *.split) |
2021-12-16 01:00:05 +0100 | theproffesor | (~theproffe@user/theproffesor) (*.net *.split) |
2021-12-16 01:00:05 +0100 | haasn | (~nand@haasn.dev) (*.net *.split) |
2021-12-16 01:00:05 +0100 | sus | (zero@user/zeromomentum) (*.net *.split) |
2021-12-16 01:00:05 +0100 | phma | (phma@2001:5b0:210f:4b78:b1e:6610:21b4:b15b) (*.net *.split) |
2021-12-16 01:00:05 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) (*.net *.split) |
2021-12-16 01:00:05 +0100 | acidjnk | (~acidjnk@p200300d0c7271e9405040680e1e3c542.dip0.t-ipconnect.de) (*.net *.split) |
2021-12-16 01:00:05 +0100 | Akiva | (~Akiva@user/Akiva) (*.net *.split) |
2021-12-16 01:00:05 +0100 | max22- | (~maxime@2a01cb0883359800cb0bc7c67be4bc8f.ipv6.abo.wanadoo.fr) (*.net *.split) |
2021-12-16 01:00:05 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (*.net *.split) |
2021-12-16 01:00:05 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (*.net *.split) |
2021-12-16 01:00:05 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (*.net *.split) |
2021-12-16 01:00:05 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | cheater | (~Username@user/cheater) (*.net *.split) |
2021-12-16 01:00:05 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (*.net *.split) |
2021-12-16 01:00:05 +0100 | xacktm | (xacktm@user/xacktm) (*.net *.split) |
2021-12-16 01:00:05 +0100 | ikke | (~kevin@alpine/developer/ikke) (*.net *.split) |
2021-12-16 01:00:05 +0100 | asm | (~alexander@user/asm) (*.net *.split) |
2021-12-16 01:00:05 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (*.net *.split) |
2021-12-16 01:00:05 +0100 | mcglk | (~mcglk@131.191.49.120) (*.net *.split) |
2021-12-16 01:00:05 +0100 | surgeon[m] | (~surge9nma@2001:470:69fc:105::f585) (*.net *.split) |
2021-12-16 01:00:05 +0100 | amesgen[m] | (~amesgenm]@2001:470:69fc:105::82b) (*.net *.split) |
2021-12-16 01:00:05 +0100 | rednaZ[m] | (~r3dnazmat@2001:470:69fc:105::ba70) (*.net *.split) |
2021-12-16 01:00:06 +0100 | TomWesterhout[m] | (~twesterho@2001:470:69fc:105::1:2918) (*.net *.split) |
2021-12-16 01:00:06 +0100 | YehoshuaPesachWa | (~yehoshuap@2001:470:69fc:105::a5f) (*.net *.split) |
2021-12-16 01:00:06 +0100 | craige[m] | (~craigemcw@2001:470:69fc:105::35f1) (*.net *.split) |
2021-12-16 01:00:06 +0100 | mrmonday | (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split) |
2021-12-16 01:00:06 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (*.net *.split) |
2021-12-16 01:00:06 +0100 | obfusk | (~quassel@a82-161-150-56.adsl.xs4all.nl) (*.net *.split) |
2021-12-16 01:00:06 +0100 | feetwind | (~mike@user/feetwind) (*.net *.split) |
2021-12-16 01:00:06 +0100 | w1gz | (~do@159.89.11.133) (*.net *.split) |
2021-12-16 01:00:06 +0100 | root1 | (root@2600:3c02::f03c:92ff:fe1a:c779) (*.net *.split) |
2021-12-16 01:00:06 +0100 | rookie101 | (~rookie@165.232.121.13) (*.net *.split) |
2021-12-16 01:00:06 +0100 | n3t | (n3t@user/n3t) (*.net *.split) |
2021-12-16 01:00:06 +0100 | WhateverRabbit | (~rabbit@206.81.18.26) (*.net *.split) |
2021-12-16 01:00:06 +0100 | davl | (~davl@207.154.228.18) (*.net *.split) |
2021-12-16 01:00:06 +0100 | xstill- | (xstill@fimu/xstill) (*.net *.split) |
2021-12-16 01:00:06 +0100 | xsarnik | (xsarnik@lounge.fi.muni.cz) (*.net *.split) |
2021-12-16 01:00:06 +0100 | Ankhers | (~Ankhers@ec2-54-196-233-138.compute-1.amazonaws.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | acro | (~acro@user/acro) (*.net *.split) |
2021-12-16 01:00:06 +0100 | alinab | (sid468903@id-468903.helmsley.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | systemfault | (sid267009@id-267009.uxbridge.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | jonrh | (sid5185@id-5185.ilkley.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | aria | (sid380617@id-380617.lymington.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | alanz | (sid110616@id-110616.uxbridge.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | HurdyGurdyBurdy | (~HurdyGurd@user/hurdygurdyburdy) (*.net *.split) |
2021-12-16 01:00:06 +0100 | lyxia | (~lyxia@poisson.chat) (*.net *.split) |
2021-12-16 01:00:06 +0100 | bsima1 | (9d7e39c8ad@2604:bf00:561:2000::dd) (*.net *.split) |
2021-12-16 01:00:06 +0100 | JimL | (~quassel@89-162-2-132.fiber.signal.no) (*.net *.split) |
2021-12-16 01:00:06 +0100 | Pent | (sid313808@id-313808.lymington.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | AndreasK | (sid320732@id-320732.uxbridge.irccloud.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | jrm | (~jrm@156.34.249.199) (*.net *.split) |
2021-12-16 01:00:06 +0100 | leah2 | (~leah@vuxu.org) (*.net *.split) |
2021-12-16 01:00:06 +0100 | tomsmeding | (~tomsmedin@tomsmeding.com) (*.net *.split) |
2021-12-16 01:00:06 +0100 | unyu | (~pyon@user/pyon) (*.net *.split) |
2021-12-16 01:00:06 +0100 | maerwald | (~maerwald@user/maerwald) (*.net *.split) |
2021-12-16 01:00:10 +0100 | xdej | (~xdej@quatramaran.salle-s.org) |
2021-12-16 01:00:11 +0100 | Jonno_FTW | (~come@api.carswap.me) |
2021-12-16 01:00:11 +0100 | absence | (torgeihe@hildring.pvv.ntnu.no) |
2021-12-16 01:00:14 +0100 | lukec | (9dfd4d094e@2604:bf00:561:2000::10e) |
2021-12-16 01:00:14 +0100 | filwisher | (2e6936c793@2604:bf00:561:2000::170) |
2021-12-16 01:00:16 +0100 | byorgey | (~byorgey@155.138.238.211) |
2021-12-16 01:00:16 +0100 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) |
2021-12-16 01:00:17 +0100 | spoofer | (~spoofer@64.185.111.205) |
2021-12-16 01:00:17 +0100 | JimL | (~quassel@89-162-2-132.fiber.signal.no) |
2021-12-16 01:00:18 +0100 | rembo10 | (~rembo10@remulis.com) |
2021-12-16 01:00:18 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-12-16 01:00:21 +0100 | asm | (~alexander@burner.asm89.io) |
2021-12-16 01:00:21 +0100 | max22- | (~maxime@2a01cb0883359800cb0bc7c67be4bc8f.ipv6.abo.wanadoo.fr) |
2021-12-16 01:00:22 +0100 | pfurla[m] | (uid345156@id-345156.tinside.irccloud.com) |
2021-12-16 01:00:24 +0100 | tom_ | (~tom@2a00:23c8:970c:4801:f5c6:93c3:2f5e:e0) |
2021-12-16 01:00:25 +0100 | tdmm | (1c9b9145fc@2604:bf00:561:2000::1c8) |
2021-12-16 01:00:25 +0100 | root1 | (root@2600:3c02::f03c:92ff:fe1a:c779) |
2021-12-16 01:00:26 +0100 | jkoshy | (99b9359beb@2604:bf00:561:2000::10f) |
2021-12-16 01:00:26 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) |
2021-12-16 01:00:26 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-12-16 01:00:27 +0100 | acidjnk | (~acidjnk@p200300d0c7271e9405040680e1e3c542.dip0.t-ipconnect.de) |
2021-12-16 01:00:29 +0100 | xsarnik | (xsarnik@lounge.fi.muni.cz) |
2021-12-16 01:00:33 +0100 | res0nat0r | (~Fletch@dia.whatbox.ca) |
2021-12-16 01:00:33 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-12-16 01:00:34 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2021-12-16 01:00:34 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2021-12-16 01:00:35 +0100 | Typedfern | (~Typedfern@75.red-88-22-25.staticip.rima-tde.net) |
2021-12-16 01:00:35 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-12-16 01:00:37 +0100 | zaquest | (~notzaques@5.130.79.72) |
2021-12-16 01:00:38 +0100 | AndreasK | (sid320732@2a03:5180:f:5::4:e4dc) |
2021-12-16 01:00:38 +0100 | opqdonut | (~opqdonut@91.105.251.154) |
2021-12-16 01:00:38 +0100 | alinab | (sid468903@helmsley.irccloud.com) |
2021-12-16 01:00:38 +0100 | unyu | (~pyon@2800:200:e840:42c7:c75:c5f:d434:a5f1) |
2021-12-16 01:00:39 +0100 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
2021-12-16 01:00:39 +0100 | turlando | (~turlando@user/turlando) |
2021-12-16 01:00:40 +0100 | Vq | (~vq@90-227-195-41-no77.tbcn.telia.com) |
2021-12-16 01:00:40 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2021-12-16 01:00:41 +0100 | Pent | (sid313808@id-313808.lymington.irccloud.com) |
2021-12-16 01:00:41 +0100 | mrmonday | (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
2021-12-16 01:00:41 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-12-16 01:00:42 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2021-12-16 01:00:43 +0100 | FragByte | (~christian@p579d2134.dip0.t-ipconnect.de) |
2021-12-16 01:00:44 +0100 | sus | (zero@user/zeromomentum) |
2021-12-16 01:00:44 +0100 | lyxia | (~lyxia@poisson.chat) |
2021-12-16 01:00:47 +0100 | wz1000 | (~zubin@static.11.113.47.78.clients.your-server.de) |
2021-12-16 01:00:48 +0100 | Akiva | (~Akiva@d75-156-97-166.bchsia.telus.net) |
2021-12-16 01:00:49 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2021-12-16 01:00:49 +0100 | dsrt^ | (~dsrt@98.188.240.142) |
2021-12-16 01:00:51 +0100 | dibblego | (~dibblego@122-199-1-30.ip4.superloop.com) |
2021-12-16 01:00:51 +0100 | pepeiborra | (sid443799@ilkley.irccloud.com) |
2021-12-16 01:00:53 +0100 | bradparker | (sid262931@id-262931.uxbridge.irccloud.com) |
2021-12-16 01:00:53 +0100 | jakzale | (6291399afa@user/jakzale) |
2021-12-16 01:00:59 +0100 | feetwind | (~mike@2406:d500:6:1:216:3cff:fe36:651) |
2021-12-16 01:01:03 +0100 | ikke | (~kevin@delta.ikke.info) |
2021-12-16 01:01:03 +0100 | hendi | (sid489601@2a03:5180:f:2::7:7881) |
2021-12-16 01:01:05 +0100 | n3t | (~n3t@s45.mydevil.net) |
2021-12-16 01:01:06 +0100 | jonrh | (sid5185@2a03:5180:f:3::1441) |
2021-12-16 01:01:06 +0100 | systemfault | (sid267009@id-267009.uxbridge.irccloud.com) |
2021-12-16 01:01:11 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) |
2021-12-16 01:01:12 +0100 | taktoa[c] | (sid282096@2a03:5180:f::4:4df0) |
2021-12-16 01:01:17 +0100 | econo | (uid147250@2a03:5180:f::2:3f32) |
2021-12-16 01:01:21 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) |
2021-12-16 01:01:21 +0100 | alanz | (sid110616@uxbridge.irccloud.com) |
2021-12-16 01:01:23 +0100 | elvishjerricco | (sid237756@helmsley.irccloud.com) |
2021-12-16 01:01:26 +0100 | aria | (sid380617@2a03:5180:f:2::5:cec9) |
2021-12-16 01:01:28 +0100 | bsima1 | (9d7e39c8ad@2604:bf00:561:2000::dd) |
2021-12-16 01:01:30 +0100 | FragByte | (~christian@p579d2134.dip0.t-ipconnect.de) (Changing host) |
2021-12-16 01:01:30 +0100 | FragByte | (~christian@user/fragbyte) |
2021-12-16 01:01:37 +0100 | theproffesor | (~theproffe@2601:282:847f:8010::5fff) |
2021-12-16 01:01:38 +0100 | Guest2359 | (1000@gabilgathol.bandrate.org) |
2021-12-16 01:01:39 +0100 | hook54321 | (sid149355@user/hook54321) |
2021-12-16 01:01:42 +0100 | landonf | (landonf@mac68k.info) |
2021-12-16 01:01:48 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
2021-12-16 01:01:49 +0100 | dibblego | (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host) |
2021-12-16 01:01:49 +0100 | dibblego | (~dibblego@haskell/developer/dibblego) |
2021-12-16 01:01:49 +0100 | unyu | Guest6030 |
2021-12-16 01:02:01 +0100 | econo | (uid147250@2a03:5180:f::2:3f32) (Changing host) |
2021-12-16 01:02:01 +0100 | econo | (uid147250@user/econo) |
2021-12-16 01:02:13 +0100 | leah2 | (~leah@vuxu.org) |
2021-12-16 01:02:16 +0100 | theproffesor | (~theproffe@2601:282:847f:8010::5fff) (Changing host) |
2021-12-16 01:02:16 +0100 | theproffesor | (~theproffe@user/theproffesor) |
2021-12-16 01:02:17 +0100 | pavonia | (~user@ip5f5bd527.dynamic.kabel-deutschland.de) |
2021-12-16 01:02:21 +0100 | feetwind | Guest9348 |
2021-12-16 01:02:28 +0100 | pavonia | (~user@ip5f5bd527.dynamic.kabel-deutschland.de) (Changing host) |
2021-12-16 01:02:28 +0100 | pavonia | (~user@user/siracusa) |
2021-12-16 01:02:31 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 01:02:52 +0100 | carbolymer | (~carbolyme@dropacid.net) |
2021-12-16 01:03:06 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) |
2021-12-16 01:03:12 +0100 | <Axman6> | So I was asking yesterday about an efficient array of write once valyes (essentially Array (Maybe a) where something like a bitvector is used to record Nothingness). I wonder if edwardk's promises library would give me that. I'm working on something for the discrimination library as it is, so it's not a totally crazy idea... |
2021-12-16 01:03:14 +0100 | xstill- | (xstill@fimu/xstill) |
2021-12-16 01:03:15 +0100 | maerwald | (~maerwald@mail.hasufell.de) |
2021-12-16 01:03:24 +0100 | jrm | (~jrm@156.34.249.199) |
2021-12-16 01:03:28 +0100 | vgtw | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) |
2021-12-16 01:03:36 +0100 | sander | (~sander@user/sander) |
2021-12-16 01:03:38 +0100 | tired | (~tired@user/tired) |
2021-12-16 01:03:40 +0100 | noctux | (~noctux@user/noctux) |
2021-12-16 01:03:43 +0100 | stefan-_ | (~cri@42dots.de) |
2021-12-16 01:03:44 +0100 | srk | (~sorki@user/srk) |
2021-12-16 01:03:53 +0100 | fluffyballoon | (45ce440a48@2604:bf00:561:2000::e2) |
2021-12-16 01:03:54 +0100 | phma | (phma@2001:5b0:210f:4b78:b1e:6610:21b4:b15b) |
2021-12-16 01:03:59 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2021-12-16 01:04:07 +0100 | hays | (rootvegeta@fsf/member/hays) |
2021-12-16 01:04:08 +0100 | m5zs7k | (aquares@web10.mydevil.net) |
2021-12-16 01:04:10 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-12-16 01:04:17 +0100 | exarkun | (~exarkun@user/exarkun) |
2021-12-16 01:04:18 +0100 | sm2n | (ae95cb1267@user/sm2n) |
2021-12-16 01:04:20 +0100 | obfusk | (~quassel@a82-161-150-56.adsl.xs4all.nl) |
2021-12-16 01:04:28 +0100 | Ankhers | (~Ankhers@ec2-54-196-233-138.compute-1.amazonaws.com) |
2021-12-16 01:04:29 +0100 | tomsmeding | (~tomsmedin@tomsmeding.com) |
2021-12-16 01:04:31 +0100 | haasn | (~nand@haasn.dev) |
2021-12-16 01:04:38 +0100 | gawen | (~gawen@user/gawen) |
2021-12-16 01:04:39 +0100 | x88x88x | (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) |
2021-12-16 01:04:40 +0100 | Taneb | (~Taneb@runciman.hacksoc.org) |
2021-12-16 01:04:43 +0100 | flukiluke | (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) |
2021-12-16 01:04:44 +0100 | davl | (~davl@207.154.228.18) |
2021-12-16 01:04:44 +0100 | evanrelf | (3addc196af@2604:bf00:561:2000::f0) |
2021-12-16 01:05:09 +0100 | LambdaDuck | (~anka@ksit.fixme.fi) |
2021-12-16 01:05:09 +0100 | xacktm | (xacktm@user/xacktm) |
2021-12-16 01:05:10 +0100 | ishutin | (~ishutin@85-238-77-101.pool.digikabel.hu) |
2021-12-16 01:05:15 +0100 | acidsys | (~LSD@2.lsd.systems) |
2021-12-16 01:05:17 +0100 | int-e | (~noone@int-e.eu) |
2021-12-16 01:05:19 +0100 | bliminse | (~bliminse@host86-186-4-210.range86-186.btcentralplus.com) |
2021-12-16 01:05:19 +0100 | ozzymcduff | (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
2021-12-16 01:05:21 +0100 | Hawker | (~pi@user/hawker) |
2021-12-16 01:05:24 +0100 | nfd | (~nfd@user/nfd) |
2021-12-16 01:05:30 +0100 | mcglk | (~mcglk@131.191.49.120) |
2021-12-16 01:05:35 +0100 | koolazer | (~koo@user/koolazer) |
2021-12-16 01:05:44 +0100 | <Axman6> | so far I have this (and oh my god was it painful to finally figure this out) https://paste.tomsmeding.com/nXqG4mDD |
2021-12-16 01:05:50 +0100 | catern | (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) |
2021-12-16 01:05:53 +0100 | jespada | (~jespada@87.74.33.157) |
2021-12-16 01:06:08 +0100 | WhateverRabbit | (~rabbit@206.81.18.26) |
2021-12-16 01:06:28 +0100 | w1gz | (~do@159.89.11.133) |
2021-12-16 01:06:31 +0100 | tv | (~tv@user/tv) |
2021-12-16 01:06:39 +0100 | acro | (~acro@user/acro) |
2021-12-16 01:06:41 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2021-12-16 01:06:47 +0100 | max22- | (~maxime@2a01cb0883359800cb0bc7c67be4bc8f.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2021-12-16 01:06:57 +0100 | rookie101 | (~rookie@165.232.121.13) |
2021-12-16 01:07:03 +0100 | emf | (~emf@2620:10d:c091:480::1:305b) |
2021-12-16 01:07:07 +0100 | cheater | (~Username@user/cheater) |
2021-12-16 01:07:45 +0100 | amesgen[m] | (~amesgenm]@2001:470:69fc:105::82b) |
2021-12-16 01:07:49 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-12-16 01:07:49 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-12-16 01:07:49 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-12-16 01:08:34 +0100 | surgeon[m] | (~surge9nma@2001:470:69fc:105::f585) |
2021-12-16 01:09:11 +0100 | YehoshuaPesachWa | (~yehoshuap@2001:470:69fc:105::a5f) |
2021-12-16 01:10:12 +0100 | rednaZ[m] | (~r3dnazmat@2001:470:69fc:105::ba70) |
2021-12-16 01:10:17 +0100 | craige[m] | (~craigemcw@2001:470:69fc:105::35f1) |
2021-12-16 01:11:23 +0100 | TomWesterhout[m] | (~twesterho@2001:470:69fc:105::1:2918) |
2021-12-16 01:12:04 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 01:15:35 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 250 seconds) |
2021-12-16 01:17:27 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
2021-12-16 01:18:39 +0100 | jinsun__ | (~quassel@user/jinsun) |
2021-12-16 01:20:02 +0100 | jinsun | (~quassel@user/jinsun) (Ping timeout: 240 seconds) |
2021-12-16 01:21:13 +0100 | acidjnk | (~acidjnk@p200300d0c7271e9405040680e1e3c542.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2021-12-16 01:23:12 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 01:28:39 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-12-16 01:28:45 +0100 | <koz> | @pl \_ y -> f y |
2021-12-16 01:28:45 +0100 | <lambdabot> | const f |
2021-12-16 01:29:25 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2021-12-16 01:30:01 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 01:32:34 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 260 seconds) |
2021-12-16 01:34:35 +0100 | Erutuon_ | (~Erutuon@user/erutuon) |
2021-12-16 01:35:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 01:37:25 +0100 | pfurla[m] | (uid345156@id-345156.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2021-12-16 01:39:38 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-12-16 01:41:29 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 01:44:21 +0100 | EvanR | (~evan@2600:1700:ba69:10:48cf:5b3a:5b94:ba94) |
2021-12-16 01:44:21 +0100 | EvanR | (~evan@2600:1700:ba69:10:48cf:5b3a:5b94:ba94) (Changing host) |
2021-12-16 01:44:21 +0100 | EvanR | (~evan@user/evanr) |
2021-12-16 01:44:27 +0100 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) |
2021-12-16 01:44:36 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
2021-12-16 01:48:07 +0100 | Akiva | (~Akiva@d75-156-97-166.bchsia.telus.net) (Ping timeout: 256 seconds) |
2021-12-16 01:54:20 +0100 | Morrow | (~quassel@bzq-110-168-31-106.red.bezeqint.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-12-16 01:59:36 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 02:06:38 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-12-16 02:10:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-12-16 02:10:46 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 02:13:27 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds) |
2021-12-16 02:15:35 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 02:19:37 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds) |
2021-12-16 02:20:58 +0100 | Erutuon_ | Erutuon |
2021-12-16 02:29:02 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 02:29:10 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 02:29:29 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 256 seconds) |
2021-12-16 02:31:25 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-12-16 02:36:14 +0100 | eys | (~eys@87.196.72.73) |
2021-12-16 02:36:14 +0100 | eys | (~eys@87.196.72.73) (Remote host closed the connection) |
2021-12-16 02:36:33 +0100 | eys | (~eys@87-196-72-73.net.novis.pt) |
2021-12-16 02:39:04 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-12-16 02:41:50 +0100 | <hololeap> | @pl _ |
2021-12-16 02:41:50 +0100 | <lambdabot> | (line 1, column 1): |
2021-12-16 02:41:50 +0100 | <lambdabot> | unexpected "_" |
2021-12-16 02:41:50 +0100 | <lambdabot> | expecting white space, "()", natural, identifier, lambda abstraction or expression |
2021-12-16 02:43:12 +0100 | <jackdk> | @pl |
2021-12-16 02:43:13 +0100 | <lambdabot> | (line 1, column 1): |
2021-12-16 02:43:13 +0100 | <lambdabot> | unexpected end of input |
2021-12-16 02:43:13 +0100 | <lambdabot> | expecting white space, "()", natural, identifier, lambda abstraction or expression |
2021-12-16 02:43:23 +0100 | <jackdk> | @botsnack sorry lambdabot |
2021-12-16 02:43:24 +0100 | <lambdabot> | :) |
2021-12-16 02:44:41 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) |
2021-12-16 02:46:06 +0100 | retroid_ | (~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds) |
2021-12-16 02:46:38 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2021-12-16 02:46:52 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-12-16 02:47:05 +0100 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
2021-12-16 02:48:21 +0100 | johnjay | (~pi@154.6.152.74) (WeeChat 3.3) |
2021-12-16 02:48:45 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2021-12-16 02:52:21 +0100 | retroid_ | (~retro@05412d78.skybroadband.com) |
2021-12-16 02:56:47 +0100 | mmhat | (~mmh@55d47819.access.ecotel.net) (Quit: WeeChat 3.3) |
2021-12-16 02:56:47 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 02:57:30 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 260 seconds) |
2021-12-16 02:58:42 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer) |
2021-12-16 03:01:13 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) |
2021-12-16 03:01:56 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 03:06:19 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-12-16 03:06:57 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds) |
2021-12-16 03:12:36 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-12-16 03:12:36 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2021-12-16 03:12:54 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 03:14:41 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 03:17:39 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
2021-12-16 03:18:27 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds) |
2021-12-16 03:18:40 +0100 | eys | (~eys@87-196-72-73.net.novis.pt) (Quit: Leaving) |
2021-12-16 03:22:05 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-12-16 03:24:27 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 03:25:17 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
2021-12-16 03:32:58 +0100 | ubert | (~Thunderbi@p200300ecdf1abb06cc2914e8ae945344.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-12-16 03:33:28 +0100 | ubert | (~Thunderbi@p200300ecdf1abb03cc2914e8ae945344.dip0.t-ipconnect.de) |
2021-12-16 03:33:30 +0100 | zmt00 | (~zmt00@user/zmt00) |
2021-12-16 03:36:34 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 03:37:40 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-12-16 03:40:35 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-12-16 03:40:53 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-12-16 03:42:27 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 03:44:22 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
2021-12-16 04:01:32 +0100 | xff0x | (~xff0x@2001:1a81:52ce:1300:fb1:616f:b19a:8052) (Ping timeout: 240 seconds) |
2021-12-16 04:03:21 +0100 | mason0 | (~bc8147f2@cerf.good1.com) |
2021-12-16 04:03:31 +0100 | <zero> | can we export "all except some" functions in a module? |
2021-12-16 04:03:47 +0100 | xff0x | (~xff0x@2001:1a81:530f:c500:a508:6a68:a141:6a03) |
2021-12-16 04:03:52 +0100 | <zero> | like `module X hiding ( some ) where` |
2021-12-16 04:04:47 +0100 | <monochrom> | Unfortunately no. |
2021-12-16 04:04:52 +0100 | <zero> | :( |
2021-12-16 04:05:48 +0100 | <mason0> | hi. is there a way to display Data.Ratio.Ratio as a decimal number? |
2021-12-16 04:06:23 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 04:06:28 +0100 | <awpr> | `module X.Internal where ...` `module X (module X.Internal) where; import X.Internal hiding (some)` if it's worth using extra files for |
2021-12-16 04:06:43 +0100 | <mason0> | (without converting it to double first, as that would restrict me to precision of double) |
2021-12-16 04:10:46 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-12-16 04:13:50 +0100 | <monochrom> | Perhaps use the "scientific" package, use its fromRationalRepetend to convert Rational to Scientific. You can tell it when to stop, or let it detect repetition and tell you. |
2021-12-16 04:17:46 +0100 | <glguy> | > let decimal x = case properFraction x of (w,p) -> show w ++ "." ++ unfoldr (\x -> if x == 0 then Nothing else case properFraction (10*x) of (w,p) -> Just (intToDigit w, p)) p |
2021-12-16 04:17:47 +0100 | <lambdabot> | <no location info>: error: |
2021-12-16 04:17:47 +0100 | <lambdabot> | not an expression: ‘let decimal x = case properFraction x of (w,p) -> sh... |
2021-12-16 04:17:57 +0100 | <glguy> | @let decimal x = case properFraction x of (w,p) -> show w ++ "." ++ unfoldr (\x -> if x == 0 then Nothing else case properFraction (10*x) of (w,p) -> Just (intToDigit w, p)) p |
2021-12-16 04:17:58 +0100 | <lambdabot> | <command line>: does not exist: .L.hs |
2021-12-16 04:18:04 +0100 | mbuf | (~Shakthi@223.178.108.131) |
2021-12-16 04:19:24 +0100 | <mason0> | @hoogle intToDigit |
2021-12-16 04:19:25 +0100 | <lambdabot> | Data.Char intToDigit :: Int -> Char |
2021-12-16 04:19:25 +0100 | <lambdabot> | GHC.Show intToDigit :: Int -> Char |
2021-12-16 04:19:25 +0100 | <lambdabot> | Protolude intToDigit :: Int -> Char |
2021-12-16 04:20:22 +0100 | <mason0> | glguy oh interesting. is that limited to precision of some floating point number, or not? I'm not quite how it works |
2021-12-16 04:20:29 +0100 | <mason0> | +sure |
2021-12-16 04:21:07 +0100 | mason0 | (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC) |
2021-12-16 04:21:21 +0100 | mason0 | (~bc8147f2@cerf.good1.com) |
2021-12-16 04:21:22 +0100 | <glguy> | it's as limited as storing things as a Rational |
2021-12-16 04:21:56 +0100 | <monochrom> | > properFraction (10/3 :: Rational) |
2021-12-16 04:21:57 +0100 | <snake> | is this right and why wasn't it said so simply to me before? injective means every output has at most one input. surjective means every output has at least one input. bijective means every output has exactly one input. |
2021-12-16 04:21:58 +0100 | <lambdabot> | (3,1 % 3) |
2021-12-16 04:22:03 +0100 | <monochrom> | Lossless. |
2021-12-16 04:23:09 +0100 | <snake> | nice i love fractions |
2021-12-16 04:23:15 +0100 | snake | pushes up his glasses |
2021-12-16 04:23:20 +0100 | <monochrom> | snake: This is right. And very intuitive. And very hostile to equational reasoning. |
2021-12-16 04:23:40 +0100 | <snake> | hostile? |
2021-12-16 04:23:45 +0100 | <monochrom> | "if f x = f y then x = y" is very friendly to equational reasong i.e. doing algebra. |
2021-12-16 04:23:57 +0100 | td_ | (~td@94.134.91.159) (Ping timeout: 256 seconds) |
2021-12-16 04:23:58 +0100 | <snake> | ohhh i see |
2021-12-16 04:24:00 +0100 | <monochrom> | "at most one" OK am I doing combinatorics or what |
2021-12-16 04:24:14 +0100 | <snake> | so it's good to study the equations too |
2021-12-16 04:24:18 +0100 | <snake> | err rules |
2021-12-16 04:24:33 +0100 | <snake> | :ok_hand: |
2021-12-16 04:24:41 +0100 | <mason0> | > 1%2 / 2 |
2021-12-16 04:24:43 +0100 | <lambdabot> | 1 % 4 |
2021-12-16 04:24:44 +0100 | <monochrom> | In general, intuitiveness is the anti-thesis to logic. |
2021-12-16 04:25:28 +0100 | td_ | (~td@muedsl-82-207-238-051.citykom.de) |
2021-12-16 04:25:43 +0100 | <snake> | yeah but i need to remember it for my discrete math final, most of the points i missed on the last exam were function and relation concepts :V |
2021-12-16 04:25:53 +0100 | <snake> | i tyhink the intuitive definition at least grants me that |
2021-12-16 04:27:27 +0100 | <monochrom> | For bijection, "f(g(x))=x and g(f(x))=x" is friendly to algebra, as said. Even better is double-down on algebra so you also do boolean algebra: "forall x,y: f(x)=y iff x=g(y)". (Note that "iff" is equality for booleans.) |
2021-12-16 04:28:38 +0100 | <monochrom> | Oh I memorize all perspectives and narratives and bedtime stories. |
2021-12-16 04:28:40 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-12-16 04:28:58 +0100 | <snake> | lol |
2021-12-16 04:30:39 +0100 | <monochrom> | If the exam requires proofs, and the proofs requires the hard-to-remember, unintuitive narrative, then memorizing the easy-to-remember, intuitive narrative won't help. You will end up handwaving and "this is obvious to me why are you asking for proof". |
2021-12-16 04:31:54 +0100 | <monochrom> | The right thing to do is to practice with the actually-needed-on-exam version a million times until it becomes intuitive. Intuition is trained not opined. |
2021-12-16 04:32:11 +0100 | <monochrom> | Which also means now is too late to start that. |
2021-12-16 04:32:18 +0100 | <monochrom> | As usual. |
2021-12-16 04:33:03 +0100 | <mason0> | lol, decimal (1%3) prints 0.333333 ad infinutum |
2021-12-16 04:33:25 +0100 | <glguy> | of course |
2021-12-16 04:33:36 +0100 | <monochrom> | I don't understand why programmers are so obsessed with "intuitive" esp. in the sense "if my first impression is unintuitive, I reject it". |
2021-12-16 04:33:54 +0100 | <mason0> | glguy, yeah, I did get what I asked for! |
2021-12-16 04:33:58 +0100 | <monochrom> | Actual professions can't afford that luxury. |
2021-12-16 04:34:33 +0100 | <monochrom> | You don't hear medical school students complaining "seeing blood and gory organs is unintuitive to me so I refuse to learn surgery". |
2021-12-16 04:34:47 +0100 | <monochrom> | or rather s/complaining/whining/ |
2021-12-16 04:35:13 +0100 | <monochrom> | That's exactly what programmers do. Whining about needing to be trained. Unprofessional. |
2021-12-16 04:35:17 +0100 | <snake> | idk man the only person i see whining is you |
2021-12-16 04:35:25 +0100 | <snake> | :p |
2021-12-16 04:35:32 +0100 | <monochrom> | Yeah OK no problem I'll stop. |
2021-12-16 04:35:32 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 04:36:27 +0100 | featurebug | (~featurebu@49.205.122.91) (Ping timeout: 250 seconds) |
2021-12-16 04:40:24 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Remote host closed the connection) |
2021-12-16 04:40:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-12-16 04:41:47 +0100 | <snake> | monochrom, i appreciate your suggestion |
2021-12-16 04:47:33 +0100 | sleblanc | (~sleblanc@user/sleblanc) |
2021-12-16 04:49:35 +0100 | <monochrom> | Lately, I have been working closely with inverse images of functions. They are counterintuitive at first, but turn out to be beautiful. And your understanding can be directly expressed with inverse images, so maybe you're on to something, too. (Pun intended or not, "on to", haha.) |
2021-12-16 04:50:01 +0100 | <snake> | lol |
2021-12-16 04:50:44 +0100 | <maerwald[m]> | <monochrom> "That's exactly what programmers..." <- Programmers don't need to be trained |
2021-12-16 04:50:47 +0100 | <monochrom> | Let f:X->Y, S⊆Y. The inverse image of f of S, I'll write "invIm f S", other people write "f^(-1) (S)", is { x in X | f(x) in S }. |
2021-12-16 04:50:47 +0100 | <EvanR> | formal topology, locales |
2021-12-16 04:50:50 +0100 | <maerwald[m]> | They need to learn |
2021-12-16 04:50:58 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) |
2021-12-16 04:52:00 +0100 | <monochrom> | So your understanding means using singleton sets for S, then asking what invIm f {y} looks like for each y. |
2021-12-16 04:52:34 +0100 | <monochrom> | Injective is when for every y, invIm f {y} has size 0 or 1. |
2021-12-16 04:52:59 +0100 | <monochrom> | Surjective is when size is 1 or more. Bijective is when size is 1. |
2021-12-16 04:53:11 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-12-16 04:53:54 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 04:54:19 +0100 | <sprout> | https://github.com/egel-lang/aoc-2021/blob/main/day15/task2.eg <- Advent of Code, day 15, task 2 - egel code |
2021-12-16 04:54:22 +0100 | <sprout> | https://pasteboard.co/EN3DVD0kUahm.png <- with colors |
2021-12-16 04:57:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2021-12-16 05:04:36 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 05:10:58 +0100 | featurebug | (~featurebu@49.205.122.91) |
2021-12-16 05:13:36 +0100 | <mason0> | IIRC there was a function that takes a function and keeps applying it to base value, and the result of f baseValue, etc. does anyone know the name? |
2021-12-16 05:14:09 +0100 | <monochrom> | iterate |
2021-12-16 05:14:13 +0100 | <xsperry> | @hoogle (a -> a) -> a -> [a] |
2021-12-16 05:14:14 +0100 | <lambdabot> | Prelude iterate :: (a -> a) -> a -> [a] |
2021-12-16 05:14:14 +0100 | <lambdabot> | Data.List iterate :: (a -> a) -> a -> [a] |
2021-12-16 05:14:14 +0100 | <lambdabot> | Data.List iterate' :: (a -> a) -> a -> [a] |
2021-12-16 05:14:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-12-16 05:14:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-12-16 05:14:25 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-12-16 05:14:36 +0100 | <monochrom> | > iterate (* 2) 1 |
2021-12-16 05:14:38 +0100 | <lambdabot> | [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,2... |
2021-12-16 05:14:46 +0100 | <mason0> | > iterate (/2) (1%2) |
2021-12-16 05:14:47 +0100 | <lambdabot> | [1 % 2,1 % 4,1 % 8,1 % 16,1 % 32,1 % 64,1 % 128,1 % 256,1 % 512,1 % 1024,1 %... |
2021-12-16 05:14:52 +0100 | <mason0> | neat! |
2021-12-16 05:15:41 +0100 | <EvanR> | > let factorial n = product [1..n] in iterate factorial 2 |
2021-12-16 05:15:42 +0100 | <lambdabot> | [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2... |
2021-12-16 05:15:46 +0100 | <EvanR> | shoot |
2021-12-16 05:17:13 +0100 | <EvanR> | > let factorial n = product [1..n] in (iterate factorial 3) !! 5 |
2021-12-16 05:17:19 +0100 | <lambdabot> | mueval-core: Time limit exceeded |
2021-12-16 05:17:31 +0100 | <monochrom> | "fixed point detected" |
2021-12-16 05:18:11 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2021-12-16 05:18:16 +0100 | xff0x | (~xff0x@2001:1a81:530f:c500:a508:6a68:a141:6a03) (Ping timeout: 245 seconds) |
2021-12-16 05:18:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2021-12-16 05:19:08 +0100 | xff0x | (~xff0x@2001:1a81:530f:c500:fcf0:ff87:e783:c227) |
2021-12-16 05:20:59 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 05:24:32 +0100 | <mason0> | > sum $ take 10 $ iterate (/2) (1%1) |
2021-12-16 05:24:33 +0100 | <lambdabot> | 1023 % 512 |
2021-12-16 05:25:17 +0100 | <mason0> | > sum $ take 10 $ iterate (/2) 1 |
2021-12-16 05:25:19 +0100 | <lambdabot> | 1.998046875 |
2021-12-16 05:25:31 +0100 | <EvanR> | zenos paradox 2 |
2021-12-16 05:25:47 +0100 | <mason0> | hmm, I got 2.0 for the second line in ghci |
2021-12-16 05:26:39 +0100 | <mason0> | no, my bad |
2021-12-16 05:27:16 +0100 | <EvanR> | that would be sum $ take inf |
2021-12-16 05:28:00 +0100 | <EvanR> | > sum (iterate (/2) 1) |
2021-12-16 05:28:08 +0100 | <lambdabot> | mueval.real: ExitFailure 1 |
2021-12-16 05:28:51 +0100 | <EvanR> | a real error |
2021-12-16 05:37:44 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 05:41:35 +0100 | curiousgay | (~curiousga@77-120-141-90.kha.volia.net) (Ping timeout: 256 seconds) |
2021-12-16 05:45:27 +0100 | <Axman6> | > scanl (+) 0 $ iterate (/2) 1 :: [Rational] |
2021-12-16 05:45:28 +0100 | <lambdabot> | [0 % 1,1 % 1,3 % 2,7 % 4,15 % 8,31 % 16,63 % 32,127 % 64,255 % 128,511 % 256... |
2021-12-16 05:45:57 +0100 | <Axman6> | :t decimal |
2021-12-16 05:45:58 +0100 | <lambdabot> | (Integral a, Choice p, Applicative f) => p a (f a) -> p String (f String) |
2021-12-16 05:46:16 +0100 | <Axman6> | hmm, what's the best way to get a decimal string from a Rational? |
2021-12-16 05:46:59 +0100 | <glguy> | Did someone leak that tonight's adventofcode is converting fractions to decimals? |
2021-12-16 05:46:59 +0100 | <Axman6> | > map fromRational $ scanl (+) 0 $ iterate (/2) 1 :: [Double] |
2021-12-16 05:47:01 +0100 | <lambdabot> | [0.0,1.0,1.5,1.75,1.875,1.9375,1.96875,1.984375,1.9921875,1.99609375,1.99804... |
2021-12-16 05:47:07 +0100 | <xerox> | haha |
2021-12-16 05:47:24 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) |
2021-12-16 05:48:09 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) (Read error: Connection reset by peer) |
2021-12-16 05:48:17 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 05:48:27 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) |
2021-12-16 05:49:50 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
2021-12-16 05:49:59 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 05:54:28 +0100 | <Axman6> | > drop 10 $ map fromRational $ scanl (+) 0 $ iterate (/2) 1 :: [Double] |
2021-12-16 05:54:30 +0100 | <lambdabot> | [1.998046875,1.9990234375,1.99951171875,1.999755859375,1.9998779296875,1.999... |
2021-12-16 05:54:51 +0100 | <Axman6> | > drop 10 $ map (\n -> 2 - fromRational n) $ scanl (+) 0 $ iterate (/2) 1 :: [Double] |
2021-12-16 05:54:53 +0100 | <lambdabot> | [1.953125e-3,9.765625e-4,4.8828125e-4,2.44140625e-4,1.220703125e-4,6.1035156... |
2021-12-16 05:55:16 +0100 | <EvanR> | eww doubles |
2021-12-16 05:55:34 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 05:55:54 +0100 | <EvanR> | > map fromRational $ scanl (+) 0 $ iterate (/2) 1 :: [CReal] |
2021-12-16 05:55:55 +0100 | <lambdabot> | [0.0,1.0,1.5,1.75,1.875,1.9375,1.96875,1.984375,1.9921875,1.99609375,1.99804... |
2021-12-16 05:55:59 +0100 | <Axman6> | > drop 10 $ map (\n -> 2 - fromRational n) $ scanl (+) 0 $ iterate (/2) 1 :: [Scientific] |
2021-12-16 05:56:01 +0100 | <lambdabot> | error: |
2021-12-16 05:56:01 +0100 | <lambdabot> | Not in scope: type constructor or class ‘Scientific’ |
2021-12-16 05:56:10 +0100 | <Axman6> | % drop 10 $ map (\n -> 2 - fromRational n) $ scanl (+) 0 $ iterate (/2) 1 :: [Scientific] |
2021-12-16 05:56:10 +0100 | <yahb> | Axman6: ; <interactive>:154:77: error: Not in scope: type constructor or class `Scientific' |
2021-12-16 05:56:15 +0100 | <Axman6> | :( |
2021-12-16 05:56:25 +0100 | <EvanR> | the bots are unscientific |
2021-12-16 05:57:53 +0100 | <Axman6> | > let factorials = scanl (*) 1 [1..]; factorial n = factorials !! n in iterate factorial 3 |
2021-12-16 05:57:54 +0100 | <lambdabot> | [3,6,720,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1... |
2021-12-16 05:58:05 +0100 | <Axman6> | o.O |
2021-12-16 05:58:16 +0100 | <EvanR> | Int |
2021-12-16 05:58:19 +0100 | <Axman6> | > let factorials = scanl (*) 1 [1..]; factorial n = factorials !! (n+1) in iterate factorial 3 |
2021-12-16 05:58:21 +0100 | <mason0> | Axman6, glguy posted a neat function above that does that. |
2021-12-16 05:58:28 +0100 | <lambdabot> | mueval.real: ExitFailure 1 |
2021-12-16 05:58:28 +0100 | <EvanR> | use genericIndex or something |
2021-12-16 05:59:07 +0100 | <mason0> | > let decimal x = case properFraction x of (w,p) -> show w ++ "." ++ unfoldr (\x -> if x == 0 then Nothing else case properFraction (10*x) of (w,p) -> Just (intToDigit w, p)) p in decimal (1%2) |
2021-12-16 05:59:08 +0100 | <lambdabot> | "0.5" |
2021-12-16 05:59:25 +0100 | <mason0> | > let decimal x = case properFraction x of (w,p) -> show w ++ "." ++ unfoldr (\x -> if x == 0 then Nothing else case properFraction (10*x) of (w,p) -> Just (intToDigit w, p)) p in decimal (1%3) |
2021-12-16 05:59:26 +0100 | <lambdabot> | "0.3333333333333333333333333333333333333333333333333333333333333333333333333... |
2021-12-16 05:59:37 +0100 | featurebug | (~featurebu@49.205.122.91) (Ping timeout: 240 seconds) |
2021-12-16 05:59:57 +0100 | <Axman6> | that = decimal representation? yeah I saw that - feels inefficient but we're dealing with Strings... so... |
2021-12-16 06:00:18 +0100 | <mason0> | :t unfoldr |
2021-12-16 06:00:20 +0100 | <lambdabot> | (b -> Maybe (a, b)) -> b -> [a] |
2021-12-16 06:00:51 +0100 | <Axman6> | > let decimal x = case properFraction x of (w,p) -> show w ++ "." ++ unfoldr (\x -> if x == 0 then Nothing else case properFraction (10*x) of (w,p) -> Just (intToDigit w, p)) p in decimal (22%7) |
2021-12-16 06:00:52 +0100 | <lambdabot> | "3.1428571428571428571428571428571428571428571428571428571428571428571428571... |
2021-12-16 06:02:16 +0100 | <Axman6> | > let decimal x = case properFraction x of (w,p) -> show w ++ "." ++ unfoldr (\x -> if x == 0 then Nothing else case properFraction (10*x) of (w,p) -> Just (intToDigit w, p)) p in decimal (355%113) |
2021-12-16 06:02:17 +0100 | <lambdabot> | "3.1415929203539823008849557522123893805309734513274336283185840707964601769... |
2021-12-16 06:04:51 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 06:18:43 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-12-16 06:20:35 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2021-12-16 06:23:06 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 06:24:04 +0100 | phma_ | (phma@2001:5b0:210f:4b78:b1e:6610:21b4:b15b) |
2021-12-16 06:24:35 +0100 | <Axman6> | what's the right way to say I want to build my cabal project with -Wall these days? Is it something that goes in the cabal.project file? |
2021-12-16 06:24:54 +0100 | vicfred | (~vicfred@user/vicfred) |
2021-12-16 06:25:50 +0100 | <dibblego> | I put it in the cabal file |
2021-12-16 06:26:07 +0100 | <dibblego> | https://gitlab.com/tonymorris/aviation-navigation/-/blob/master/aviation-navigation.cabal#L57 |
2021-12-16 06:27:09 +0100 | phma | (phma@2001:5b0:210f:4b78:b1e:6610:21b4:b15b) (Ping timeout: 250 seconds) |
2021-12-16 06:28:26 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Ping timeout: 260 seconds) |
2021-12-16 06:28:27 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 250 seconds) |
2021-12-16 06:28:33 +0100 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) |
2021-12-16 06:29:23 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-12-16 06:30:31 +0100 | <Axman6> | it feels like a cabal.project thing to me, since users of the library don't really need to know about -Wall from my package, but when building the project I'd like to have it |
2021-12-16 06:34:16 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2021-12-16 06:36:54 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 06:37:37 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:d9b5:7230:29a1:ab4d) (Ping timeout: 240 seconds) |
2021-12-16 06:40:02 +0100 | <jackdk> | Axman6: https://cabal.readthedocs.io/en/latest/cabal-project.html#package-configuration-options |
2021-12-16 06:42:30 +0100 | ikke | (~kevin@delta.ikke.info) (Changing host) |
2021-12-16 06:42:30 +0100 | ikke | (~kevin@alpine/developer/ikke) |
2021-12-16 06:42:42 +0100 | <Axman6> | yeah I looked at that, and added a package my-package\n flags: -Wall and it didn't work |
2021-12-16 06:42:52 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-12-16 06:44:42 +0100 | <Axman6> | hmm, I may be an idiot...one sec |
2021-12-16 06:45:40 +0100 | iqubic | (~user@2601:602:9502:c70:3682:5ffe:e458:d665) |
2021-12-16 06:45:43 +0100 | <Axman6> | I am, all good. I needed ghc-options: not flags:, obviously |
2021-12-16 06:47:21 +0100 | jinsun__ | jinsun |
2021-12-16 06:47:34 +0100 | <Axman6> | "Unrecognized field 'optimisation' on line 3" <- I am not ok with this, whatever happened to our recognition of the correcting spellings of the English language |
2021-12-16 06:47:50 +0100 | <iqubic> | I have "Data Bit = Zero | One". Can I use megaparsec to parse a [Bit]? |
2021-12-16 06:48:47 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 06:49:04 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-12-16 06:51:41 +0100 | <dibblego> | yes |
2021-12-16 06:52:58 +0100 | <iqubic> | I see. How does it work? |
2021-12-16 06:55:12 +0100 | tom_ | (~tom@2a00:23c8:970c:4801:f5c6:93c3:2f5e:e0) (Read error: Connection reset by peer) |
2021-12-16 06:55:12 +0100 | tom__ | (~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer) |
2021-12-16 06:55:19 +0100 | tom__ | (~tom@host86-151-99-97.range86-151.btcentralplus.com) |
2021-12-16 06:56:11 +0100 | zincy | (~tom@2a00:23c8:970c:4801:f5c6:93c3:2f5e:e0) |
2021-12-16 07:06:34 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 07:10:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 07:12:37 +0100 | bahamas | (~lucian@84.232.140.13) |
2021-12-16 07:13:13 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-12-16 07:18:10 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-12-16 07:18:10 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 07:19:11 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:558b:2015:9c55:ace3) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-12-16 07:19:46 +0100 | chomwitt | (~chomwitt@2a02:587:dc19:a500:12c3:7bff:fe6d:d374) |
2021-12-16 07:19:57 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
2021-12-16 07:24:22 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-12-16 07:29:26 +0100 | gentauro | (~gentauro@user/gentauro) |
2021-12-16 07:29:31 +0100 | gentauro_ | (~gentauro@185.107.12.141) |
2021-12-16 07:32:18 +0100 | <EvanR> | "it works quite well actually" |
2021-12-16 07:33:50 +0100 | <int-e> | > unwords $ map (\x -> printf "%.2f" (197-x/32)) [6208,6185,6132,6048,6012,5987,5980,5958,5906,5855] |
2021-12-16 07:33:52 +0100 | <lambdabot> | "3.00 3.72 5.38 8.00 9.12 9.91 10.12 10.81 12.44 14.03" |
2021-12-16 07:34:47 +0100 | <int-e> | Apart from not being fluent at writing parsers... I really hated today's specification. |
2021-12-16 07:35:11 +0100 | <EvanR> | iqubic, look at e.g. many :: Parsec a -> Parsec [a], or manyTill, or ... |
2021-12-16 07:35:25 +0100 | <iqubic> | I see. |
2021-12-16 07:35:55 +0100 | <EvanR> | apparently those were moved to parser-combinators |
2021-12-16 07:36:09 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 07:36:24 +0100 | <int-e> | :t many |
2021-12-16 07:36:25 +0100 | <lambdabot> | Alternative f => f a -> f [a] |
2021-12-16 07:36:30 +0100 | <int-e> | shouldn't that one work? |
2021-12-16 07:36:34 +0100 | dcoutts_ | (~duncan@71.78.6.51.dyn.plus.net) (Ping timeout: 260 seconds) |
2021-12-16 07:36:36 +0100 | <int-e> | (from Control.Applicative) |
2021-12-16 07:36:54 +0100 | <EvanR> | yeah that might be the grand daddy of many |
2021-12-16 07:37:24 +0100 | <int-e> | though that doesn't give you manyTill |
2021-12-16 07:38:11 +0100 | <EvanR> | (you probably don't need manyTill today sir) |
2021-12-16 07:40:35 +0100 | bahamas | (~lucian@84.232.140.13) (Ping timeout: 256 seconds) |
2021-12-16 07:43:23 +0100 | <int-e> | (you need something else that's a bit awkward though) |
2021-12-16 07:44:11 +0100 | <EvanR> | i cheated and forgot to use monads to parse the bits |
2021-12-16 07:44:24 +0100 | <EvanR> | letting me do _whatever i want wahahaha_ |
2021-12-16 07:45:37 +0100 | <int-e> | EvanR: I also "forgot" but that didn't stop me from struggling a bit |
2021-12-16 07:46:36 +0100 | <int-e> | it's not like you can save a whole lot of code anyway; there's no backtracking or other complicated choices to make |
2021-12-16 07:46:58 +0100 | <EvanR> | parsers are apparently a lot easier when they can't fail xD |
2021-12-16 07:47:51 +0100 | xff0x | (~xff0x@2001:1a81:530f:c500:fcf0:ff87:e783:c227) (Ping timeout: 245 seconds) |
2021-12-16 07:48:16 +0100 | <int-e> | silly excerpt: https://paste.debian.net/1223675/ |
2021-12-16 07:48:38 +0100 | <int-e> | yes they are |
2021-12-16 07:48:38 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 07:48:43 +0100 | xff0x | (~xff0x@port-92-195-102-89.dynamic.as20676.net) |
2021-12-16 07:49:18 +0100 | <EvanR> | lol nice |
2021-12-16 07:49:36 +0100 | <EvanR> | impostor monad |
2021-12-16 07:50:07 +0100 | <int-e> | I know :) |
2021-12-16 07:51:08 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
2021-12-16 07:51:34 +0100 | <EvanR> | good one to show people who think haskell syntax is confusing |
2021-12-16 07:51:49 +0100 | <int-e> | well, they're right. |
2021-12-16 07:52:31 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2021-12-16 07:53:40 +0100 | <int-e> | This isn't a unique propert of Haskell. It's true for all programming languages until you've learned them, or at least another one that is similar. |
2021-12-16 07:53:49 +0100 | emf | (~emf@2620:10d:c091:480::1:305b) (Ping timeout: 268 seconds) |
2021-12-16 07:54:08 +0100 | <int-e> | Sadly we live in a world where everyone knows something-similar-to-C |
2021-12-16 07:54:39 +0100 | <EvanR> | "what the hell does 10 print hello world 20 goto 10 do" said no one ever xD |
2021-12-16 07:55:11 +0100 | Minnozz | (~minnozz@salix.minnozz.com) (WeeChat 2.8) |
2021-12-16 07:55:39 +0100 | <int-e> | print "hello, world" raises few questions (except maybe, does it work when there's no paper in the printer?). The "goto 10" takes a bit of understanding. |
2021-12-16 07:55:58 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-12-16 07:56:08 +0100 | <EvanR> | yeah, if you leave off that critical first 10 |
2021-12-16 07:56:23 +0100 | <EvanR> | we're all screwed if you do that |
2021-12-16 07:56:39 +0100 | <int-e> | Well the 10 is confusing at first, too. |
2021-12-16 07:57:24 +0100 | <int-e> | The thing about learning programming as a teenager though is that it's just one of many confusing things in the world... it doesn't feel all that special. |
2021-12-16 08:00:42 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-12-16 08:02:34 +0100 | arahael | (~arahael@203.158.51.1) |
2021-12-16 08:03:26 +0100 | chele | (~chele@user/chele) |
2021-12-16 08:04:40 +0100 | <int-e> | EvanR: I used to write this kind of thing with `let`, but then I couldn't shadow `xs`, so I'd have xs', xs'' and eventually mix some of these up. This abuse of guards is actually convenient. |
2021-12-16 08:05:05 +0100 | <EvanR> | oh yeah |
2021-12-16 08:05:17 +0100 | <EvanR> | i hate prime, prime prime, etc |
2021-12-16 08:06:14 +0100 | <int-e> | the main downside is that the bindings become invisible to `where` |
2021-12-16 08:06:21 +0100 | <EvanR> | someone should invent a language or entire paradigm based on just replacing variables on assignment |
2021-12-16 08:06:53 +0100 | <int-e> | Rust kind of does that for things that can't be copied. |
2021-12-16 08:07:06 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 08:08:05 +0100 | img | (~img@user/img) |
2021-12-16 08:08:11 +0100 | steven1 | (~steven@172.92.136.203) |
2021-12-16 08:08:51 +0100 | <EvanR> | what's an example of a thing that can't be copied |
2021-12-16 08:11:05 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-12-16 08:11:55 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-12-16 08:12:51 +0100 | <EvanR> | the terminology must mean something specific in rust, maybe |
2021-12-16 08:15:04 +0100 | dcoutts_ | (~duncan@ip-185-104-136-51.ptr.icomera.net) |
2021-12-16 08:17:17 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) (Ping timeout: 240 seconds) |
2021-12-16 08:18:38 +0100 | <int-e> | EvanR: Meh it's non-intuitive because Rust cares a lot about tracking ownership of in-memory objects. So for example, you can't have two references to the same object that allow mutation; that's the basic example of something that can't be copied. |
2021-12-16 08:19:17 +0100 | <int-e> | It has a type-class-like system in the form of traits, and there's a Copy trait that only types that can be copied implement. |
2021-12-16 08:19:21 +0100 | <EvanR> | ok the reference can't be copied |
2021-12-16 08:19:28 +0100 | <EvanR> | not allowed |
2021-12-16 08:19:31 +0100 | phma_ | (phma@2001:5b0:210f:4b78:b1e:6610:21b4:b15b) (Read error: Connection reset by peer) |
2021-12-16 08:20:10 +0100 | <int-e> | Yeah, it's enforced by the compiler, part of the system that's responsible for Rust's advertised memory-safeness. |
2021-12-16 08:20:14 +0100 | int-e | shrugs. |
2021-12-16 08:20:18 +0100 | phma_ | (~phma@host-67-44-208-226.hnremote.net) |
2021-12-16 08:20:56 +0100 | <EvanR> | so you can copy that mutable object, you just have to have the pointer first |
2021-12-16 08:21:10 +0100 | <int-e> | This isn't the right channel to discuss it (also I'm still learning this, so I'm not good at explaining it yet) |
2021-12-16 08:21:27 +0100 | <EvanR> | fair |
2021-12-16 08:31:37 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-12-16 08:32:23 +0100 | featurebug108 | (~featurebu@49.205.122.91) |
2021-12-16 08:32:25 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-12-16 08:34:02 +0100 | <featurebug108> | Hi! I tried to do stack install on this project - https://github.com/grin-compiler/ghc-whole-program-compiler-project/tree/master/external-stg-inter… but I am getting this error - https://pastebin.com/HVzUFLBw . Any idea what the error is and how to fix it? |
2021-12-16 08:35:45 +0100 | Ferdirand | (~somebody@2001:4c78:2012:5000::2) (Ping timeout: 268 seconds) |
2021-12-16 08:37:24 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 08:37:29 +0100 | Ferdirand | (~somebody@2001:4c78:2012:5000::2) |
2021-12-16 08:38:59 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f0a9:34f0:2c07:30d5) |
2021-12-16 08:41:55 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds) |
2021-12-16 08:42:00 +0100 | featurebug108 | (~featurebu@49.205.122.91) (Quit: Leaving) |
2021-12-16 08:43:55 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 08:48:00 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) |
2021-12-16 08:48:55 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-12-16 08:56:46 +0100 | cosimone | (~user@93-47-229-223.ip115.fastwebnet.it) |
2021-12-16 08:59:07 +0100 | bahamas | (~lucian@86.120.77.115) |
2021-12-16 08:59:31 +0100 | <Hecate> | < Axman6> Hecate: isn't that soimething that pg_config can do for you? // I wish it did… :( :( :( |
2021-12-16 08:59:53 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-12-16 09:00:21 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 09:01:50 +0100 | michalz | (~michalz@185.246.204.104) |
2021-12-16 09:07:32 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 09:17:27 +0100 | iqubic` | (~user@2601:602:9502:c70:1ab:7e18:1540:e9a6) |
2021-12-16 09:17:44 +0100 | iqubic` | (~user@2601:602:9502:c70:1ab:7e18:1540:e9a6) (Remote host closed the connection) |
2021-12-16 09:17:44 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 09:20:07 +0100 | Akiva | (~Akiva@user/Akiva) |
2021-12-16 09:21:17 +0100 | iqubic | (~user@2601:602:9502:c70:3682:5ffe:e458:d665) (Ping timeout: 240 seconds) |
2021-12-16 09:22:22 +0100 | cosimone | (~user@93-47-229-223.ip115.fastwebnet.it) (Remote host closed the connection) |
2021-12-16 09:22:44 +0100 | iqubic | (~user@2601:602:9502:c70:1ab:7e18:1540:e9a6) |
2021-12-16 09:22:58 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2021-12-16 09:25:45 +0100 | max22- | (~maxime@2a01cb0883359800fd9f63ef34845b1d.ipv6.abo.wanadoo.fr) |
2021-12-16 09:27:41 +0100 | dcoutts_ | (~duncan@ip-185-104-136-51.ptr.icomera.net) (Ping timeout: 256 seconds) |
2021-12-16 09:29:14 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-12-16 09:30:05 +0100 | <YoungFrog> | I |
2021-12-16 09:35:51 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 09:39:31 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-12-16 09:40:09 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 09:41:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 09:41:56 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-12-16 09:44:32 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds) |
2021-12-16 09:45:09 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 09:47:26 +0100 | dwt_ | (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-12-16 09:47:44 +0100 | dwt_ | (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) |
2021-12-16 09:48:43 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 09:49:26 +0100 | cfricke | (~cfricke@user/cfricke) |
2021-12-16 09:49:30 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2021-12-16 09:51:22 +0100 | img | (~img@user/img) |
2021-12-16 09:52:08 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-12-16 09:52:35 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2021-12-16 09:53:39 +0100 | acidjnk | (~acidjnk@p200300d0c7271e9405040680e1e3c542.dip0.t-ipconnect.de) |
2021-12-16 09:55:19 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-12-16 09:55:36 +0100 | featurebug | (~featurebu@49.205.122.91) |
2021-12-16 09:57:28 +0100 | lavaman | (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
2021-12-16 09:57:57 +0100 | phma_ | phma |
2021-12-16 09:58:55 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 10:00:35 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2021-12-16 10:06:19 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-12-16 10:06:59 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:158b:cfc1:e7b3:d4ac) (Remote host closed the connection) |
2021-12-16 10:09:09 +0100 | steven1 | (~steven@172.92.136.203) (Quit: WeeChat 3.2) |
2021-12-16 10:10:07 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 250 seconds) |
2021-12-16 10:11:55 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2021-12-16 10:17:18 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-12-16 10:17:42 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-12-16 10:18:29 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) |
2021-12-16 10:19:26 +0100 | bahamas | (~lucian@86.120.77.115) (Quit: Lost terminal) |
2021-12-16 10:23:43 +0100 | ubert | (~Thunderbi@p200300ecdf1abb03cc2914e8ae945344.dip0.t-ipconnect.de) (Remote host closed the connection) |
2021-12-16 10:26:00 +0100 | Guest24 | (~Guest24@2a02:c7f:f716:ac00:195c:86b6:8540:d1a5) |
2021-12-16 10:27:59 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2021-12-16 10:29:12 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-12-16 10:32:30 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 10:38:44 +0100 | raghavgururajan | (9fd51d1ea8@user/raghavgururajan) (Remote host closed the connection) |
2021-12-16 10:40:27 +0100 | ishutin | (~ishutin@85-238-77-101.pool.digikabel.hu) (Ping timeout: 250 seconds) |
2021-12-16 10:41:56 +0100 | RiverNotHere | (~RiverNotH@cpe-104-172-51-133.socal.res.rr.com) |
2021-12-16 10:42:19 +0100 | ishutin | (~ishutin@78-131-74-101.pool.digikabel.hu) |
2021-12-16 10:43:03 +0100 | RiverNotHere | (~RiverNotH@cpe-104-172-51-133.socal.res.rr.com) (Client Quit) |
2021-12-16 10:48:35 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-12-16 10:48:53 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 10:49:41 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-12-16 10:53:02 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 260 seconds) |
2021-12-16 10:53:13 +0100 | Ainoretho | (~ypw@huji-132-64-244-111.xt.huji.ac.il) |
2021-12-16 10:54:59 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:c4a4:d039:7d:7f7e) |
2021-12-16 10:57:50 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 11:00:26 +0100 | mason0 | (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
2021-12-16 11:03:26 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 11:06:57 +0100 | tomku | (~tomku@user/tomku) (Read error: Connection reset by peer) |
2021-12-16 11:07:24 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 11:09:45 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2021-12-16 11:11:37 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) (Ping timeout: 240 seconds) |
2021-12-16 11:13:58 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 11:15:41 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-12-16 11:17:03 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2021-12-16 11:17:03 +0100 | Lord_of_Life_ | Lord_of_Life |
2021-12-16 11:18:45 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
2021-12-16 11:20:40 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2021-12-16 11:21:26 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 11:23:07 +0100 | tomku | (~tomku@user/tomku) |
2021-12-16 11:24:51 +0100 | forell | (~forell@user/forell) (Quit: ZNC - https://znc.in) |
2021-12-16 11:25:38 +0100 | forell | (~forell@user/forell) |
2021-12-16 11:27:27 +0100 | andjjj23 | (~irc@107.170.228.47) (Ping timeout: 250 seconds) |
2021-12-16 11:27:45 +0100 | andjjj23 | (~irc@107.170.228.47) |
2021-12-16 11:31:21 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2021-12-16 11:32:59 +0100 | leah2 | (~leah@vuxu.org) (Quit: trotz alledem!) |
2021-12-16 11:33:09 +0100 | leah2 | (~leah@vuxu.org) |
2021-12-16 11:33:09 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 11:33:11 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2021-12-16 11:33:30 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2021-12-16 11:37:53 +0100 | <merijn> | hmm, what's the way to go to run a megaparsec parser against a stream that's parsed by another megaparsec parser? |
2021-12-16 11:38:31 +0100 | <merijn> | I see I can define my own stream class, but the only way that works is if I produce a list or something and then parse that, which seems inefficient |
2021-12-16 11:47:10 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2021-12-16 11:50:06 +0100 | Guest24 | (~Guest24@2a02:c7f:f716:ac00:195c:86b6:8540:d1a5) (Quit: Client closed) |
2021-12-16 11:50:19 +0100 | <[exa]> | merijn: it should be able to consume anything as long as it has the class instances |
2021-12-16 11:50:47 +0100 | cheater | (~Username@user/cheater) |
2021-12-16 11:51:01 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 11:51:37 +0100 | <[exa]> | anyway, why would the list be inefficient? |
2021-12-16 11:55:38 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2021-12-16 11:56:20 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:c4a4:d039:7d:7f7e) (Remote host closed the connection) |
2021-12-16 11:56:32 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:9285:9698:be15:2e15) |
2021-12-16 11:57:03 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2021-12-16 11:57:22 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2021-12-16 11:58:25 +0100 | <merijn> | because it effectively ends up being two pass |
2021-12-16 11:58:39 +0100 | <merijn> | You parse the entire input and force the list in memory before you can run the other parser |
2021-12-16 11:59:02 +0100 | <merijn> | While I wanna use a megaparsec parser to lex the input into a stream of more usable stuff |
2021-12-16 11:59:12 +0100 | <merijn> | then parse that stream |
2021-12-16 11:59:38 +0100 | <[exa]> | (parse1 <$> parse2 input) doesn't fuse? |
2021-12-16 11:59:40 +0100 | <[exa]> | ._. |
2021-12-16 12:01:23 +0100 | <merijn> | [exa]: That case is to complex for me to make any predictions about whether it will or won't |
2021-12-16 12:04:07 +0100 | random | (~random@46.254.129.95) |
2021-12-16 12:04:11 +0100 | <Profpatsch> | Huh, I just noticed that Text.IO.readFile does not correctly handle UTF-8 Byte-Order marks? |
2021-12-16 12:04:14 +0100 | <[exa]> | can you model `parse2` as something like `parseTokenAndReturnRest` then fold on it? |
2021-12-16 12:04:16 +0100 | random | Guest2110 |
2021-12-16 12:04:27 +0100 | joo-_ | (~joo-_@fsf/member/joo--) (Quit: Lost terminal) |
2021-12-16 12:04:32 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds) |
2021-12-16 12:04:50 +0100 | joo-_ | (~joo-_@87-49-45-77-mobile.dk.customer.tdc.net) |
2021-12-16 12:04:50 +0100 | joo-_ | (~joo-_@87-49-45-77-mobile.dk.customer.tdc.net) (Changing host) |
2021-12-16 12:04:50 +0100 | joo-_ | (~joo-_@fsf/member/joo--) |
2021-12-16 12:05:02 +0100 | <[exa]> | Profpatsch: utf8 needs BOM? |
2021-12-16 12:05:45 +0100 | <Profpatsch> | [exa]: No, but Windows will prepend three bytes of BOM to their unicode files |
2021-12-16 12:05:57 +0100 | <Profpatsch> | So I’d expect Text.IO to know about that |
2021-12-16 12:05:58 +0100 | <Guest2110> | hey guys |
2021-12-16 12:06:02 +0100 | <Profpatsch> | Maybe I’m wrong |
2021-12-16 12:06:05 +0100 | <Guest2110> | can anyone lend a hand with Generics |
2021-12-16 12:06:08 +0100 | <Profpatsch> | I’ll just strip them I guess |
2021-12-16 12:06:09 +0100 | <Guest2110> | is this possible? |
2021-12-16 12:06:10 +0100 | <Guest2110> | https://pastebin.com/7egxTXy0 |
2021-12-16 12:06:55 +0100 | <[exa]> | Profpatsch: check out GHC.IO.Encoding, but generally I wouldn't expect Text to really handle that |
2021-12-16 12:06:56 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2021-12-16 12:08:25 +0100 | <Profpatsch> | I mean to be sure it’s a bit specific to Windows madness |
2021-12-16 12:08:35 +0100 | <Profpatsch> | & Text.dropWhile (== byteOrderMark) |
2021-12-16 12:08:38 +0100 | <Profpatsch> | should fix it |
2021-12-16 12:08:49 +0100 | <Profpatsch> | let byteOrderMark = '\65279' |
2021-12-16 12:09:39 +0100 | <[exa]> | yeah Windows doesn't really help there. :] |
2021-12-16 12:10:17 +0100 | <[exa]> | Guest2110: you might be able to find `everywhere` function, which sounds like what you want |
2021-12-16 12:11:14 +0100 | <merijn> | Profpatsch: UTF-8 BOM is an insane MS atrocity and the moron who came up with that should be shot |
2021-12-16 12:11:58 +0100 | <[exa]> | Guest2110: highly suggest you have a look at SYB paper. The combination with classes should work out too, with a bit of care. |
2021-12-16 12:12:25 +0100 | <[exa]> | merijn: thanks, I didn't want to say this first. :D |
2021-12-16 12:12:45 +0100 | <merijn> | Profpatsch: Check if the new utf-8 based text RC supports it? |
2021-12-16 12:13:21 +0100 | <Guest2110> | [exa]: I'll look into `everywhere`, thanks! |
2021-12-16 12:13:26 +0100 | ByronJohnson | (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 268 seconds) |
2021-12-16 12:14:18 +0100 | <Guest2110> | [exa]: ah, that's different from what I need, `everywhere` is `a -> a` and I don't have an `a` available, just need to extract some metadata from a type |
2021-12-16 12:14:31 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2021-12-16 12:15:23 +0100 | mmhat | (~mmh@55d46fe9.access.ecotel.net) |
2021-12-16 12:15:34 +0100 | mason0 | (~bc8147f2@cerf.good1.com) |
2021-12-16 12:17:14 +0100 | <[exa]> | Guest2110: yes there are other functions for that, I just don't remember the precise names |
2021-12-16 12:17:26 +0100 | <Guest2110> | [exa]: on it, thanks a lot again! |
2021-12-16 12:19:01 +0100 | <[exa]> | Guest2110: you might like "everything", only the type is a bit obscure |
2021-12-16 12:19:25 +0100 | <[exa]> | it's basically the one that works with `mkQ` or `makeQuery` from the SYB paper, not sure what was the precise name anymore |
2021-12-16 12:19:39 +0100 | <[exa]> | but basically you can have stuff like `everything + ( |
2021-12-16 12:19:39 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 12:19:45 +0100 | <[exa]> | oh snap |
2021-12-16 12:20:10 +0100 | <Guest2110> | [exa]: I need to get my reading glasses because there's some huge gaps to be filled haha |
2021-12-16 12:20:17 +0100 | <[exa]> | `everything (+) (\MyDataPiece x -> intval x) myStruct` |
2021-12-16 12:20:41 +0100 | <[exa]> | (very roughly) |
2021-12-16 12:22:41 +0100 | <[exa]> | the paper here https://ldpreload.com/p/syb/hmap.pdf , getting roughly to sections ~3.3 to 4.1 should solve your problem |
2021-12-16 12:23:25 +0100 | joo-_ | (~joo-_@fsf/member/joo--) (Quit: leaving) |
2021-12-16 12:23:26 +0100 | <[exa]> | + Typeable and Data instances are generated by GHC (you just need to write the `deriving` for it |
2021-12-16 12:23:33 +0100 | <[exa]> | ) |
2021-12-16 12:23:38 +0100 | joo-_ | (~joo-_@fsf/member/joo--) |
2021-12-16 12:26:17 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 240 seconds) |
2021-12-16 12:27:16 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 12:27:56 +0100 | Guest6030 | (~pyon@2800:200:e840:42c7:c75:c5f:d434:a5f1) (Quit: WeeChat 3.3) |
2021-12-16 12:28:21 +0100 | unyu | (~pyon@user/pyon) |
2021-12-16 12:30:38 +0100 | <sprout> | https://pasteboard.co/TJarPW9Gt0Zz.png <- AoC, day 16, task 2. egel |
2021-12-16 12:31:53 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2021-12-16 12:32:43 +0100 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
2021-12-16 12:33:19 +0100 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Client Quit) |
2021-12-16 12:37:26 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 12:41:54 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2021-12-16 12:42:11 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-12-16 12:42:13 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-12-16 12:43:45 +0100 | dsrt^ | (~dsrt@98.188.240.142) (Ping timeout: 256 seconds) |
2021-12-16 12:45:15 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 12:46:02 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-12-16 12:48:04 +0100 | cheater | (~Username@user/cheater) (Quit: BitchX: use it, it makes you bulletproof) |
2021-12-16 12:51:58 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
2021-12-16 12:52:13 +0100 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection) |
2021-12-16 12:54:37 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-12-16 12:55:48 +0100 | cheater | (~Username@user/cheater) |
2021-12-16 12:58:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 12:59:08 +0100 | earendel | (uid498179@user/earendel) |
2021-12-16 12:59:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:00:28 +0100 | n3t | (~n3t@s45.mydevil.net) (Changing host) |
2021-12-16 13:00:28 +0100 | n3t | (~n3t@user/n3t) |
2021-12-16 13:02:55 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 13:06:02 +0100 | cosimone | (~user@93-47-229-223.ip115.fastwebnet.it) |
2021-12-16 13:10:10 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-12-16 13:10:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:11:54 +0100 | asm | (~alexander@burner.asm89.io) (Changing host) |
2021-12-16 13:11:54 +0100 | asm | (~alexander@user/asm) |
2021-12-16 13:13:38 +0100 | __monty__ | (~toonn@user/toonn) |
2021-12-16 13:13:57 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-12-16 13:14:33 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 13:14:56 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-12-16 13:15:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 13:16:02 +0100 | jippiedoe | (~david@145.107.128.124) |
2021-12-16 13:16:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:16:31 +0100 | acidjnk | (~acidjnk@p200300d0c7271e9405040680e1e3c542.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2021-12-16 13:16:33 +0100 | fef | (~thedawn@user/thedawn) |
2021-12-16 13:16:58 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2021-12-16 13:17:20 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) |
2021-12-16 13:18:44 +0100 | acidjnk | (~acidjnk@p200300d0c7271e942878552e9699ebb2.dip0.t-ipconnect.de) |
2021-12-16 13:19:33 +0100 | kuribas | (~user@ptr-25vy0i8a8smuqmxkytj.18120a2.ip6.access.telenet.be) |
2021-12-16 13:23:01 +0100 | somkls^ | (~somkls@wsip-98-188-240-142.mc.at.cox.net) |
2021-12-16 13:25:37 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2021-12-16 13:25:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-12-16 13:26:59 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:27:53 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-12-16 13:29:05 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds) |
2021-12-16 13:31:21 +0100 | pavonia | (~user@user/siracusa) |
2021-12-16 13:31:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 13:32:30 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 13:32:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:34:16 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-12-16 13:37:44 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-12-16 13:38:02 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 13:38:23 +0100 | Ainoretho | (~ypw@huji-132-64-244-111.xt.huji.ac.il) (Quit: WeeChat 3.3) |
2021-12-16 13:38:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:42:38 +0100 | pfurla_ | (~pfurla@2804:18:5827:38:71a1:6773:333f:330d) |
2021-12-16 13:43:39 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-12-16 13:44:19 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 13:44:23 +0100 | pfurla | (~pfurla@177.25.189.1) (Ping timeout: 256 seconds) |
2021-12-16 13:44:27 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-12-16 13:47:47 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds) |
2021-12-16 13:49:29 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-12-16 13:50:14 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 13:51:41 +0100 | cadro | (~cadro@65.0.broadband17.iol.cz) |
2021-12-16 13:52:05 +0100 | <dminuoso> | sprout: Can you provide some meaningful example where eager combinator rewriting offers an advantage over say what Haskell has? |
2021-12-16 13:52:44 +0100 | <cadro> | I'm working on a multi-threaded program, and one of the threads' computation halts unexpectedly. I suspect it's blocked on a blackhole (as I'm doing some knot tying and clearly getting it wrong). How can I figure out what it's waiting for? |
2021-12-16 13:52:57 +0100 | sleblanc | (~sleblanc@user/sleblanc) (Ping timeout: 240 seconds) |
2021-12-16 13:53:18 +0100 | <cadro> | "halts" as in "doesn't proceed" (but no error message) |
2021-12-16 13:53:18 +0100 | <sprout> | it's more predictable. sometimes haskell programs explode unexpectedy. and the other is that I can abuse the predicatibility for say, threads which hold on to a lock |
2021-12-16 13:53:34 +0100 | <sprout> | when the lock goes out of scope the lock is released |
2021-12-16 13:53:43 +0100 | <dminuoso> | cadro: If you reenter a black hole, the RTS should immediately exit and produce a diagnostic. |
2021-12-16 13:54:03 +0100 | <hpc> | dminuoso: in the threaded runtime it doesn't, because another thread can potentially break the loop |
2021-12-16 13:54:14 +0100 | <dminuoso> | hpc: Oh really? |
2021-12-16 13:54:26 +0100 | <hpc> | also because it could just be two threads entering the same thunk |
2021-12-16 13:54:57 +0100 | <hpc> | try compiling a loop normally and with -threaded |
2021-12-16 13:55:09 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2021-12-16 13:55:10 +0100 | puke | (~puke@user/puke) (Remote host closed the connection) |
2021-12-16 13:55:28 +0100 | puke | (~puke@user/puke) |
2021-12-16 13:55:53 +0100 | <dminuoso> | cadro: You could run from GHCI, set -fbreak-on-error, and run using `:trace`. Then you can send SIGINT via C-c and then use GHCi to explore? |
2021-12-16 13:56:07 +0100 | <dminuoso> | That might give you an indication of where you are and how you got to that |
2021-12-16 13:56:13 +0100 | <dminuoso> | Just a thought |
2021-12-16 13:56:23 +0100 | <hpc> | hmm, except when i try it now i can't get it to stop printing <<loop>> |
2021-12-16 13:56:36 +0100 | <hpc> | maybe i am misrembering, or it's changed "recently" |
2021-12-16 13:56:58 +0100 | <cadro> | dminuoso: hmm I might try that, although I'm not particularly fond of this because it'll take me a while to run this behemoth from GHCI... |
2021-12-16 13:56:58 +0100 | <geekosaur> | behavior varies per release ime |
2021-12-16 13:57:26 +0100 | <hpc> | i also just did print (let x = x +1 in x), so maybe that's too trivial |
2021-12-16 13:57:26 +0100 | <geekosaur> | -fobject-code? although that might impact the information you get from breakpoints |
2021-12-16 13:57:50 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 260 seconds) |
2021-12-16 13:59:15 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2021-12-16 13:59:56 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2021-12-16 14:00:30 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 14:03:01 +0100 | <dminuoso> | hpc: But it seems to make sense now that I think about it. |
2021-12-16 14:03:08 +0100 | <dminuoso> | A different thread should be blocked |
2021-12-16 14:03:20 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-12-16 14:04:17 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 240 seconds) |
2021-12-16 14:06:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-12-16 14:07:12 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 14:08:17 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds) |
2021-12-16 14:10:13 +0100 | max22- | (~maxime@2a01cb0883359800fd9f63ef34845b1d.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds) |
2021-12-16 14:12:27 +0100 | iqubic | (~user@2601:602:9502:c70:1ab:7e18:1540:e9a6) (Remote host closed the connection) |
2021-12-16 14:13:15 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 14:15:25 +0100 | ByronJohnson | (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) |
2021-12-16 14:15:41 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 14:18:23 +0100 | featurebug | (~featurebu@49.205.122.91) (Ping timeout: 256 seconds) |
2021-12-16 14:19:57 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds) |
2021-12-16 14:20:11 +0100 | vpan | (~0@212.117.1.172) |
2021-12-16 14:21:26 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-12-16 14:25:51 +0100 | <merijn> | There was no "strong" combinator in base, was there? |
2021-12-16 14:26:55 +0100 | iqubic | (~user@2601:602:9502:c70:c1df:76dd:a2c3:7b85) |
2021-12-16 14:29:09 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds) |
2021-12-16 14:29:37 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 14:35:11 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 14:37:04 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2021-12-16 14:39:27 +0100 | cadro | (~cadro@65.0.broadband17.iol.cz) (Quit: Client closed) |
2021-12-16 14:42:36 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) (Quit: Reconnecting) |
2021-12-16 14:42:45 +0100 | jippiedoe | (~david@145.107.128.124) (Ping timeout: 256 seconds) |
2021-12-16 14:42:48 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2021-12-16 14:43:58 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2021-12-16 14:49:20 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-12-16 14:49:57 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-12-16 14:51:33 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-12-16 14:53:04 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 14:56:10 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-12-16 14:56:13 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2021-12-16 14:58:07 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2021-12-16 14:58:08 +0100 | <dminuoso> | merijn: What type signature would that have? |
2021-12-16 14:58:35 +0100 | <merijn> | dminuoso: "Applicative f => (f a, b) -> f (a, b)" |
2021-12-16 14:59:24 +0100 | <dminuoso> | merijn: Why does this need Applicative? |
2021-12-16 14:59:39 +0100 | ph88 | (~ph88@ip5f5af068.dynamic.kabel-deutschland.de) |
2021-12-16 14:59:42 +0100 | <dminuoso> | It seems this would work for all Functor |
2021-12-16 14:59:44 +0100 | <merijn> | oh, I guess Functor is enough |
2021-12-16 15:00:56 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-12-16 15:01:39 +0100 | <iqubic> | f (fa, b) = fmap (\x -> (x, b)) fa, right? |
2021-12-16 15:01:49 +0100 | <dminuoso> | Yes. |
2021-12-16 15:02:32 +0100 | <merijn> | iqubic: Sure, but I need it so often that a convenient name would be nice |
2021-12-16 15:02:49 +0100 | <iqubic> | I'm not sure what you should call it. |
2021-12-16 15:02:49 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 15:03:06 +0100 | <merijn> | Well, strong, since that's the CT name I know for it :p |
2021-12-16 15:04:42 +0100 | curiousgay | (~curiousga@77-120-141-90.kha.volia.net) |
2021-12-16 15:05:14 +0100 | xsperry | (~xs@user/xsperry) (Remote host closed the connection) |
2021-12-16 15:05:21 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-12-16 15:05:25 +0100 | <iqubic> | Strong is good. If you have Sum types, you can use Choice. |
2021-12-16 15:05:51 +0100 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2021-12-16 15:05:52 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Remote host closed the connection) |
2021-12-16 15:06:14 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2021-12-16 15:06:14 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Client Quit) |
2021-12-16 15:06:29 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2021-12-16 15:07:26 +0100 | <dminuoso> | iqubic: The term strength is used because your `f` is the canonical categorical strength that all functors have. |
2021-12-16 15:07:39 +0100 | <dminuoso> | or tensorials srength, rather |
2021-12-16 15:07:42 +0100 | <dminuoso> | gah. |
2021-12-16 15:07:44 +0100 | <dminuoso> | tensorial strength |
2021-12-16 15:07:51 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 245 seconds) |
2021-12-16 15:08:22 +0100 | <iqubic> | I see. All I know is that the profunctor package has Strong and Choice as things. And those can be used me make lenses and prims. jle` has a blog post on it. |
2021-12-16 15:08:32 +0100 | <dminuoso> | yeah, the name of Strong is derived from this as well |
2021-12-16 15:09:08 +0100 | <iqubic> | s/things/typeclasses with a Profuctor constraint/ |
2021-12-16 15:09:45 +0100 | max22- | (~maxime@2a01cb0883359800742a76b71025b974.ipv6.abo.wanadoo.fr) |
2021-12-16 15:10:54 +0100 | <raehik> | I have a type that lets me decide on the inner type for a functor: data Apply a f = Apply (f a) |
2021-12-16 15:11:11 +0100 | <iqubic> | Seems reasonable. |
2021-12-16 15:11:15 +0100 | <raehik> | Is there something like that in a library or in base? I can't Hoogle it for some reason |
2021-12-16 15:14:26 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-12-16 15:16:58 +0100 | <dminuoso> | raehik: Mmm, one variant of is is prominently found in lens |
2021-12-16 15:17:10 +0100 | <dminuoso> | type Lens s t a b = forall f . Functor f => (a -> f b) -> s -> f t |
2021-12-16 15:17:24 +0100 | xsperry | (~xs@user/xsperry) |
2021-12-16 15:17:33 +0100 | somkls^ | (~somkls@wsip-98-188-240-142.mc.at.cox.net) (Remote host closed the connection) |
2021-12-16 15:17:41 +0100 | <dminuoso> | So this thing is polymorphic over any Functor, and in most instances the consumer would pick either Const or Identity |
2021-12-16 15:18:43 +0100 | jippiedoe | (~david@145.89.5.239) |
2021-12-16 15:18:57 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 15:20:37 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 15:20:57 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 15:21:58 +0100 | <raehik> | dminuoso: right, I think I see that. I'll look around the lens docs. probably will rename to be problem specific first (espec. if the thing it generalizes to is lenses) |
2021-12-16 15:22:22 +0100 | <dminuoso> | raehik: Something like Apply I havent seen yet, and Im not sure this would yield much benefit. |
2021-12-16 15:22:47 +0100 | <raehik> | indeed it was just a type that I needed (I think) |
2021-12-16 15:22:55 +0100 | <dminuoso> | Mind my asking, what for? |
2021-12-16 15:23:01 +0100 | <raehik> | I want a list of functors over a given type |
2021-12-16 15:23:16 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 245 seconds) |
2021-12-16 15:23:17 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-12-16 15:23:51 +0100 | <dminuoso> | Sure, but why do you think you need a separate data type for that? |
2021-12-16 15:24:04 +0100 | <raehik> | this way lets me use `Apply a` with vinyl like `Rec (Apply String) '[Identity, Const ()]` |
2021-12-16 15:24:16 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2021-12-16 15:24:16 +0100 | <merijn> | ok...I don't understand how to implement megaparsec's TraversableStream... |
2021-12-16 15:24:19 +0100 | <dminuoso> | % f :: Functor f => [f a] -> Int; f = undefined |
2021-12-16 15:24:19 +0100 | <yahb> | dminuoso: |
2021-12-16 15:24:51 +0100 | <dminuoso> | raehik: Okay I cant help any further then. Have no vinyl knowledge whatsoever. |
2021-12-16 15:25:02 +0100 | <merijn> | Anyone got any clues? |
2021-12-16 15:25:46 +0100 | <raehik> | dminuoso: I don't need vinyl! only picked it up because it seemed to fit. the best solution for me would be the simplest |
2021-12-16 15:25:47 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 252 seconds) |
2021-12-16 15:26:04 +0100 | <dminuoso> | raehik: What is the general problem you are trying to solve? |
2021-12-16 15:26:28 +0100 | <dminuoso> | vinyl seems like quite an extreme hammer if you dont otherwise want it precisely because of what it can do.. |
2021-12-16 15:26:49 +0100 | <raehik> | I'd like to define a list of different functors over a given type, so I can strip them off one by one (and potentially change the concrete type) |
2021-12-16 15:27:14 +0100 | <dminuoso> | "list of different functors over a given type" |
2021-12-16 15:27:30 +0100 | <dminuoso> | As in '[[], Identity, IO] ? |
2021-12-16 15:28:24 +0100 | <raehik> | yeah. though the usage is specifically for defining some "metadata" on `a`, so the functors will be mostly record types that may or may not use a |
2021-12-16 15:28:39 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 15:29:04 +0100 | <dminuoso> | I see. |
2021-12-16 15:29:18 +0100 | <dminuoso> | So roughly '[Tagged "foo", Tagged "bar", Tagged "quux"] ? |
2021-12-16 15:29:19 +0100 | <raehik> | My original solution was to nest them. But that means ordering them in a certain way, made something a little awkward |
2021-12-16 15:29:33 +0100 | burnsidesLlama | (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
2021-12-16 15:30:17 +0100 | <raehik> | perhaps? I need to check what Tagged is |
2021-12-16 15:30:52 +0100 | <dminuoso> | % newtype Tagged (t :: k) a = Tagged { unTagged :: a } |
2021-12-16 15:30:52 +0100 | <yahb> | dminuoso: |
2021-12-16 15:31:23 +0100 | <dminuoso> | Anyway, this is all too sketchy and not clear to me |
2021-12-16 15:32:35 +0100 | <raehik> | thank you very much for the help, it is sketchy to me too hah |
2021-12-16 15:33:34 +0100 | <raehik> | fundamentally I want to go from having to nest functors on a given type a to having a "flat" list of them instead |
2021-12-16 15:34:29 +0100 | <dminuoso> | Oh. |
2021-12-16 15:34:31 +0100 | <raehik> | nesting them was easy, I just wrote my "metadata" functors to have an "inner metadata" field. but it's not ideal |
2021-12-16 15:34:44 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Quit: Leaving) |
2021-12-16 15:35:10 +0100 | <raehik> | I figured with a list of functors over a, I could strip any one in any order (and it would do something to some type outside the list) |
2021-12-16 15:35:16 +0100 | <dminuoso> | What kind of metadata functors are these? |
2021-12-16 15:35:52 +0100 | <raehik> | hope you don't mind if I link code https://github.com/raehik/bytepatch/blob/main/src/BytePatch/Patch/Align.hs#L16-L21 |
2021-12-16 15:36:00 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-12-16 15:36:00 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-12-16 15:36:00 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-12-16 15:36:24 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2021-12-16 15:36:30 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) |
2021-12-16 15:36:37 +0100 | <raehik> | I have a patch over some type `a` (ByteString, Text). I have some checks to perform before patching, they need to know `a` |
2021-12-16 15:36:46 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2021-12-16 15:36:56 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 15:38:23 +0100 | <dminuoso> | raehik: My very first intution is: why not simply have a uniform metadata type, such that you can simply have `data D a = D { metadata :: [Metadata], payload :: a }` |
2021-12-16 15:39:12 +0100 | <dminuoso> | But, I think Im beginning to understand the problem domain here |
2021-12-16 15:39:25 +0100 | max22- | (~maxime@2a01cb0883359800742a76b71025b974.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2021-12-16 15:40:35 +0100 | <dminuoso> | Ah heh, you have that already. |
2021-12-16 15:40:39 +0100 | <dminuoso> | That's your `Patch` |
2021-12-16 15:40:59 +0100 | <dminuoso> | Or `Pos` |
2021-12-16 15:41:07 +0100 | <raehik> | the code might be weird right now because I got halfway thru the meta rewrite xd |
2021-12-16 15:41:26 +0100 | <dminuoso> | And I can also see why you're exploring vinyl. |
2021-12-16 15:41:52 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 268 seconds) |
2021-12-16 15:42:00 +0100 | <dminuoso> | You want to have these sort of anonyms sum types indexed by attached metadata, where you can slice out a piece of metadata, and everything should just work out |
2021-12-16 15:42:01 +0100 | <raehik> | I liked being able to pick and mix metadatas. the intent is to have a patch with a bunch of metadata, strip them off, and end up with a patch with '[] meta |
2021-12-16 15:42:02 +0100 | <dminuoso> | Right? |
2021-12-16 15:42:16 +0100 | <dminuoso> | A kind of.. |
2021-12-16 15:42:28 +0100 | <raehik> | record! |
2021-12-16 15:42:33 +0100 | <raehik> | maybe? :) |
2021-12-16 15:42:54 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-12-16 15:43:34 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2021-12-16 15:43:44 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-12-16 15:44:17 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-12-16 15:44:42 +0100 | <raehik> | dminuoso: to your above msg I think so yes. I may want to tag them though if it makes sense with this design, so vinyl looked even nicer |
2021-12-16 15:44:45 +0100 | <dminuoso> | align :: forall (mss :: [Meta], ms :: [Meta]). mss ~ ms `Sans` MetaPos => Pos 'RelSeek ms -> Either Error mss |
2021-12-16 15:44:49 +0100 | <dminuoso> | raehik: ^- something along these lines? |
2021-12-16 15:45:04 +0100 | <dminuoso> | I mean it's just something sketchy with no regard of implementability |
2021-12-16 15:45:31 +0100 | <dminuoso> | Oops hold on |
2021-12-16 15:45:34 +0100 | <dminuoso> | I missed something |
2021-12-16 15:45:52 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 15:46:11 +0100 | <dminuoso> | align :: forall s (mss :: [Meta], ms :: [Meta]). (SeekRep s ~ Natural, mss ~ ms `Sans` MetaPos s) => Pos 'RelSeek ms -> Either Error (Pos s mss) |
2021-12-16 15:46:14 +0100 | <dminuoso> | Simplified a bit |
2021-12-16 15:46:27 +0100 | <raehik> | yesss that's exactly it. I want to have a big ol type-level record that I can rip types out of one by one |
2021-12-16 15:46:53 +0100 | <dminuoso> | Can vinyl express this "ripping it out"? |
2021-12-16 15:47:17 +0100 | <raehik> | I believe so, I'm playing with it & having more success than my tries with HList/type-level lists |
2021-12-16 15:48:52 +0100 | <raehik> | there's RecSubset which only works when vinyl can see the record you're ripping out does exist in the argument |
2021-12-16 15:48:54 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-12-16 15:49:22 +0100 | <dminuoso> | raehik: But yeah, I would simply have a uniform `Metadata` type |
2021-12-16 15:49:46 +0100 | <raehik> | what do you mean by uniform? |
2021-12-16 15:49:54 +0100 | <dminuoso> | That would greatly simplify the surroundings (and keep myself sane), at the cost of not proving correct metadata has been supplied or consumed. |
2021-12-16 15:49:59 +0100 | <raehik> | right, yes |
2021-12-16 15:50:17 +0100 | <dminuoso> | Well, a big honking `data Metadata = MetaPos ... | MetaThing ... | MetaOther ...` |
2021-12-16 15:50:36 +0100 | <dminuoso> | And then just assume you have `[Metadata]` stateful operation |
2021-12-16 15:50:59 +0100 | <raehik> | it's largely because this started as a JSON-friendly representation and some meta belonged with one type, other with another type |
2021-12-16 15:51:24 +0100 | <dminuoso> | raehik: By the way, why do you want to *remove* metadata? |
2021-12-16 15:51:34 +0100 | <raehik> | thanks awfully much dminuoso this is very helpful |
2021-12-16 15:51:41 +0100 | <dminuoso> | Is that just to reduce memory residency? Or is there a different reason? |
2021-12-16 15:52:17 +0100 | <raehik> | Just for clarity. It means I can prepare the patch before applying, and know that it's "safe" to apply (or it's been processed) |
2021-12-16 15:52:58 +0100 | <raehik> | like one set of metadata tries to convert the patch into a binary representation (so Text goes to UTF-8 bytes with a null term) |
2021-12-16 15:53:21 +0100 | jespada | (~jespada@87.74.33.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-12-16 15:53:22 +0100 | <raehik> | I could do that during the patch or I could prepare it before. it's all a big hobby thing that grew from an actually useful tool |
2021-12-16 15:53:49 +0100 | jespada | (~jespada@87.74.33.157) |
2021-12-16 15:54:01 +0100 | <dminuoso> | So this is just my personal experience. I think when you try to assert your program has been constructed correctly in the type system, you invest so much time in finding type level trickeries, end up with completely rubbish diagnostics on the slightest of typos, often to assert something simple as `Ensure I dont write `foo >> bar` instead of `bar >> foo`. |
2021-12-16 15:54:02 +0100 | <raehik> | (metadata might not be the right word) |
2021-12-16 15:54:03 +0100 | max22- | (~maxime@2a01cb0883359800e979b10b27a72e14.ipv6.abo.wanadoo.fr) |
2021-12-16 15:54:19 +0100 | <dminuoso> | That it seems that people sometimes lose track of their goals. |
2021-12-16 15:54:49 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-12-16 15:54:54 +0100 | <dminuoso> | For our programs, I ended up throwing most type level trickeries away, and simply reengineering the program structure, so that validating correct program construction is a matter of looking at say 3 lines |
2021-12-16 15:55:11 +0100 | <raehik> | yeah I've certainly had that for some projects |
2021-12-16 15:55:26 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 15:55:26 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 15:56:09 +0100 | <raehik> | I can see where the extra type safety could be discarded and everything would work otherwise the same now |
2021-12-16 15:56:35 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:9285:9698:be15:2e15) (Ping timeout: 252 seconds) |
2021-12-16 15:56:49 +0100 | <raehik> | perhaps I go back to that, *then* attempt to split everything up into layers again |
2021-12-16 15:57:20 +0100 | <dminuoso> | Your choice, Im not trying to sway you |
2021-12-16 15:57:34 +0100 | <zero> | is there a good reason we can't eta reduce one definition of a function on a specific pattern match and not on others? |
2021-12-16 15:57:50 +0100 | <dminuoso> | But given the size or your project, I think engineering overkill is the right term here. |
2021-12-16 15:58:41 +0100 | <mason0> | @hoogle (a, b, c) -> a |
2021-12-16 15:58:42 +0100 | <lambdabot> | Data.Tuple.Utils fst3 :: (a, b, c) -> a |
2021-12-16 15:58:42 +0100 | <lambdabot> | Data.Tuple.Extra fst3 :: (a, b, c) -> a |
2021-12-16 15:58:42 +0100 | <lambdabot> | Extra fst3 :: (a, b, c) -> a |
2021-12-16 15:58:50 +0100 | <mason0> | which one should I use? |
2021-12-16 15:59:06 +0100 | <dminuoso> | mason0: Id just write mine on the spot. |
2021-12-16 15:59:13 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f0a9:34f0:2c07:30d5) (Quit: WeeChat 2.8) |
2021-12-16 15:59:14 +0100 | <dminuoso> | Or rather, I do. :) |
2021-12-16 15:59:19 +0100 | <mason0> | I did as well :P |
2021-12-16 15:59:33 +0100 | <mason0> | named it the same too |
2021-12-16 15:59:37 +0100 | <mason0> | @hoogle (a, b, c) -> c |
2021-12-16 15:59:38 +0100 | <lambdabot> | Data.Tuple.Utils thd3 :: (a, b, c) -> c |
2021-12-16 15:59:38 +0100 | <lambdabot> | Data.Tuple.Extra thd3 :: (a, b, c) -> c |
2021-12-16 15:59:38 +0100 | <lambdabot> | Extra thd3 :: (a, b, c) -> c |
2021-12-16 15:59:53 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 252 seconds) |
2021-12-16 15:59:58 +0100 | <kuribas> | raehik: You could more simply use Maybe fields. |
2021-12-16 16:00:09 +0100 | <kuribas> | Then instead of removing fields, just set them to Nothing. |
2021-12-16 16:00:12 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:66c1:82a7:41b7:a81d) |
2021-12-16 16:00:18 +0100 | <dminuoso> | zero: This is a good question. |
2021-12-16 16:00:39 +0100 | <dminuoso> | And at times I've wondered myself |
2021-12-16 16:00:50 +0100 | <mason0> | could we write generic fst, snd, etc functions, that would work on any tuple size? lens somehow manages to do it |
2021-12-16 16:01:13 +0100 | <mason0> | but I'm not sure how |
2021-12-16 16:01:16 +0100 | <dminuoso> | zero: The one thought that comes to mind, perhaps this has subtle implications on WHNF. |
2021-12-16 16:01:17 +0100 | <raehik> | mason0: lens just has a ton of instances for large tuples xD |
2021-12-16 16:01:37 +0100 | <dminuoso> | zero: Recall how `f pat pat = z` has a different meaning from `p pat = \pat -> z` |
2021-12-16 16:01:39 +0100 | <janus> | mason0: i like 'extra' because it is made by Neil Mitchell which is super trustworthy |
2021-12-16 16:01:40 +0100 | <mason0> | just manually writing typeclass instances up to supported tuple length? |
2021-12-16 16:01:42 +0100 | <janus> | @package extra |
2021-12-16 16:01:42 +0100 | <lambdabot> | https://hackage.haskell.org/package/extra |
2021-12-16 16:01:56 +0100 | <dminuoso> | zero: So perhaps there's a connection here. |
2021-12-16 16:02:02 +0100 | acidjnk | (~acidjnk@p200300d0c7271e942878552e9699ebb2.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2021-12-16 16:02:02 +0100 | <janus> | mason0: it has many other useful functions you're likely to need |
2021-12-16 16:02:21 +0100 | <raehik> | kuribas: yep, thanks. it was convenient to structure it all in a layer-based approach but the same could be done with a bunch of Maybes |
2021-12-16 16:02:23 +0100 | <mason0> | janus, okay! |
2021-12-16 16:02:30 +0100 | <dminuoso> | mason0: Lens just wrote them out one by one. |
2021-12-16 16:02:39 +0100 | <dminuoso> | And stuffed it into a typeclass. |
2021-12-16 16:02:57 +0100 | <dminuoso> | https://hackage.haskell.org/package/lens-5.1/docs/Control-Lens-Combinators.html#t:Each |
2021-12-16 16:03:10 +0100 | <dminuoso> | Note how they only support tuples up to 9 elements |
2021-12-16 16:03:21 +0100 | <raehik> | oh that's baby tuples. I've seen instances for like 40 LOL |
2021-12-16 16:03:24 +0100 | <janus> | some people will judge you for using lens. better avoid it and you won't have to fight them |
2021-12-16 16:03:30 +0100 | <mason0> | a bit primitive, but maybe fst and snd should have been written like that as well |
2021-12-16 16:03:50 +0100 | <dminuoso> | Perhaps, indeed. |
2021-12-16 16:04:44 +0100 | <dminuoso> | mason0: sadly you'd have to have separate typeclasses. So you'd have one Fst, one Snd... |
2021-12-16 16:05:00 +0100 | <dminuoso> | Because the lens-style implementation wouldn't work for actual `fst` or `snd` |
2021-12-16 16:05:05 +0100 | <dminuoso> | At least not in a nice way |
2021-12-16 16:05:24 +0100 | <dminuoso> | % (1,) ^? _3 |
2021-12-16 16:05:24 +0100 | <yahb> | dminuoso: ; <interactive>:157:1: error:; * Could not deduce (Num t0); from the context: (Num t, Field3 (t2 -> (t, t2)) (t2 -> (t, t2)) a a); bound by the inferred type for `it':; forall {t} {t2} {a}. (Num t, Field3 (t2 -> (t, t2)) (t2 -> (t, t2)) a a) => Maybe a; at <interactive>:157:1-10; The type variable `t0' is ambiguous; * In the ambiguity check for the in |
2021-12-16 16:05:26 +0100 | <dminuoso> | % (1,2) ^? _3 |
2021-12-16 16:05:26 +0100 | <yahb> | dminuoso: ; <interactive>:158:1: error:; * Could not deduce (Num a0); from the context: (Num a, Num b, Field3 (a, b) (a, b) a1 a1); bound by the inferred type for `it':; forall {a} {b} {a1}. (Num a, Num b, Field3 (a, b) (a, b) a1 a1) => Maybe a1; at <interactive>:158:1-11; The type variable `a0' is ambiguous; * In the ambiguity check for the inferred type for ` |
2021-12-16 16:05:28 +0100 | <dminuoso> | Uh |
2021-12-16 16:06:05 +0100 | <dminuoso> | ACtually even lens does this with Field1, Field2, Field3, Field4, Field5... |
2021-12-16 16:11:14 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-12-16 16:11:14 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-12-16 16:11:14 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-12-16 16:11:45 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 16:12:16 +0100 | notzmv | (~zmv@user/notzmv) |
2021-12-16 16:12:24 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 16:13:10 +0100 | <mason0> | hmm I actually don't have any idea how to write this typeclass. the types I wrote make no sense, and I can't figure out the right ones. https://paste.tomsmeding.com/7gNEGRcd |
2021-12-16 16:13:24 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 16:14:10 +0100 | <merijn> | mason0: You can't write the right ones without extension voodoo |
2021-12-16 16:14:47 +0100 | <mason0> | I should be able to write snd in standard haskell? I don't know how to do that either |
2021-12-16 16:14:52 +0100 | <mason0> | for a pair |
2021-12-16 16:15:06 +0100 | <merijn> | mason0: You don't need a class for that, though? |
2021-12-16 16:15:28 +0100 | <mason0> | I know, but I'm just wondering how the types would look |
2021-12-16 16:15:36 +0100 | vpan | (~0@212.117.1.172) (Quit: Leaving.) |
2021-12-16 16:15:50 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-12-16 16:15:59 +0100 | <merijn> | "(a,b) -> a" and "(a,b) -> b"? |
2021-12-16 16:16:26 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 260 seconds) |
2021-12-16 16:16:36 +0100 | <mason0> | what do we put in instance definition? kind has to be * -> * |
2021-12-16 16:16:37 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) (Ping timeout: 240 seconds) |
2021-12-16 16:16:51 +0100 | dcoutts_ | (~duncan@ip-185-104-136-51.ptr.icomera.net) |
2021-12-16 16:17:47 +0100 | <merijn> | mason0: Rewind: where does the class come in and why do you think you need a class? |
2021-12-16 16:18:43 +0100 | <dminuoso> | % class Fst a where type FstTy a; fst :: a -> FstTy |
2021-12-16 16:18:44 +0100 | <yahb> | dminuoso: ; <interactive>:165:45: error:; * Expecting one more argument to `FstTy'; Expected a type, but `FstTy' has kind `* -> *'; * In the type signature: fst :: a -> FstTy; In the class declaration for `Fst' |
2021-12-16 16:18:48 +0100 | <mason0> | I wanted to try writing generic fst, snd, etc functions. and while trying, I figured out I don't know how to write any kind of instance for tuple |
2021-12-16 16:18:48 +0100 | <dminuoso> | % class Fst a where type FstTy a; fst :: a -> FstTy a |
2021-12-16 16:18:48 +0100 | <yahb> | dminuoso: |
2021-12-16 16:18:51 +0100 | <dminuoso> | % instance Fst (a, b) where type FstTy (a, b) = a; fst (a, b) = |
2021-12-16 16:18:51 +0100 | <yahb> | dminuoso: ; <interactive>:167:63: error: parse error (possibly incorrect indentation or mismatched brackets) |
2021-12-16 16:18:53 +0100 | <dminuoso> | % instance Fst (a, b) where type FstTy (a, b) = a; fst (a, b) = a |
2021-12-16 16:18:53 +0100 | <yahb> | dminuoso: |
2021-12-16 16:19:05 +0100 | <dminuoso> | % :t fst |
2021-12-16 16:19:05 +0100 | <yahb> | dminuoso: Fst a => a -> FstTy a |
2021-12-16 16:19:17 +0100 | <dminuoso> | % instance Fst (a, b, c) where type FstTy (a, b, c) = a; fst (a, b, c) = a |
2021-12-16 16:19:17 +0100 | <yahb> | dminuoso: |
2021-12-16 16:19:23 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 16:19:26 +0100 | <dminuoso> | % fst ('a', 'b') |
2021-12-16 16:19:26 +0100 | <yahb> | dminuoso: 'a' |
2021-12-16 16:19:28 +0100 | <dminuoso> | % fst ('a', 'b', 'c') |
2021-12-16 16:19:28 +0100 | <yahb> | dminuoso: 'a' |
2021-12-16 16:19:30 +0100 | MiguelNegrao | (~MiguelNeg@2001:818:dc71:d100:e682:f5cd:9590:d961) |
2021-12-16 16:19:31 +0100 | <mason0> | dminuoso, do I need any extension for that? |
2021-12-16 16:19:35 +0100 | <dminuoso> | Yes, TypeFamilies |
2021-12-16 16:19:41 +0100 | <dminuoso> | Alternatively you can do it with FunctionalDependencies |
2021-12-16 16:19:53 +0100 | <mason0> | which extension would be prefered for this? |
2021-12-16 16:20:12 +0100 | <dminuoso> | TyFams are usually more ergonomic for this type of thing. |
2021-12-16 16:20:32 +0100 | <merijn> | hmm, what's the right (mega)parsec combinator for parse "up to N times"? |
2021-12-16 16:20:46 +0100 | zebrag | (~chris@user/zebrag) |
2021-12-16 16:21:02 +0100 | <dminuoso> | merijn: With fundeps you also need MultiParamTypeClasses, FlexibleInstances, and I think you need FlexibleContexts in use sites? |
2021-12-16 16:21:41 +0100 | <dminuoso> | Oh, mason0. |
2021-12-16 16:22:52 +0100 | <dminuoso> | merijn: Mmm, can you use replicateM and just disable backtracking? |
2021-12-16 16:22:52 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 16:22:57 +0100 | <MiguelNegrao> | Hi all, I'm working on a library with two different possible implementations (for two different situations), some core functions have the same type signature but a different implementation. I then have some other functions which use these core functions. I would like to avoid having to duplicate the code, having to write these extra functions |
2021-12-16 16:22:58 +0100 | <MiguelNegrao> | twice, one for each implementation, as the code is exactly the same, they just use a different version of the one of the core functions. Something like having functions core1 and core2 and then having extra = core1 1 or extra = core2 1 , depending on which module the user imports. Is there some tricks with modules do achieve this ? |
2021-12-16 16:22:58 +0100 | <merijn> | dminuoso: Maybe? |
2021-12-16 16:23:00 +0100 | <mason0> | dminuoso it works nicely. I have no idea how, but it works, and it is easy to add support for longer tuples |
2021-12-16 16:23:34 +0100 | <dminuoso> | mason0: So a type family is just a type-level function that takes types as input, and produces types as output |
2021-12-16 16:24:03 +0100 | <merijn> | MiguelNegrao: Not realy? But you can just have an internal implementation that takes the core function as argument |
2021-12-16 16:24:11 +0100 | <dminuoso> | mason0: FstTy is furthermore associated to the typeclass, such that any instance must also provide a type family instance, which allows you to figure out the resulting type of |
2021-12-16 16:24:18 +0100 | <mason0> | dminuoso, just curious how far we could take this? could we make "at" function, that accepts int literal for the position of the element in the tuple? I guess not because it needs to be known at compile time? or maybe at could take _1, which is what lens does |
2021-12-16 16:24:29 +0100 | <MiguelNegrao> | @merjin : that was also my plan if I didn't find anything else |
2021-12-16 16:24:29 +0100 | <lambdabot> | Unknown command, try @list |
2021-12-16 16:24:35 +0100 | <dminuoso> | mason0: Heh, well yes.. we sort of can. |
2021-12-16 16:24:42 +0100 | <merijn> | MiguelNegrao: And then define "myCoreFunction = internalImplementation coreFunction1" and "myCoreFunction = internalImplementation coreFunction2" in separate modules |
2021-12-16 16:24:55 +0100 | <mason0> | int literal or _1? |
2021-12-16 16:24:58 +0100 | <dminuoso> | mason0: but this starts to get very dark in type trickery land. |
2021-12-16 16:25:00 +0100 | <merijn> | MiguelNegrao: That's almost certainly going to be the easiest/most maintainable solution |
2021-12-16 16:25:02 +0100 | <lyxia> | mason0: https://hackage.haskell.org/package/generic-lens-2.2.0.0/docs/Data-Generics-Product-Positions.html… |
2021-12-16 16:25:11 +0100 | <mason0> | dminuoso, yeah, I should probably understand this code first |
2021-12-16 16:25:30 +0100 | <dminuoso> | mason0: this current piece of code is highly trivial, you can probably figure it out after 3 minutes of staring yourself. |
2021-12-16 16:25:33 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.3) |
2021-12-16 16:25:33 +0100 | <MiguelNegrao> | merijn: ok, great, thanks. Just wanted to check I wasn't missing something. |
2021-12-16 16:25:59 +0100 | <merijn> | MiguelNegrao: Defining a generic helper and partially applying it is a common design pattern |
2021-12-16 16:26:48 +0100 | <merijn> | dminuoso: How would I disable backtracking? Simply 'replicateM_ 5 (try foo)' isn't sufficient |
2021-12-16 16:27:03 +0100 | <dminuoso> | Mmm, doesnt `try` explicitly enable backtracking? |
2021-12-16 16:27:19 +0100 | <dminuoso> | oh wait |
2021-12-16 16:27:24 +0100 | <dminuoso> | No this is actually potentialy better |
2021-12-16 16:27:26 +0100 | <merijn> | Well, without try it *definitely* doesn't work |
2021-12-16 16:27:30 +0100 | <dminuoso> | Mmm |
2021-12-16 16:27:41 +0100 | <dminuoso> | merijn: Do you need the output? |
2021-12-16 16:27:46 +0100 | <dminuoso> | Or can it be thrown away |
2021-12-16 16:27:48 +0100 | <merijn> | Unsure :p |
2021-12-16 16:27:51 +0100 | <dminuoso> | heh :P |
2021-12-16 16:28:00 +0100 | <dminuoso> | Honestly, just roll your replicateM_ variant using Alternative? |
2021-12-16 16:28:15 +0100 | <dminuoso> | The time we talked here you could have written it 10 times over. |
2021-12-16 16:28:22 +0100 | <dminuoso> | :p |
2021-12-16 16:28:45 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 268 seconds) |
2021-12-16 16:29:03 +0100 | <merijn> | dminuoso: I don't think it's that straightforward? |
2021-12-16 16:29:19 +0100 | <dminuoso> | merijn: Mmm, count' from parser-combinators seems to fit |
2021-12-16 16:29:28 +0100 | MiguelNegrao | (~MiguelNeg@2001:818:dc71:d100:e682:f5cd:9590:d961) (Quit: Client closed) |
2021-12-16 16:29:31 +0100 | <dminuoso> | i.e. `count' 0 6 foo` |
2021-12-16 16:29:51 +0100 | <dminuoso> | merijn: and yes, its very straight forward |
2021-12-16 16:29:59 +0100 | <dminuoso> | Internally its almost identical to replicateM_ |
2021-12-16 16:30:21 +0100 | <dminuoso> | https://hackage.haskell.org/package/parser-combinators-1.3.0/docs/src/Control.Applicative.Combinat… |
2021-12-16 16:30:22 +0100 | Morrow | (~quassel@bzq-110-168-31-106.red.bezeqint.net) |
2021-12-16 16:30:23 +0100 | <dminuoso> | https://hackage.haskell.org/package/base-4.16.0.0/docs/src/Control.Monad.html#replicateM |
2021-12-16 16:33:34 +0100 | <byorgey> | merijn: if this is for today's AoC, I don't see how that combinator is helpful ;-) |
2021-12-16 16:33:53 +0100 | <merijn> | byorgey: Lack of imagination on your part :p |
2021-12-16 16:34:03 +0100 | <byorgey> | hehe |
2021-12-16 16:34:28 +0100 | <byorgey> | merijn: maybe you want https://hackage.haskell.org/package/megaparsec-9.2.0/docs/Text-Megaparsec.html#v:getOffset ? |
2021-12-16 16:34:45 +0100 | <xerox> | . o O ( ... length type ids of 1 ... ) |
2021-12-16 16:35:01 +0100 | <merijn> | byorgey: No? Certainly no yet |
2021-12-16 16:35:12 +0100 | <byorgey> | OK. carry on |
2021-12-16 16:35:20 +0100 | xkuru | (~xkuru@user/xkuru) |
2021-12-16 16:36:41 +0100 | vpan | (~0@212.117.1.172) |
2021-12-16 16:36:49 +0100 | Guest8273 | (~Guest82@2001:8003:26ff:8c01:1417:7515:4ef4:e82d) |
2021-12-16 16:37:14 +0100 | <mason0> | pretty neat! https://paste.tomsmeding.com/Qk3e76l3 |
2021-12-16 16:37:30 +0100 | pta2002 | (~pta2002@161.230.90.170) |
2021-12-16 16:37:44 +0100 | <pta2002> | Hello, I'm trying to make a parser in parsec |
2021-12-16 16:38:12 +0100 | <xerox> | nice choice |
2021-12-16 16:38:21 +0100 | <pta2002> | And one of the steps I need to do to make the main parser is to run a subparser only on a specific bit |
2021-12-16 16:38:26 +0100 | Guest8273 | (~Guest82@2001:8003:26ff:8c01:1417:7515:4ef4:e82d) (Client Quit) |
2021-12-16 16:38:40 +0100 | <sprout> | hah! |
2021-12-16 16:38:43 +0100 | <pta2002> | like, I have a string "abcdef" but I want to run a parser on string "abc" |
2021-12-16 16:38:47 +0100 | adam_b_dawg | (~adam_b_da@2001:8003:26ff:8c01:1417:7515:4ef4:e82d) |
2021-12-16 16:38:48 +0100 | <pta2002> | inside another parser |
2021-12-16 16:38:52 +0100 | <sprout> | https://pasteboard.co/TJarPW9Gt0Zz.png <- AoC, day 16, task 2. egel |
2021-12-16 16:38:57 +0100 | <pta2002> | yes that's what I need :P |
2021-12-16 16:39:34 +0100 | <sprout> | should be possible in haskell without problems too, right? |
2021-12-16 16:39:42 +0100 | <pta2002> | what language is that? |
2021-12-16 16:39:45 +0100 | <xerox> | sure, you just run the same parser you're defining |
2021-12-16 16:39:49 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 16:40:00 +0100 | <pta2002> | oh egel got it, never heard of it |
2021-12-16 16:40:07 +0100 | <pta2002> | xerox: but how can I limit it to those bits? |
2021-12-16 16:40:25 +0100 | <xerox> | you write the parser such that it doesn't overrun, it'll consume only as much as it needs |
2021-12-16 16:40:27 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 268 seconds) |
2021-12-16 16:40:29 +0100 | <pta2002> | other than just doing some ugly thing like parse [parser] "" [message] |
2021-12-16 16:40:52 +0100 | <pta2002> | oh yeah yeah ik but i need to run it with many |
2021-12-16 16:41:00 +0100 | adam_b_dawg | (~adam_b_da@2001:8003:26ff:8c01:1417:7515:4ef4:e82d) (Client Quit) |
2021-12-16 16:41:28 +0100 | <pta2002> | like I need parse (many1 [parser]) "" [message], the message to parse repeats |
2021-12-16 16:41:51 +0100 | <xerox> | check out count to run it exactly n times |
2021-12-16 16:41:53 +0100 | <pta2002> | but I so I want to get as many occorrences of it as possible but only until it ends |
2021-12-16 16:42:06 +0100 | <pta2002> | xerox: I don't know how many times I need it |
2021-12-16 16:42:11 +0100 | <pta2002> | Variable length messages |
2021-12-16 16:42:22 +0100 | <pta2002> | I need to get all messages in n characters |
2021-12-16 16:42:41 +0100 | <g> | Do get the n characters, then parse them |
2021-12-16 16:42:46 +0100 | <pta2002> | but I don't know how many messages there are |
2021-12-16 16:43:06 +0100 | <xerox> | what g says works or you can also use lookAhead |
2021-12-16 16:43:15 +0100 | <g> | That's fine, just keep parsing till the bytes are gone |
2021-12-16 16:44:02 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-12-16 16:44:11 +0100 | <pta2002> | g: yeah, I got the n characters |
2021-12-16 16:44:17 +0100 | <pta2002> | but now how do I run the parser only on those characters? |
2021-12-16 16:44:28 +0100 | <merijn> | It's been...0 days since megaparsec's lack of 'isolate' has screwedme! |
2021-12-16 16:44:34 +0100 | pfurla_ | (~pfurla@2804:18:5827:38:71a1:6773:333f:330d) (Quit: gone to sleep. ZZZzzz…) |
2021-12-16 16:44:48 +0100 | <merijn> | pta2002: Ah, I see you have the exact same problem annoying me :p |
2021-12-16 16:44:55 +0100 | <g> | pta2002: the same way you ran your parser the first time |
2021-12-16 16:44:58 +0100 | <mason0> | what is that guy's AoC page, he writes very terse haskell code? |
2021-12-16 16:45:03 +0100 | <pta2002> | it seems I do |
2021-12-16 16:45:09 +0100 | <pta2002> | no this is definitely not terse haskell |
2021-12-16 16:45:10 +0100 | <mason0> | I had it a couple of days ago but I can't find it |
2021-12-16 16:45:19 +0100 | <pta2002> | i have too many do's |
2021-12-16 16:45:24 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-12-16 16:45:29 +0100 | <mason0> | merijn, I think it was posted by you? with your dislike for his style :) |
2021-12-16 16:45:34 +0100 | <merijn> | oh |
2021-12-16 16:45:40 +0100 | <byorgey> | pta2002: megaparsec has a combinator called 'getOffset' that tells you where you are in the input. I don't know if parsec has something similar. |
2021-12-16 16:45:45 +0100 | <merijn> | https://jhidding.github.io/aoc2021/#advent-of-code-2021 ? |
2021-12-16 16:45:49 +0100 | <pta2002> | hm don't know if that's what I need |
2021-12-16 16:45:54 +0100 | <pta2002> | i did get the message part I need |
2021-12-16 16:46:01 +0100 | <pta2002> | just using count |
2021-12-16 16:46:02 +0100 | <byorgey> | pta2002: I used that to just keep parsing sub-things until the offset reached the number it was supposed to |
2021-12-16 16:46:08 +0100 | <merijn> | byorgey: What he (and I) want is: https://hackage.haskell.org/package/binary-0.8.9.0/docs/Data-Binary-Get.html#v:isolate :p |
2021-12-16 16:46:09 +0100 | <mason0> | merijn, that's it! |
2021-12-16 16:46:13 +0100 | <pta2002> | oh that's a nice idea |
2021-12-16 16:46:29 +0100 | <g> | In ReadP I did this https://github.com/glguy/advent2021/blob/main/execs/Day16.hs#L93 |
2021-12-16 16:46:40 +0100 | <pta2002> | merijn: wait how can i use that? :o |
2021-12-16 16:46:50 +0100 | <pta2002> | that's not parsec |
2021-12-16 16:47:05 +0100 | <pta2002> | oh it's doing the clever thing of using actual binary values instead of a string of '0' and '1' lol |
2021-12-16 16:47:13 +0100 | <byorgey> | merijn: kind of, but it looks like that only works if the decoder consumes exactly that many bytes. In this case you want the number of available bytes to influence how the sub-parser works. |
2021-12-16 16:47:14 +0100 | <merijn> | pta2002: You can't, sadly |
2021-12-16 16:47:18 +0100 | <pta2002> | :c |
2021-12-16 16:47:20 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 16:47:33 +0100 | <merijn> | that's why I was complaining :p |
2021-12-16 16:47:35 +0100 | <pta2002> | guess i'll just do this the wrong way and run parse inside a parser |
2021-12-16 16:47:39 +0100 | <pta2002> | yeah got it lol |
2021-12-16 16:47:41 +0100 | <merijn> | byorgey: Well, I want isolate outside of AoC too :p |
2021-12-16 16:47:57 +0100 | <g> | You use "many" to make a parser that parsers as many items as it can |
2021-12-16 16:48:48 +0100 | <g> | And let that soak up the sub bytes |
2021-12-16 16:48:58 +0100 | <byorgey> | merijn: you should be able to write it using getOffset |
2021-12-16 16:49:11 +0100 | <pta2002> | i gave up on the smart way of doing things |
2021-12-16 16:49:27 +0100 | <pta2002> | just running parse inside of the parser, if it's stupid and it works it ain't stupid lol |
2021-12-16 16:49:30 +0100 | <byorgey> | hmmm, maybe |
2021-12-16 16:50:34 +0100 | <g> | Some libraries the offset is related to the current chunk and not the whole input, so just check that ahead of time |
2021-12-16 16:50:41 +0100 | <byorgey> | pta2002: actually that sounds like a decent idea to me =) |
2021-12-16 16:50:51 +0100 | <byorgey> | g: ah, good point |
2021-12-16 16:51:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-12-16 16:51:37 +0100 | <byorgey> | pretty sure getOffset is relative to the whole input in megaparsec |
2021-12-16 16:52:45 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2021-12-16 16:52:57 +0100 | <merijn> | rats...I have to implement takeWhile_ now :\ |
2021-12-16 16:53:09 +0100 | <merijn> | I put it off so far, because that seemed annoying >.> |
2021-12-16 16:53:24 +0100 | <g> | Then that would be a possible solution :) given how much time people spent pondering these two sub packet encodings I'd say today's problem was cleverly picked by the authors |
2021-12-16 16:56:34 +0100 | <pta2002> | my hacky solution works, here's one gold star :D |
2021-12-16 16:58:09 +0100 | <byorgey> | pta2002: \o/ |
2021-12-16 16:58:36 +0100 | <pta2002> | oh damn this is intcode computer all over again |
2021-12-16 16:59:05 +0100 | <pta2002> | 2019 me didn't know about State and suffered heavily with the intcode computer |
2021-12-16 17:00:17 +0100 | <g> | I did my first version with a whole bunch of splitAt <_< |
2021-12-16 17:00:23 +0100 | <merijn> | ugh, I hate it when it's clear my problem has an efficient solution, but it seems so tedious to figure out... |
2021-12-16 17:00:55 +0100 | <pta2002> | hey, my day 15 poorly implemented dijkstra solution took like 2 minutes |
2021-12-16 17:01:19 +0100 | <merijn> | mine was pretty fast, although I'm not sure I implemented Dijkstra or something else :p |
2021-12-16 17:01:23 +0100 | <pta2002> | and it's absolutely horrible |
2021-12-16 17:02:01 +0100 | <pta2002> | https://gist.github.com/pta2002/6b2febf1481654858a1216b658c3f668 look at this mess :( |
2021-12-16 17:02:30 +0100 | <pta2002> | ignore mapDiff, doesn't work, was something I tried to do for debugging why mkPart2Map wasn't working |
2021-12-16 17:03:01 +0100 | jkaye | (~jkaye@2601:281:8300:7530:d672:a7f5:a798:3393) |
2021-12-16 17:03:05 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-12-16 17:04:30 +0100 | <g> | pta2002: filtering your heap each step is probably killing you |
2021-12-16 17:04:58 +0100 | <pta2002> | yeah probably |
2021-12-16 17:05:03 +0100 | <pta2002> | i got that working at 3am |
2021-12-16 17:05:07 +0100 | <pta2002> | i was too tired for my brain to function |
2021-12-16 17:05:14 +0100 | <pta2002> | was just happy it compiled |
2021-12-16 17:05:33 +0100 | <pta2002> | you can tell from my imports i actually tried to use a minheap |
2021-12-16 17:05:49 +0100 | <kuribas> | is 2 minutes bad? |
2021-12-16 17:05:52 +0100 | <tomsmeding> | I have a Dijkstra with a proper priority quue :) https://git.tomsmeding.com/AOC/tree/2021/15.hs |
2021-12-16 17:06:02 +0100 | <kuribas> | tomsmeding: how fast is it? |
2021-12-16 17:06:07 +0100 | pavonia | (~user@user/siracusa) (Ping timeout: 256 seconds) |
2021-12-16 17:06:10 +0100 | <pta2002> | then gave up when i tried to reprioritize the heap |
2021-12-16 17:06:11 +0100 | <merijn> | pta2002: https://github.com/merijn/AdventOfCode/blob/master/Day15.hs#L114-L164 |
2021-12-16 17:06:15 +0100 | <tomsmeding> | kuribas: 306ms on my input, both parts |
2021-12-16 17:06:18 +0100 | <g> | kuribas: mine runs in about 700ms |
2021-12-16 17:06:31 +0100 | <pta2002> | i mean dijkstra isn't that algorithm |
2021-12-16 17:06:44 +0100 | <kuribas> | oh, that's a bit better than 2 minutes :) |
2021-12-16 17:06:52 +0100 | <merijn> | kuribas: Mine finishes in 1.5s or so? And part of that is drawing the entire map :p |
2021-12-16 17:06:57 +0100 | <tomsmeding> | (obviously machine-dependent, but certainly better than 2min) |
2021-12-16 17:07:00 +0100 | <pta2002> | heh |
2021-12-16 17:07:01 +0100 | <kuribas> | tomsmeding: maybe you should put it in a package? |
2021-12-16 17:07:02 +0100 | <merijn> | Because I plot the final route to screen |
2021-12-16 17:07:07 +0100 | <tomsmeding> | lol |
2021-12-16 17:07:09 +0100 | <pta2002> | oh nice |
2021-12-16 17:07:27 +0100 | <tomsmeding> | it's special-purposed to this problem where you have a 2D array where distance-to-cell is equal to the value in the cell |
2021-12-16 17:07:29 +0100 | <merijn> | tomsmeding: It was trivial to implement with my representation and the rendering code I had from previous puzzles :p |
2021-12-16 17:07:58 +0100 | <kuribas> | oh right |
2021-12-16 17:08:13 +0100 | <pta2002> | I see two simple fixes to my slowness: 1. use a proper minheap, instead of filtering a huge list and 2. don't bother calculating costs to every node |
2021-12-16 17:08:23 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 17:08:26 +0100 | <merijn> | tomsmeding: Ah, I think your version looks similar to mine |
2021-12-16 17:08:29 +0100 | <pta2002> | mostly the minheap though |
2021-12-16 17:08:35 +0100 | <merijn> | I didn't even use a heap, tbh |
2021-12-16 17:08:36 +0100 | <pta2002> | just couldn't figure out how to reprioritize it |
2021-12-16 17:08:42 +0100 | <merijn> | I just used Set + minView :p |
2021-12-16 17:08:50 +0100 | <kuribas> | pta2002: is it dijkstra if you use a O(n^2) heap? |
2021-12-16 17:09:14 +0100 | <pta2002> | kuribas: well it's dijkstra* where * stands for i didn't implement it properly |
2021-12-16 17:09:14 +0100 | <merijn> | I think mine is more akin to A*? |
2021-12-16 17:09:16 +0100 | <tomsmeding> | oh good point about the minView, merijn that functions as a priority queue, right? |
2021-12-16 17:09:34 +0100 | <pta2002> | A* is dijkstra with a cost to end goal heuristic |
2021-12-16 17:09:34 +0100 | <merijn> | tomsmeding: Effectively, if you ensure elements are sort by priority/cost :p |
2021-12-16 17:09:51 +0100 | <kuribas> | merijn: isn't Set a heap though? |
2021-12-16 17:10:00 +0100 | <tomsmeding> | right, you need some 'data Box a b = Box a b' where the Ord instance only looks at 'a' |
2021-12-16 17:10:05 +0100 | jippiedoe | (~david@145.89.5.239) (Ping timeout: 256 seconds) |
2021-12-16 17:10:09 +0100 | <pta2002> | i think i know this i just had a test on this yesterday |
2021-12-16 17:10:15 +0100 | <tomsmeding> | nice, I was thinking that there wasn't a PQ implementation in base, but apparently there is :) |
2021-12-16 17:10:18 +0100 | <pta2002> | which makes my dijkstra implementation even more shameful |
2021-12-16 17:10:19 +0100 | <pta2002> | oh well |
2021-12-16 17:10:33 +0100 | <merijn> | tomsmeding: Technically Set isn't in base :p |
2021-12-16 17:10:44 +0100 | <tomsmeding> | my brain is still not functioning correctly |
2021-12-16 17:10:50 +0100 | <merijn> | tomsmeding: I have a custom Estimate type that uses cost as primary key for comparison :p |
2021-12-16 17:10:53 +0100 | <merijn> | kuribas: No? |
2021-12-16 17:10:56 +0100 | <merijn> | kuribas: Set is a binary tree |
2021-12-16 17:10:57 +0100 | <tomsmeding> | but boot package is close enough :p |
2021-12-16 17:11:25 +0100 | <tomsmeding> | oh fair, and for the correct asymptotics you need a heap |
2021-12-16 17:11:28 +0100 | <merijn> | kuribas: But that's only O(log n) to find the minimal |
2021-12-16 17:11:31 +0100 | <tomsmeding> | though I wonder if it really matters in this case |
2021-12-16 17:11:44 +0100 | <tomsmeding> | O(log n + log n) = O(1 + log n) |
2021-12-16 17:11:53 +0100 | <tomsmeding> | (findMin + deleteMin) |
2021-12-16 17:12:09 +0100 | <kuribas> | merijn: right, and in a heap, it's O(1). |
2021-12-16 17:12:10 +0100 | <merijn> | tomsmeding: minView does it in on operation |
2021-12-16 17:12:27 +0100 | <merijn> | tomsmeding: So you do find + delete in O(log n) |
2021-12-16 17:12:42 +0100 | <tomsmeding> | which is also equal to the two terms I wrote, complexity-wise :p |
2021-12-16 17:12:45 +0100 | <kuribas> | merijn: a heap is also a binary tree BTW. |
2021-12-16 17:13:02 +0100 | <tomsmeding> | so a binary search tree suffices as a priority queue for dijkstra, you don't need a heap |
2021-12-16 17:13:03 +0100 | <tomsmeding> | interesting |
2021-12-16 17:13:37 +0100 | tomsmeding | can never remember whether the increaseKey function is really necessary to get dijkstra to the right complexity |
2021-12-16 17:13:52 +0100 | <merijn> | hmm |
2021-12-16 17:13:55 +0100 | <tomsmeding> | kuribas: but not a binary search tree, which Set is |
2021-12-16 17:14:07 +0100 | <merijn> | I'm confused whether I want foldl or foldr when lazily traversing a Text |
2021-12-16 17:14:18 +0100 | <merijn> | Someone help me out here! |
2021-12-16 17:14:21 +0100 | <merijn> | Does it even matter? |
2021-12-16 17:14:25 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) |
2021-12-16 17:14:27 +0100 | <tomsmeding> | define lazily traversing a text |
2021-12-16 17:14:38 +0100 | <merijn> | A fold that only looks at a prefix of the Text |
2021-12-16 17:14:56 +0100 | <tomsmeding> | that needs to be a foldr then, right? |
2021-12-16 17:14:56 +0100 | <[exa]> | you want foldr because foldl is foldr |
2021-12-16 17:15:23 +0100 | <tomsmeding> | a + (b + (c + (d + ...))) ignores the suffix if (+) at some point ignores its right argument; not so for foldl |
2021-12-16 17:15:51 +0100 | <tomsmeding> | foldl can ignore a prefix if the combining function ignores its left argument at some point |
2021-12-16 17:16:24 +0100 | <merijn> | tomsmeding: I know how it works on lists, but Text's folds go through the streaming abstraction of them |
2021-12-16 17:16:30 +0100 | <merijn> | I dunno how that affects things |
2021-12-16 17:16:49 +0100 | <tomsmeding> | ¯\_(ツ)_/¯ |
2021-12-16 17:16:51 +0100 | <tomsmeding> | try it :p |
2021-12-16 17:20:19 +0100 | <pta2002> | maybe next year I'll actually know how to use haskell properly and will be able to stop using do everywhere |
2021-12-16 17:20:43 +0100 | <pta2002> | and how to make a properi mplementation of dijkstra |
2021-12-16 17:21:18 +0100 | <tomsmeding> | what's the problem with 'do' |
2021-12-16 17:21:19 +0100 | <glguy> | Not running a sub parser appears to be the favored solution, so i've updated: https://github.com/glguy/advent2021/blob/main/execs/Day16.hs#L90-L97 |
2021-12-16 17:22:02 +0100 | <pta2002> | hm what's the difference between readp and parsec? |
2021-12-16 17:22:03 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-12-16 17:22:05 +0100 | <pta2002> | only ever heard of parsec |
2021-12-16 17:22:17 +0100 | <merijn> | ReadP is shite, is the difference ;) |
2021-12-16 17:22:18 +0100 | <pta2002> | but it seems like it does the same thing |
2021-12-16 17:22:46 +0100 | <glguy> | ReadP has unbiased choice, no parse errors, is in base, parses all the alternatives at once instead of the depth first algorithm parsec uses |
2021-12-16 17:23:14 +0100 | <glguy> | for a real use case you'd probably use megaparsec these days |
2021-12-16 17:23:56 +0100 | <glguy> | ReadP is good for AoC parsing because it doesn't require me to be as clever as one needs to be with parsec |
2021-12-16 17:24:29 +0100 | <glguy> | (where just getting the input parsed quickly is the important thing) |
2021-12-16 17:24:32 +0100 | pavonia | (~user@user/siracusa) |
2021-12-16 17:24:51 +0100 | <pta2002> | https://github.com/pta2002/advent-of-code-2021/blob/main/16/solve.hs i wouldn't call my solution particularly clever |
2021-12-16 17:24:51 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 17:25:15 +0100 | <kuribas> | Why does stack build, then stack test rebuilds the whole library? |
2021-12-16 17:25:20 +0100 | <glguy> | parsec gives you a performance boost by pruning alternatives once the first alternative starts consuming inputs |
2021-12-16 17:25:41 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 17:25:52 +0100 | <kuribas> | Because I have template haskell? |
2021-12-16 17:27:15 +0100 | featurebug | (~featurebu@49.205.122.91) |
2021-12-16 17:27:55 +0100 | <kuribas> | sq-loader-0.1.0.0: unregistering (dependencies changed) |
2021-12-16 17:28:35 +0100 | <tomsmeding> | kuribas: are some flags different between the two targets? |
2021-12-16 17:28:42 +0100 | <tomsmeding> | perhaps a ghc-options |
2021-12-16 17:28:57 +0100 | dcoutts_ | (~duncan@ip-185-104-136-51.ptr.icomera.net) (Ping timeout: 240 seconds) |
2021-12-16 17:30:00 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-12-16 17:30:14 +0100 | <kuribas> | I have extra test libraries... |
2021-12-16 17:30:19 +0100 | <kuribas> | hspec, etc... |
2021-12-16 17:30:52 +0100 | <tomsmeding> | perhaps those force a different flag configuration for other dependencies in the cabal solver? |
2021-12-16 17:31:05 +0100 | <tomsmeding> | s/flag/flag or version/ |
2021-12-16 17:31:20 +0100 | <kuribas> | right! |
2021-12-16 17:31:20 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 17:31:45 +0100 | <kuribas> | aren't they pinned by stack though? |
2021-12-16 17:32:08 +0100 | <tomsmeding> | oh, right, stack; that should be pinned yes? |
2021-12-16 17:32:25 +0100 | <tomsmeding> | well versions are, flags might not be |
2021-12-16 17:32:37 +0100 | <tomsmeding> | but unlikely that flags are being affected by some test libraries |
2021-12-16 17:34:30 +0100 | pta2002 | (~pta2002@161.230.90.170) (Quit: leaving) |
2021-12-16 17:35:13 +0100 | <kuribas> | it's not even rebuilding any dependencies... |
2021-12-16 17:35:17 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2021-12-16 17:37:13 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2021-12-16 17:37:14 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) (Remote host closed the connection) |
2021-12-16 17:37:28 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 17:37:45 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2021-12-16 17:41:50 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2021-12-16 17:42:38 +0100 | <kuribas> | ok, I can bypass the problem with "stack build --test --no-run-tests" |
2021-12-16 17:44:56 +0100 | kuribas | (~user@ptr-25vy0i8a8smuqmxkytj.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-12-16 17:47:32 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) (Remote host closed the connection) |
2021-12-16 17:48:40 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) (Quit: brb - upgrading) |
2021-12-16 17:49:27 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 17:49:28 +0100 | jippiedoe | (~david@2a02-a44c-e14e-1-52a9-393a-90cb-edf9.fixed6.kpn.net) |
2021-12-16 17:55:43 +0100 | jippiedoe | (~david@2a02-a44c-e14e-1-52a9-393a-90cb-edf9.fixed6.kpn.net) (Quit: Leaving) |
2021-12-16 17:58:20 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 18:01:47 +0100 | pfurla | (~pfurla@2804:18:5827:38:71a1:6773:333f:330d) |
2021-12-16 18:02:47 +0100 | deadmarshal | (~deadmarsh@95.38.231.95) (Ping timeout: 256 seconds) |
2021-12-16 18:03:20 +0100 | deadmarshal | (~deadmarsh@95.38.228.81) |
2021-12-16 18:06:09 +0100 | econo | (uid147250@user/econo) |
2021-12-16 18:08:58 +0100 | Akiva | (~Akiva@user/Akiva) |
2021-12-16 18:12:55 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2021-12-16 18:13:16 +0100 | pta2002 | (~pta2002@161.230.90.170) |
2021-12-16 18:14:27 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 18:15:28 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-12-16 18:16:18 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2021-12-16 18:18:11 +0100 | mikail | (~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) |
2021-12-16 18:19:57 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2021-12-16 18:21:36 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-12-16 18:25:11 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-12-16 18:25:44 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 18:29:53 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds) |
2021-12-16 18:33:35 +0100 | <unclechu> | Hey, can I somehow pass `:set` options (e.g. override `prompt`) to `ghci` before I start it? Without using `.ghci`. |
2021-12-16 18:33:51 +0100 | <unclechu> | Or can I maybe pass custom absolute path to `.ghci`? |
2021-12-16 18:34:24 +0100 | <geekosaur> | ---ghci-script |
2021-12-16 18:34:26 +0100 | <geekosaur> | er |
2021-12-16 18:34:30 +0100 | <geekosaur> | -ghci-script |
2021-12-16 18:34:44 +0100 | <tomsmeding> | and if you're using cabal repl, prefix that with --repl-options= |
2021-12-16 18:35:28 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-12-16 18:36:32 +0100 | <unclechu> | geekosaur thanks! That works |
2021-12-16 18:38:35 +0100 | vpan | (~0@212.117.1.172) (Quit: Leaving.) |
2021-12-16 18:39:50 +0100 | emf | (~emf@2620:10d:c091:480::1:7a0e) |
2021-12-16 18:41:06 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) |
2021-12-16 18:41:35 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-12-16 18:43:57 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2021-12-16 18:44:02 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 18:44:12 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-12-16 18:45:38 +0100 | Guest21 | (~Guest21@pool-98-115-178-221.phlapa.fios.verizon.net) |
2021-12-16 18:47:48 +0100 | <c_wraith> | is there any parsing combinator library built to do things like today's AoC problem asks for? in particular, having the ability to isolate a fixed length portion of the future stream to run a sub-parser over? |
2021-12-16 18:47:56 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 18:50:24 +0100 | Guest21 | (~Guest21@pool-98-115-178-221.phlapa.fios.verizon.net) (Client Quit) |
2021-12-16 18:50:52 +0100 | <EvanR> | I've done literally that with attoparsec but I guess literally doing that ruins the incremental nature of the parser |
2021-12-16 18:51:45 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-12-16 18:51:57 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) (Ping timeout: 240 seconds) |
2021-12-16 18:52:18 +0100 | Vajb | (~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03) |
2021-12-16 18:52:21 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) |
2021-12-16 18:52:33 +0100 | <c_wraith> | like, you can do it with anything if you call whatever the entry function is again, but that breaks error chaining between the sub-parser and the outer parser |
2021-12-16 18:53:07 +0100 | <c_wraith> | I'm wondering if anything supports it in a more integrated manner |
2021-12-16 18:53:28 +0100 | mikail | (~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Quit: Leaving) |
2021-12-16 18:54:55 +0100 | <glguy> | Is there a trick to having haddock generate documentation for internal (not exported from the module) definitions? While these aren't part of the module's API it seems like it would be useful for someone working on the module |
2021-12-16 18:54:58 +0100 | <EvanR> | the thing missing seemed to be a way to know how much input was just consumed so you can track it |
2021-12-16 18:55:17 +0100 | <monochrom> | You can use parsec's getInput to get the future stream, splitAt, then use setInput to put back the suffix, and do whatever you want with the prefix. This is of course a clutch, I don't know of any parser library that has this in design. |
2021-12-16 18:55:20 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-12-16 18:55:23 +0100 | <xerox> | I remember having to figure that out for myself once glguy but I forget how I did it |
2021-12-16 18:56:03 +0100 | <xerox> | could this be it --show-all --ignore-all-exports |
2021-12-16 18:59:01 +0100 | <glguy> | > Causes Haddock to behave as if every module has the ignore-exports attribute (Section 3.7, “Module Attributes”). This might be useful for generating implementation documentation rather than interface documentation, for example. |
2021-12-16 18:59:02 +0100 | <lambdabot> | <hint>:1:38: error: parse error on input ‘module’ |
2021-12-16 18:59:04 +0100 | <glguy> | sounds pretty good |
2021-12-16 18:59:05 +0100 | <EvanR> | https://www.haskell.org/haddock/doc/html/module-attributes.html ignore-exports |
2021-12-16 18:59:45 +0100 | <glguy> | xerox: good spot, that worked |
2021-12-16 18:59:59 +0100 | <xerox> | glguy: I'm glad! |
2021-12-16 19:00:07 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::745c) |
2021-12-16 19:00:41 +0100 | <monochrom> | "ignore all exports" is a scary name. :) |
2021-12-16 19:01:13 +0100 | <monochrom> | Fortunately it means pretending "module M(foo, bar)" to be "module M". |
2021-12-16 19:01:36 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2021-12-16 19:01:38 +0100 | <xerox> | funny wording indeed |
2021-12-16 19:01:49 +0100 | <glguy> | https://glguy.net/advent2021/ https://glguy.net/advent2021/Day16/Main.html |
2021-12-16 19:02:24 +0100 | <xerox> | :) |
2021-12-16 19:04:33 +0100 | pta2002 | (~pta2002@161.230.90.170) (Ping timeout: 256 seconds) |
2021-12-16 19:06:28 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 19:06:57 +0100 | <xerox> | I guess the execs aren't easily linked from there by haddock itself |
2021-12-16 19:07:03 +0100 | <glguy> | I haven't figure out how to do that yet |
2021-12-16 19:07:09 +0100 | <glguy> | figured* |
2021-12-16 19:07:53 +0100 | dcoutts_ | (~duncan@71.78.6.51.dyn.plus.net) |
2021-12-16 19:08:50 +0100 | <EvanR> | ReadP pulling its weight around here |
2021-12-16 19:09:57 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::745c) (Remote host closed the connection) |
2021-12-16 19:10:49 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::745c) |
2021-12-16 19:11:01 +0100 | phma | (~phma@host-67-44-208-226.hnremote.net) (Read error: Connection reset by peer) |
2021-12-16 19:11:09 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
2021-12-16 19:11:58 +0100 | phma | (phma@2001:5b0:210d:8c38:983f:1c01:826:33cd) |
2021-12-16 19:15:38 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2021-12-16 19:19:37 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:66c1:82a7:41b7:a81d) (Remote host closed the connection) |
2021-12-16 19:24:33 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 19:25:46 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-12-16 19:25:46 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-12-16 19:25:46 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-12-16 19:27:32 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection) |
2021-12-16 19:27:53 +0100 | coot | (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
2021-12-16 19:30:02 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds) |
2021-12-16 19:32:08 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) |
2021-12-16 19:34:08 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 19:35:13 +0100 | mrus | (~mrus@149.28.224.172) (Quit: Surfing the great wave off Kanagawa) |
2021-12-16 19:35:36 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-12-16 19:37:31 +0100 | <sprout> | https://pasteboard.co/ew4JaofWfuXW.png <- aoc, 16, 2 - beautified a bit |
2021-12-16 19:37:40 +0100 | <sprout> | uh, egel code |
2021-12-16 19:39:35 +0100 | <monochrom> | Even more beautiful in comic sans font. :) |
2021-12-16 19:41:12 +0100 | shapr | (~user@12.5.211.156) |
2021-12-16 19:41:17 +0100 | <glguy> | sprout: for non-haskell AoC code there's also #adventofcode-spoilers |
2021-12-16 19:41:37 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2021-12-16 19:41:54 +0100 | <sprout> | oh neat! |
2021-12-16 19:42:16 +0100 | mbuf | (~Shakthi@223.178.108.131) (Quit: Leaving) |
2021-12-16 19:46:12 +0100 | <EvanR> | glguy the haddock based solution post looks pretty good. I just ran into a readtodocs regarding haskell containers, and wish there was more nice looking web-based content for haskell |
2021-12-16 19:46:20 +0100 | <EvanR> | readthedocs* |
2021-12-16 19:47:39 +0100 | <dsal> | Is there a better way in megaparsec to call a parser over a subset of data other than to just takeP and call `parse` again? |
2021-12-16 19:47:39 +0100 | Vajb | (~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03) (Read error: Connection reset by peer) |
2021-12-16 19:48:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-12-16 19:48:30 +0100 | coot | (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Quit: coot) |
2021-12-16 19:48:50 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-12-16 19:49:05 +0100 | <glguy> | dsal: the other way would be to track offsets with getOffset, another way is you can use getInput and setInput |
2021-12-16 19:49:41 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 19:49:42 +0100 | <glguy> | take the input, split it, set the input parse, restore the tail |
2021-12-16 19:49:48 +0100 | coot | (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
2021-12-16 19:50:42 +0100 | <dsal> | Hmm... Yeah, I considered that as well. Might give it a try. I figured there'd be something `count` or whatever, but over bytes. |
2021-12-16 19:52:05 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 19:52:19 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-12-16 19:52:19 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-12-16 19:52:19 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-12-16 19:52:38 +0100 | dsrt^ | (~dsrt@wsip-98-188-240-142.mc.at.cox.net) |
2021-12-16 19:52:44 +0100 | <tomsmeding> | somehow everybody seems to ask the same question today :p |
2021-12-16 19:53:13 +0100 | <EvanR> | I did something stupid: take the difference of "rest of input" between before and after running a parser to get how many bits were consumed |
2021-12-16 19:53:15 +0100 | <monochrom> | EvanR: Rejoice, for cabal user guide has long been on readthedocs, and now GHC user guide, even though still hosted on downloads.haskell.org, has adopted readthedocs formatting. |
2021-12-16 19:54:49 +0100 | <EvanR> | nice |
2021-12-16 19:55:18 +0100 | <dsal> | Oh, sorry. I've been partially offline since my laptop broke yesterday. heh |
2021-12-16 19:56:09 +0100 | <dsal> | I did gross stuff to solve last night's thing quickly. And then I went back to do something less gross and it's still a bit more gross than I'd like. |
2021-12-16 19:56:32 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2021-12-16 19:57:13 +0100 | <Rembane> | I tried to do a Best Friend Search but fell asleep in the middle. |
2021-12-16 19:58:17 +0100 | <dsal> | There's someone out there. |
2021-12-16 20:00:19 +0100 | <glguy> | I was hoping they'd do something like "there's an unknown amount of padding between packets, figure out how to parse this" :) |
2021-12-16 20:00:53 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 20:00:56 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 20:02:15 +0100 | <dsal> | The zeros thing was a little confusing. I tried eating them a few different ways before I figured out just ignoring them made things work. |
2021-12-16 20:02:21 +0100 | <aplainzetakind> | When I give my parser to parseMaybe I get Nothing. I change it to parseTest and it parses fine. What is this? |
2021-12-16 20:02:55 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2021-12-16 20:03:56 +0100 | <monochrom> | dsal: I watched an episode of MacGyver in which he rigged a motorcycle into a make-shift generator. Is that one of the gross things you did to power your router? >:) |
2021-12-16 20:04:31 +0100 | <dsal> | Haha. I used RC batteries for a while. |
2021-12-16 20:04:33 +0100 | <glguy> | aplainzetakind: which library? |
2021-12-16 20:04:35 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) (Remote host closed the connection) |
2021-12-16 20:04:55 +0100 | <monochrom> | OK that's more realisitc heh |
2021-12-16 20:04:56 +0100 | <glguy> | aplainzetakind: > parseMaybe p input runs the parser p on input and returns the result inside Just on success and Nothing on failure. This function also parses eof, so if the parser doesn't consume all of its input, it will fail. |
2021-12-16 20:05:10 +0100 | <glguy> | I bet that second sentence is tripping you up |
2021-12-16 20:05:15 +0100 | ubert | (~Thunderbi@p200300ecdf1abb0334f3944fefcb567c.dip0.t-ipconnect.de) |
2021-12-16 20:06:28 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-12-16 20:06:58 +0100 | <c_wraith> | I really would like a parser library that's designed to handle fields with lengths specified before them and internal structure that needs to be parsed. |
2021-12-16 20:07:11 +0100 | <aplainzetakind> | Ah OK. |
2021-12-16 20:07:28 +0100 | <c_wraith> | the AoC problem is hardly the only place that happens |
2021-12-16 20:07:33 +0100 | <dsal> | c_wraith: I did mqtt with attoparsec. It wasn't that bad |
2021-12-16 20:07:34 +0100 | <glguy> | c_wraith: When we wanted that for parsing IP packets we made the cereal package (among some other reasons) |
2021-12-16 20:08:18 +0100 | <glguy> | this happens more in parser combinators targetted at binary parsing than text parsing |
2021-12-16 20:08:23 +0100 | <aplainzetakind> | But that's... bad. I mean, parseTest is supposed to give you information on why things fail. I'd expect it to succeed or fail exactly the same way as other parsers. |
2021-12-16 20:08:25 +0100 | <monochrom> | Yeah, I would think cereal or binary is more geared for that. Then again, what if sufficiently complex CFG is also involved... |
2021-12-16 20:09:50 +0100 | <c_wraith> | yes, it is mostly a binary format thing, but.. yeah, I want some greater ability to handle complex grammars along with it |
2021-12-16 20:09:54 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2021-12-16 20:10:13 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-12-16 20:11:32 +0100 | <glguy> | any textual language ought to have already been lexed by the time the parser's running |
2021-12-16 20:11:51 +0100 | <glguy> | and declaring how many lexemes you have sounds silly and declaring how many bytes sounds absurd |
2021-12-16 20:13:00 +0100 | HurdyGurdyBurdy | (~HurdyGurd@user/hurdygurdyburdy) |
2021-12-16 20:14:29 +0100 | mrus | (~mrus@2001:19f0:5:1535:5400:3ff:fe7d:10ae) |
2021-12-16 20:15:47 +0100 | Pickchea | (~private@user/pickchea) |
2021-12-16 20:18:42 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 20:25:32 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 240 seconds) |
2021-12-16 20:25:32 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 20:28:00 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 20:28:28 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-12-16 20:29:10 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) |
2021-12-16 20:30:21 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-12-16 20:33:24 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2021-12-16 20:35:13 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-12-16 20:37:29 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2021-12-16 20:37:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 20:38:41 +0100 | <sm> | useful for good error messages, maybe ? |
2021-12-16 20:39:17 +0100 | <geekosaur> | hate to have to rely on predeclared numbers of lexemes or bytes for that |
2021-12-16 20:39:36 +0100 | <geekosaur> | sounds like more errors likely from letting that get out of sync than would be improved by it |
2021-12-16 20:40:13 +0100 | <sm> | or.. performance ? |
2021-12-16 20:42:36 +0100 | <monochrom> | I have some disagreement with that, based on the problems caused by C string (just keep consuming until you see 0), and concerns of data transmission (in which it really is better to predeclare how many bytes to expect). |
2021-12-16 20:43:02 +0100 | <monochrom> | The C string way opens you to all kinds of DoS, first of all. |
2021-12-16 20:43:15 +0100 | <shapr> | denial of sanity? |
2021-12-16 20:43:17 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 20:43:19 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Quit: Leaving...) |
2021-12-16 20:43:19 +0100 | <geekosaur> | but that's not parsing |
2021-12-16 20:43:21 +0100 | <monochrom> | :) |
2021-12-16 20:43:41 +0100 | <geekosaur> | you can still use the same source format for either C-style or counted strings in internal format |
2021-12-16 20:44:10 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dc75:5436:188a:4913) |
2021-12-16 20:44:22 +0100 | <geekosaur> | and data transmission we're back to parsing binary vs. text even though the "binary" happens to be a text (fragment?) |
2021-12-16 20:44:37 +0100 | <geekosaur> | since the protocol is binary even if the content isn't |
2021-12-16 20:45:02 +0100 | <geekosaur> | (ignoring for the moment the poriginal Internet protocols, which didn't even pretend to handle binary) |
2021-12-16 20:45:29 +0100 | <monochrom> | OK, so next, if I design this data transmission format: how many expressions to expect, how many bytes in 1st expression, 1st expression, how many bytes in 2nd expression, 2nd expression, ... |
2021-12-16 20:46:07 +0100 | <monochrom> | then you really want a parser that plays well with "parse an expression for n bytes". |
2021-12-16 20:46:45 +0100 | <geekosaur> | again I'd claim that is a binary protocol even if the expressions are textual (bonus, easier to extend to ASTs :) |
2021-12-16 20:46:49 +0100 | <EvanR> | a checksum for catching bad encoding |
2021-12-16 20:47:57 +0100 | koz | (~koz@121.99.240.58) (Remote host closed the connection) |
2021-12-16 20:48:08 +0100 | <EvanR> | if nothing at all can be wrong, then wrongness can't be detected |
2021-12-16 20:48:15 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds) |
2021-12-16 20:48:16 +0100 | koz | (~koz@121.99.240.58) |
2021-12-16 20:48:25 +0100 | <EvanR> | but multiple layers of things that must match don't help either |
2021-12-16 20:49:35 +0100 | Maxdamantus | (~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds) |
2021-12-16 20:50:21 +0100 | Maxdamantus | (~Maxdamant@user/maxdamantus) |
2021-12-16 20:54:41 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-12-16 20:56:03 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 21:00:14 +0100 | <tomsmeding> | you know, you're all going on about delimited subparsing and I dunno what; what about just some liberal use of splitAt :p https://git.tomsmeding.com/AOC/tree/2021/16.hs |
2021-12-16 21:00:52 +0100 | <monochrom> | OK, splitAt is sufficient lazy so that if you use getInput, splitAt, setInput, it still does streaming. |
2021-12-16 21:01:13 +0100 | <monochrom> | > case splitAt 5 (1 : 2 : undefined) of (x,_) -> take 1 x |
2021-12-16 21:01:15 +0100 | <lambdabot> | [1] |
2021-12-16 21:02:14 +0100 | <tomsmeding> | also, this program worked the first time it compiled :) |
2021-12-16 21:02:17 +0100 | koz | (~koz@121.99.240.58) (Ping timeout: 240 seconds) |
2021-12-16 21:02:34 +0100 | <tomsmeding> | (well, the first time it compiled and I felt that it was time to test it) |
2021-12-16 21:03:06 +0100 | <monochrom> | I was about to code up a delimited subparsing parser monad for all of you. :) |
2021-12-16 21:03:15 +0100 | <tomsmeding> | :D |
2021-12-16 21:03:25 +0100 | <tomsmeding> | not actually too hard if you don't need to support backtracking |
2021-12-16 21:03:46 +0100 | <monochrom> | "newtype CP a = Maybe Int -> String -> Maybe (Int, String, a)" |
2021-12-16 21:04:02 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-12-16 21:04:03 +0100 | <tomsmeding> | I was half-and-half thinking about writing one, but then I realised that just writing the code directly would be quicker |
2021-12-16 21:04:19 +0100 | <tomsmeding> | monochrom: what does CP stand for? Cool Parser? |
2021-12-16 21:04:27 +0100 | <monochrom> | 1st Int being how many characters are allowed, 2nd Int how many characters used. |
2021-12-16 21:04:30 +0100 | <EvanR> | that's basically what I did |
2021-12-16 21:04:34 +0100 | <monochrom> | Counted Parser |
2021-12-16 21:04:37 +0100 | <tomsmeding> | looks decent |
2021-12-16 21:04:48 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2021-12-16 21:04:59 +0100 | <EvanR> | @src splitAt |
2021-12-16 21:04:59 +0100 | <lambdabot> | splitAt n xs = (take n xs, drop n xs) |
2021-12-16 21:05:19 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 250 seconds) |
2021-12-16 21:05:25 +0100 | <monochrom> | That is likely not the real code. |
2021-12-16 21:05:34 +0100 | <EvanR> | you don't think? |
2021-12-16 21:05:58 +0100 | <tomsmeding> | https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.List.html#splitAt |
2021-12-16 21:06:06 +0100 | <tomsmeding> | if you set USE_REPORT_PRELUDE, that's the real code :) |
2021-12-16 21:06:18 +0100 | <tomsmeding> | otherwise, no, it indeed saves iterating over the prefix twice |
2021-12-16 21:07:21 +0100 | <EvanR> | are you sure |
2021-12-16 21:08:23 +0100 | <tomsmeding> | well you never know, perhaps the machine that built my compiler was actually infected with a Thompson virus through a log4j injection vulnerability |
2021-12-16 21:08:27 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2021-12-16 21:09:02 +0100 | <EvanR> | yeah I see it goes over the input in one pass, unfortunately it still builds a thunk if you consume the left or the right result |
2021-12-16 21:09:10 +0100 | <EvanR> | of the original list |
2021-12-16 21:09:17 +0100 | <tomsmeding> | and don't consume the other one? |
2021-12-16 21:09:27 +0100 | <EvanR> | consume one then the other |
2021-12-16 21:09:45 +0100 | <tomsmeding> | except if ghc infers that you're always going to use both and does strictness analysis |
2021-12-16 21:10:00 +0100 | <tomsmeding> | though, like, how could it _not_ produce a thunk there |
2021-12-16 21:10:11 +0100 | <EvanR> | that could ever result in building whole lists ahead of time? |
2021-12-16 21:10:17 +0100 | <EvanR> | that's what I mean |
2021-12-16 21:10:38 +0100 | <tomsmeding> | I'm not sure I understand your usage of "ever" |
2021-12-16 21:10:54 +0100 | <dolio> | It means even. |
2021-12-16 21:10:57 +0100 | <monochrom> | I am not scared by "build a thunk". It beats handcoding my own equivalent micromanagement, such as me having to track the Maybe Int and Int up there in my CP. |
2021-12-16 21:11:40 +0100 | <monochrom> | I am only afraid of "build n thunks", and only when "there is an alternative, O(1)-space algorithm". |
2021-12-16 21:11:55 +0100 | <EvanR> | it would be nice if you could consume the first part and it also consumes the first part of the second part |
2021-12-16 21:12:13 +0100 | <EvanR> | so when you get to the second part you don't go back |
2021-12-16 21:12:15 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-12-16 21:12:32 +0100 | <EvanR> | and no memory builds up |
2021-12-16 21:12:43 +0100 | koz | (~koz@121.99.240.58) |
2021-12-16 21:12:49 +0100 | <tomsmeding> | but you don't, right? |
2021-12-16 21:13:07 +0100 | <tomsmeding> | if you use the complicated version of course, not the take/drop version, for that your complaint is valid |
2021-12-16 21:13:31 +0100 | <monochrom> | "drop n xs" is a thunk, too. |
2021-12-16 21:13:45 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 21:13:52 +0100 | <EvanR> | no I'm not saying the report version is different |
2021-12-16 21:14:03 +0100 | <tomsmeding> | that xs'' that gets returned in the fallback case for splitAt' is already the suffix after the first n items |
2021-12-16 21:14:21 +0100 | <monochrom> | And if you consume one node of "take n xs", you get "x : thunk(take (n-1) ...)" |
2021-12-16 21:14:24 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-12-16 21:15:57 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 240 seconds) |
2021-12-16 21:16:01 +0100 | <EvanR> | oh, xs'' is forgotten at each step |
2021-12-16 21:16:09 +0100 | <EvanR> | cool |
2021-12-16 21:16:27 +0100 | <tomsmeding> | forgotten? |
2021-12-16 21:17:01 +0100 | <tomsmeding> | it only gets produced after the n-long prefix has been traversed, and the value that is produced there is just passed along to the beginning |
2021-12-16 21:17:44 +0100 | <EvanR> | ok yeah |
2021-12-16 21:18:06 +0100 | <EvanR> | so snd you finally access is a chain of thunks n long |
2021-12-16 21:18:51 +0100 | <tomsmeding> | what computation does the n/2'th thunk do? |
2021-12-16 21:19:12 +0100 | <EvanR> | snd? |
2021-12-16 21:19:21 +0100 | <tomsmeding> | isn't the last thunk, that actually returns remainder unchanged, just passed along? |
2021-12-16 21:19:24 +0100 | <EvanR> | or grab that x'' from the split at |
2021-12-16 21:19:36 +0100 | <tomsmeding> | oh right |
2021-12-16 21:21:08 +0100 | <tomsmeding> | I would hope that ghc optimises that though, to a function with two return values |
2021-12-16 21:21:40 +0100 | shapr | (~user@12.5.211.156) (Remote host closed the connection) |
2021-12-16 21:21:53 +0100 | shapr | (~user@12.5.211.156) |
2021-12-16 21:24:27 +0100 | <EvanR> | by returning the 2nd value, that would then create list 1 ahead of time? |
2021-12-16 21:24:27 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 21:24:56 +0100 | <EvanR> | if you use 2nd value first, makes sense |
2021-12-16 21:26:14 +0100 | <EvanR> | but "intuitively" (monochroms favorite!) you probably want to consume the first list lazily, then pick up where it left off from the original list |
2021-12-16 21:26:28 +0100 | <EvanR> | in that order |
2021-12-16 21:31:59 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-12-16 21:37:30 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
2021-12-16 21:41:28 +0100 | Everything | (~Everythin@37.115.210.35) |
2021-12-16 21:42:13 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 21:42:19 +0100 | burnsidesLlama | (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-12-16 21:42:52 +0100 | <monochrom> | The core and stg code looks a bit scary about accumulating n thunks, but empirical running says it stays O(1)-space. |
2021-12-16 21:43:25 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 21:43:33 +0100 | <monochrom> | I have (xs, ys) = splitAt n [0..], n = large numbr, do {mapM_ print xs; print (take 1 ys)} |
2021-12-16 21:44:46 +0100 | <monochrom> | In core and stg, you will see the equiv of "let foo = splitAt n bar; xs = fst foo; ys = snd foo". |
2021-12-16 21:45:00 +0100 | Everything | (~Everythin@37.115.210.35) () |
2021-12-16 21:46:05 +0100 | <EvanR> | hmm |
2021-12-16 21:46:34 +0100 | mason0 | (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
2021-12-16 21:46:48 +0100 | <tomsmeding> | I was installing ghc-vis and trying it out in there, but it's not terribly enlightening; using monochrom's names: forcing ys forces the first n items of [0..] as well, after which forcing xs is only a single thunk. However, if you force xs first, then it incrementally traverses the prefix |
2021-12-16 21:48:35 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 252 seconds) |
2021-12-16 21:49:59 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2021-12-16 21:51:28 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 21:52:11 +0100 | acidjnk | (~acidjnk@p200300d0c7271e22d5fcf408496a0722.dip0.t-ipconnect.de) |
2021-12-16 21:53:24 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2021-12-16 21:53:42 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-12-16 21:54:19 +0100 | <EvanR> | i know indirection nodes can be removed by gc later, maybe a thunk that directly runs another thunk is also cleanup like that |
2021-12-16 21:54:22 +0100 | <tomsmeding> | to save you from installing it too, perhaps: https://tomsmeding.com/f/ghc-vis-splitAt.mp4 |
2021-12-16 21:54:49 +0100 | <EvanR> | simplified at gc |
2021-12-16 21:55:28 +0100 | <tomsmeding> | (I have no idea what those Selector nodes are) |
2021-12-16 21:55:41 +0100 | <tomsmeding> | (more ghc-vis demos: https://www.youtube.com/watch?v=I4lnCG18TaY) |
2021-12-16 21:55:53 +0100 | <mniip> | this looks wicked |
2021-12-16 21:56:01 +0100 | <tomsmeding> | it is, isn't it? |
2021-12-16 21:56:07 +0100 | <tomsmeding> | I was stunned when I watched that YT video |
2021-12-16 21:56:19 +0100 | <tomsmeding> | so I had to try it myself, and this seemed like an opportunity :p |
2021-12-16 21:56:47 +0100 | <mniip> | the pointers in nullary constructors though |
2021-12-16 21:56:52 +0100 | <mniip> | I wonder if something can be done about that |
2021-12-16 21:57:25 +0100 | <tomsmeding> | yeah Joachim explains something about that in the video I linked, apparently GHC's GC has a limitation where each heap object needs to be at least 2 words large |
2021-12-16 21:57:51 +0100 | <tomsmeding> | so there's "something" there, and nobody cares what |
2021-12-16 21:58:11 +0100 | <monochrom> | Ooohhh, I think you have to look up "STG update frame" and how it informs GC to expedite evaluating "ys = snd foo" so it lets go of foo. |
2021-12-16 21:58:15 +0100 | coot | (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Quit: coot) |
2021-12-16 21:59:05 +0100 | <monochrom> | I say this because I look in the Cmm code for the foo thunk, it begins with "I64[Sp - 16] = stg_upd_frame_info", i.e. pushing an "update frame" on the stack. |
2021-12-16 21:59:15 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2021-12-16 21:59:29 +0100 | <mniip> | tomsmeding, yeah I'm wondering if there's a way to introspect whether it's really something or not |
2021-12-16 21:59:39 +0100 | <monochrom> | And the STG says it too, I just didn't know to read it. It says "foo = \u ...", the "u" there means this. |
2021-12-16 22:00:04 +0100 | <tomsmeding> | mniip: no idea, all my knowledge about ghc-vis comes from that video, and also about that second word for nil :p |
2021-12-16 22:00:28 +0100 | <tomsmeding> | monochrom: that sounds cool |
2021-12-16 22:01:54 +0100 | <EvanR> | "surprisingly efficient" |
2021-12-16 22:04:16 +0100 | <monochrom> | About 20 years ago Haskell compilers/interpreters didn't pull this trick. It was a big deal, people found out that splitAt, break, span were taking up space left right and centre. |
2021-12-16 22:05:17 +0100 | <monochrom> | Your mental model of lazy evaluation and thunking was not wrong. The standard lazy evaluation model does predict that you have a problem. Someone had to invent this "update frame" business to solve it. |
2021-12-16 22:06:32 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-12-16 22:08:26 +0100 | <dolio> | I don't think that's totally accurate. |
2021-12-16 22:08:41 +0100 | <dolio> | Update frames are just part of lazy evaluation. |
2021-12-16 22:09:45 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 22:10:10 +0100 | <dolio> | Where you store the answer once it's calculated and you're walking back through the stack, so that other references don't perform the calculation again. |
2021-12-16 22:10:58 +0100 | <dolio> | And the opposite of \u is for lambdas that aren't part of names that can share work, like just a function. |
2021-12-16 22:11:30 +0100 | AWizzArd | (~code@gehrels.uberspace.de) (Changing host) |
2021-12-16 22:11:30 +0100 | AWizzArd | (~code@user/awizzard) |
2021-12-16 22:12:02 +0100 | <dolio> | But, you're talking about where the garbage collector recognizes certain things like `fst (x,y)` and opportunistically 'collects' it as `x`, right? |
2021-12-16 22:13:54 +0100 | <EvanR> | in the code for splitAt the left components are list nodes being built, and the right component is basically a computation that traverses all the way down the input list to the pickup point. Somehow by looking at the first component the second component is being 'bumped' |
2021-12-16 22:14:34 +0100 | <EvanR> | so seems different from lazy evaluation memoizing |
2021-12-16 22:14:46 +0100 | <EvanR> | since you're not looking at that second component right now |
2021-12-16 22:16:35 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 22:17:34 +0100 | <EvanR> | snd (x,y) being simplified to y by gc might explain it |
2021-12-16 22:20:47 +0100 | jeetelongname | (~jeet@88-111-159-26.dynamic.dsl.as9105.com) |
2021-12-16 22:21:07 +0100 | son0p | (~ff@2800:484:1d81:b700:d40b:900:b387:320) |
2021-12-16 22:21:50 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 260 seconds) |
2021-12-16 22:23:15 +0100 | <EvanR> | or in my random guess thunk (thunk x) is simplified to thunk x |
2021-12-16 22:23:59 +0100 | <dolio> | Oh, is that what you thought was going on? You never push two update frames in a row. |
2021-12-16 22:24:35 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 22:24:44 +0100 | <dolio> | If you would ever do that, you just point the new location to the existing one and continue. |
2021-12-16 22:26:06 +0100 | <dolio> | Otherwise you'd get stack overflows from stuff like `f x 0 = x ; f x n = let y = x in f y (n-1)` |
2021-12-16 22:27:07 +0100 | burnsidesLlama | (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
2021-12-16 22:27:09 +0100 | <EvanR> | this example doesn't involve a tuple return |
2021-12-16 22:27:31 +0100 | <EvanR> | it seems like just passing pointers to stuff |
2021-12-16 22:27:58 +0100 | <EvanR> | and building a bunch of minus 1 thunks |
2021-12-16 22:28:16 +0100 | <EvanR> | scratch that... pattern matching |
2021-12-16 22:28:19 +0100 | <dolio> | let always builds a closure. |
2021-12-16 22:28:43 +0100 | <EvanR> | really |
2021-12-16 22:29:01 +0100 | <dolio> | So, in this scenario, `f x n` is x with n updating closures around it. |
2021-12-16 22:29:17 +0100 | <Sgeo_> | My use case is a bit ridiculous (I'm vaguely curious if van Laarhoven optics are implementable in Koka as effects in place of Functors), but are there useful Functors for van Laarhoven optics that have no Monad instance? |
2021-12-16 22:29:42 +0100 | <dolio> | But it still takes constant space to evaluate, because once the first update frame is on the stack, all the subsequent ones just get set to point to the first one instead of taking more stack. |
2021-12-16 22:30:18 +0100 | <dolio> | Well, in GHC that let gets inlined, but `let` in STG always builds a closure. |
2021-12-16 22:30:40 +0100 | jumper149 | (~jumper149@static.6.71.203.116.clients.your-server.de) |
2021-12-16 22:31:24 +0100 | <jumper149> | Is it possible to derive an instance together with its OVERLAPPABLE pragma? |
2021-12-16 22:32:24 +0100 | <dolio> | My point is that if you were worried about a bunch of simple indirections like that, their stack space is clamped, at least. |
2021-12-16 22:32:42 +0100 | <dolio> | Heap space is not, I think. |
2021-12-16 22:33:39 +0100 | <EvanR> | so alternating tuple returns, moving into a new tuple return is a simple indirection? |
2021-12-16 22:33:59 +0100 | <dolio> | No, that has other frames on the stack, I think. |
2021-12-16 22:34:05 +0100 | deadmarshal | (~deadmarsh@95.38.228.81) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-12-16 22:34:41 +0100 | <Sgeo_> | ...Const isn't a monad, apparently. |
2021-12-16 22:34:42 +0100 | <geekosaur> | jumper149, pretty sure you cannot cause an instance derivation to be OVERLAPPABLE |
2021-12-16 22:35:17 +0100 | deadmarshal | (~deadmarsh@95.38.228.81) |
2021-12-16 22:35:57 +0100 | jgeerds | (~jgeerds@55d4ac73.access.ecotel.net) |
2021-12-16 22:36:09 +0100 | <jumper149> | Well I can still use OVERLAPPING on other instances though. I guess that should be enough. |
2021-12-16 22:36:52 +0100 | <geekosaur> | hm. wonder if that's worth a proposal |
2021-12-16 22:37:14 +0100 | <geekosaur> | deriving ({-# OVERLAPPABLE #-} Foo, ...) |
2021-12-16 22:40:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-12-16 22:42:17 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 22:43:05 +0100 | <jumper149> | geekosaur: It might even be possible to have something like this then: `deriving newtype ({-# OVERLAPPABLE #-} Foo) \n deriving ({-# OVERLAPPING #-} Foo) via T` |
2021-12-16 22:45:43 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 22:47:00 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 22:50:30 +0100 | <sm> | it's fairly common to provide a set of stackX.Y.yaml files, one per major ghc version supported. But for easy building you need a default stack.yaml as well. This breaks the pattern and is a hassle for scripting. A symlink seems like a reasonable solution, but does it work on windows these days ? Any other good solution ? |
2021-12-16 22:51:43 +0100 | <geekosaur> | windows 10 supports symlinks but may require administrator privileges in some versions (admin privs definitely required for earlier versions but not sure anyone cares about win7/8 these days) |
2021-12-16 22:51:59 +0100 | <geekosaur> | does stack.yaml support include files? |
2021-12-16 22:52:14 +0100 | earendel | (uid498179@user/earendel) (Quit: Connection closed for inactivity) |
2021-12-16 22:52:47 +0100 | <sm> | good question.. don't think so but I'll check |
2021-12-16 22:52:49 +0100 | cosimone | (~user@93-47-229-223.ip115.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1)) |
2021-12-16 22:54:09 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 268 seconds) |
2021-12-16 22:55:10 +0100 | <sm> | I'm having a hard time visualising the symlink experience on windows 10. If you're a regular windows 10 user and you clone a project containing a symlink, do you see a small useless file there ? |
2021-12-16 22:56:32 +0100 | <geekosaur> | symlinks don't work that way on windows, they're implemented as special filesystem nodes called reparse points. if symlinks are not supported or require greater privileges than the user has, cloning will fail with an error |
2021-12-16 22:59:15 +0100 | <sm> | ah. That sounds like something I must avoid then |
2021-12-16 22:59:32 +0100 | jeetelongname | (~jeet@88-111-159-26.dynamic.dsl.as9105.com) (Ping timeout: 240 seconds) |
2021-12-16 23:01:03 +0100 | <sm> | thanks! |
2021-12-16 23:03:15 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 23:06:39 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2021-12-16 23:07:01 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-12-16 23:07:43 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 268 seconds) |
2021-12-16 23:08:06 +0100 | jumper149 | (~jumper149@static.6.71.203.116.clients.your-server.de) (Quit: WeeChat 3.3) |
2021-12-16 23:08:39 +0100 | <sm> | though.. I have some symlinks in the repo already. Hmm |
2021-12-16 23:12:38 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 23:12:41 +0100 | pfurla_ | (~pfurla@205.185.222.148) |
2021-12-16 23:14:13 +0100 | pfurla | (~pfurla@2804:18:5827:38:71a1:6773:333f:330d) (Ping timeout: 240 seconds) |
2021-12-16 23:15:02 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-12-16 23:21:07 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 23:22:09 +0100 | nfd | (~nfd@user/nfd) (Quit: Lost terminal) |
2021-12-16 23:25:37 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) (Ping timeout: 240 seconds) |
2021-12-16 23:29:24 +0100 | alx741 | (~alx741@157.100.93.160) |
2021-12-16 23:29:42 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) |
2021-12-16 23:29:45 +0100 | pfurla | (~pfurla@177.25.182.217) |
2021-12-16 23:31:37 +0100 | pfurla_ | (~pfurla@205.185.222.148) (Ping timeout: 240 seconds) |
2021-12-16 23:33:38 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2021-12-16 23:35:05 +0100 | notzmv | (~zmv@user/notzmv) |
2021-12-16 23:37:29 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-12-16 23:37:36 +0100 | benin | (~benin@183.82.204.250) |
2021-12-16 23:39:19 +0100 | kranius | (~kranius@222.186.245.213.rev.sfr.net) |
2021-12-16 23:40:24 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-12-16 23:40:37 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2021-12-16 23:43:43 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-12-16 23:48:27 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-12-16 23:49:35 +0100 | <sm> | report from a non-admin windows 10 user - they can clone a repo with symlinks, and the symlinks are non functional but harmless (small files containing the path) |
2021-12-16 23:52:58 +0100 | <geekosaur> | interesting. must be some git weirdness |
2021-12-16 23:54:19 +0100 | <hpc> | it probably raises fewer questions than "why is git asking for admin?" |
2021-12-16 23:54:48 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:7c88:97e7:7c77:1c93) |
2021-12-16 23:57:37 +0100 | alx741 | (~alx741@157.100.93.160) |