2021-04-06 00:03:11 +0200 | dyamon | (~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-04-06 00:06:52 +0200 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2021-04-06 00:07:38 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 00:07:52 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-04-06 00:10:06 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:71b5:c607:ffb7:22fe) |
2021-04-06 00:10:41 +0200 | p8m_ | (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 240 seconds) |
2021-04-06 00:12:00 +0200 | p8m | (p8m@gateway/vpn/protonvpn/p8m) |
2021-04-06 00:13:04 +0200 | superstar64 | (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) |
2021-04-06 00:13:04 +0200 | kris-krus | (~kris-krus@78-56-32-39.static.zebra.lt) |
2021-04-06 00:13:11 +0200 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds) |
2021-04-06 00:14:09 +0200 | <superstar64> | are prism functors a thing? `prismMap :: Prism a b -> f a -> f b`, where `Prism a b = Prism (a -> b) (b -> Maybe a)` |
2021-04-06 00:15:11 +0200 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds) |
2021-04-06 00:15:24 +0200 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2021-04-06 00:15:44 +0200 | <superstar64> | i just implemented this paper https://www.mathematik.uni-marburg.de/~rendel/rendel10invertible.pdf similar pattern for partial isomorphisms, but i found out you only really need prisms |
2021-04-06 00:16:41 +0200 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
2021-04-06 00:18:15 +0200 | DavidEichmann | (~david@47.27.93.209.dyn.plus.net) (Remote host closed the connection) |
2021-04-06 00:20:30 +0200 | ADG1089 | (~aditya@122.163.139.43) (Remote host closed the connection) |
2021-04-06 00:21:14 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 00:21:47 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
2021-04-06 00:25:28 +0200 | __monty__ | (~toonn@unaffiliated/toonn) (Quit: Not today, zaeph) |
2021-04-06 00:25:43 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 00:25:57 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection) |
2021-04-06 00:26:11 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
2021-04-06 00:28:07 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:71b5:c607:ffb7:22fe) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-04-06 00:31:25 +0200 | tuomasi | (~thom@507285D4.static.ziggozakelijk.nl) |
2021-04-06 00:32:06 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-04-06 00:34:17 +0200 | rprije | (~rprije@59-102-63-15.tpgi.com.au) |
2021-04-06 00:34:51 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
2021-04-06 00:36:23 +0200 | tuomasi | (~thom@507285D4.static.ziggozakelijk.nl) (Quit: Leaving) |
2021-04-06 00:38:12 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6) |
2021-04-06 00:39:14 +0200 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.1) |
2021-04-06 00:40:30 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 00:41:00 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 00:43:31 +0200 | neiluj | (~jco@unaffiliated/neiluj) (Quit: leaving) |
2021-04-06 00:44:40 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-04-06 00:45:42 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 268 seconds) |
2021-04-06 00:47:59 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 00:48:01 +0200 | N3RGY | (~N3RGY@65.141.87.122) |
2021-04-06 00:50:56 +0200 | malumore | (~malumore@151.62.127.167) (Ping timeout: 260 seconds) |
2021-04-06 00:53:02 +0200 | royal_screwup216 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 00:56:18 +0200 | Guest50588 | (~textual@zrcout.mskcc.org) (Ping timeout: 240 seconds) |
2021-04-06 00:58:17 +0200 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 265 seconds) |
2021-04-06 00:59:02 +0200 | <Axma70544> | % :T fmapping |
2021-04-06 00:59:02 +0200 | <yahb> | Axma70544: unknown command ':T'; use :? for help. |
2021-04-06 00:59:06 +0200 | Axma70544 | Axman6 |
2021-04-06 00:59:13 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 00:59:13 +0200 | <Axman6> | % :t fmapping |
2021-04-06 00:59:13 +0200 | <yahb> | Axman6: ; <interactive>:1:1: error:; * Variable not in scope: fmapping; * Perhaps you meant one of these: `lmapping' (imported from Control.Lens), `mapping' (imported from Control.Lens), `rmapping' (imported from Control.Lens) |
2021-04-06 00:59:19 +0200 | <Axman6> | % :t mapping |
2021-04-06 00:59:19 +0200 | <yahb> | Axman6: (Functor f, Functor g) => AnIso s t a b -> Iso (f s) (g t) (f a) (g b) |
2021-04-06 00:59:26 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-04-06 00:59:50 +0200 | s00pcan | (~chris@107.181.165.217) |
2021-04-06 01:03:21 +0200 | mp___ | (mp@hell.cx) (Ping timeout: 252 seconds) |
2021-04-06 01:04:02 +0200 | Unode | (~Unode@unaffiliated/unode) (Remote host closed the connection) |
2021-04-06 01:04:25 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.1) |
2021-04-06 01:04:27 +0200 | Eliel | (~jojkaart@163.172.153.251) (Ping timeout: 252 seconds) |
2021-04-06 01:04:35 +0200 | Eliel | (~jojkaart@163.172.153.251) |
2021-04-06 01:06:14 +0200 | Unode | (~Unode@unaffiliated/unode) |
2021-04-06 01:09:21 +0200 | N3RGY | (~N3RGY@65.141.87.122) () |
2021-04-06 01:11:15 +0200 | deviantfero | (~deviantfe@190.150.27.58) (Quit: WeeChat 3.1) |
2021-04-06 01:11:21 +0200 | aenesidemus | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) |
2021-04-06 01:11:36 +0200 | deviantfero | (~deviantfe@190.150.27.58) |
2021-04-06 01:13:27 +0200 | Alleria__ | (~textual@2603-7000-3040-0000-18fd-c638-1b22-bd1e.res6.spectrum.com) |
2021-04-06 01:14:05 +0200 | kris-krus | (~kris-krus@78-56-32-39.static.zebra.lt) (Quit: Leaving) |
2021-04-06 01:14:05 +0200 | kristijonas | (~Kristijon@78-56-32-39.static.zebra.lt) (Quit: Leaving) |
2021-04-06 01:14:28 +0200 | kris-krus | (~kris-krus@78-56-32-39.static.zebra.lt) |
2021-04-06 01:14:41 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 01:14:44 +0200 | s00pcan | (~chris@107.181.165.217) (Ping timeout: 246 seconds) |
2021-04-06 01:14:57 +0200 | kris-krus | (~kris-krus@78-56-32-39.static.zebra.lt) (Remote host closed the connection) |
2021-04-06 01:15:08 +0200 | kristijonas | (~Kristijon@78-56-32-39.static.zebra.lt) |
2021-04-06 01:16:00 +0200 | kristijonas | (~Kristijon@78-56-32-39.static.zebra.lt) (Remote host closed the connection) |
2021-04-06 01:16:13 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) |
2021-04-06 01:16:41 +0200 | Morrow_ | (~MorrowM_@147.161.9.44) |
2021-04-06 01:16:42 +0200 | MorrowM | (~MorrowM_@147.161.9.44) |
2021-04-06 01:16:54 +0200 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) |
2021-04-06 01:17:16 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2021-04-06 01:17:17 +0200 | MorrowM | (~MorrowM_@147.161.9.44) (Client Quit) |
2021-04-06 01:17:20 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 01:18:32 +0200 | lotuseater | (~user@p200300e787027c008c32f0e981f17738.dip0.t-ipconnect.de) (Quit: ERC (IRC client for Emacs 27.1)) |
2021-04-06 01:18:41 +0200 | Sorny | (~Sornaensi@077213203030.dynamic.telenor.dk) |
2021-04-06 01:20:06 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
2021-04-06 01:22:27 +0200 | Sorna | (~Sornaensi@185.192.69.50) (Ping timeout: 265 seconds) |
2021-04-06 01:24:11 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 01:24:18 +0200 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 240 seconds) |
2021-04-06 01:25:17 +0200 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) |
2021-04-06 01:25:39 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-04-06 01:25:59 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) |
2021-04-06 01:26:00 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Client Quit) |
2021-04-06 01:26:23 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2021-04-06 01:26:31 +0200 | aenesidemus | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving) |
2021-04-06 01:27:27 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection) |
2021-04-06 01:27:59 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) (Quit: Leaving) |
2021-04-06 01:28:06 +0200 | <Tritlo> | Is there any way to define Foldable or Traversable for non-generic structures? E.g. I have data A = A1 A A | A2 A A A | A3 A, and I want to be able to fold over A |
2021-04-06 01:28:23 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) |
2021-04-06 01:29:05 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) (Remote host closed the connection) |
2021-04-06 01:29:17 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) |
2021-04-06 01:30:01 +0200 | <hpc> | sounds like you might want it to be a semigroup? |
2021-04-06 01:30:19 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 01:30:55 +0200 | <infinisil> | Tritlo: Check out mono-traversable |
2021-04-06 01:31:22 +0200 | <infinisil> | It defines a common way to iterate over both things like `[a]` and `Text` |
2021-04-06 01:31:51 +0200 | wrunt | (~ajc@vmx14030.hosting24.com.au) |
2021-04-06 01:32:03 +0200 | <infinisil> | https://hackage.haskell.org/package/mono-traversable-1.0.15.1/docs/Data-MonoTraversable.html#t:Mon… |
2021-04-06 01:32:40 +0200 | <Tritlo> | infinisil: thanks! Exactly what I need! |
2021-04-06 01:32:45 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Client Quit) |
2021-04-06 01:35:26 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-04-06 01:35:46 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds) |
2021-04-06 01:36:43 +0200 | tmciver | (~tmciver@cpe-172-101-40-226.maine.res.rr.com) |
2021-04-06 01:38:20 +0200 | dinciorip | (~dincio@5.170.104.221) (Quit: WeeChat 3.1) |
2021-04-06 01:39:15 +0200 | dcbdan | (~dcbdan@c-73-76-129-120.hsd1.tx.comcast.net) (Ping timeout: 260 seconds) |
2021-04-06 01:39:42 +0200 | <Axman6> | So I noticed in the latest VS Code release notes that it seems to support notebooks (I assume python notebooks). I wonder if iHaskell could work (and also, it would be very cool if HLS had iHaskell integration) |
2021-04-06 01:40:57 +0200 | dcbdan | (~dcbdan@c-73-76-129-120.hsd1.tx.comcast.net) |
2021-04-06 01:42:24 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-04-06 01:43:29 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 01:43:53 +0200 | royal_screwup216 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 01:43:53 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 01:44:13 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 01:44:17 +0200 | jakalx | (~jakalx@base.jakalx.net) ("Error from remote client") |
2021-04-06 01:44:21 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 01:45:15 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-04-06 01:46:58 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-04-06 01:47:35 +0200 | cyphase | (~cyphase@unaffiliated/cyphase) (Ping timeout: 265 seconds) |
2021-04-06 01:48:03 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 01:49:02 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2021-04-06 01:49:03 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 01:50:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-04-06 01:51:19 +0200 | cyphase | (~cyphase@unaffiliated/cyphase) |
2021-04-06 01:52:51 +0200 | thc202 | (~thc202@unaffiliated/thc202) (Ping timeout: 245 seconds) |
2021-04-06 01:53:38 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
2021-04-06 01:56:21 +0200 | tanner_ | (~tanner@216.106.138.184) |
2021-04-06 01:59:19 +0200 | tanner_ | (~tanner@216.106.138.184) (Client Quit) |
2021-04-06 01:59:39 +0200 | tanner_ | (~tanner@216.106.138.184) |
2021-04-06 02:01:38 +0200 | <edwardk> | lens also offers 'each' in the case you might actually want to trade out As for Bs or some other limited subset |
2021-04-06 02:01:41 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-04-06 02:02:13 +0200 | tanner_ | (~tanner@216.106.138.184) (Client Quit) |
2021-04-06 02:06:37 +0200 | hypercube | (~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) |
2021-04-06 02:07:28 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 02:11:39 +0200 | <Tritlo> | edwardk: thanks! |
2021-04-06 02:12:58 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
2021-04-06 02:13:09 +0200 | shailangsa | (~shailangs@host86-186-177-164.range86-186.btcentralplus.com) (Ping timeout: 246 seconds) |
2021-04-06 02:13:11 +0200 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds) |
2021-04-06 02:14:15 +0200 | tetrahedron | (hypercube@gateway/vpn/protonvpn/hypercube) |
2021-04-06 02:15:31 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 02:17:03 +0200 | hypercube | (~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 260 seconds) |
2021-04-06 02:20:22 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 02:25:39 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-04-06 02:25:58 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) |
2021-04-06 02:28:50 +0200 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2021-04-06 02:34:45 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 02:35:13 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 246 seconds) |
2021-04-06 02:35:41 +0200 | turq | (~electro@unaffiliated/turq) (Ping timeout: 240 seconds) |
2021-04-06 02:35:55 +0200 | shailangsa | (~shailangs@host86-186-177-179.range86-186.btcentralplus.com) |
2021-04-06 02:36:46 +0200 | turq | (~electro@138.197.8.173) |
2021-04-06 02:38:40 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-04-06 02:42:53 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6) |
2021-04-06 02:55:39 +0200 | ezrakilty | (~ezrakilty@97-126-95-37.tukw.qwest.net) |
2021-04-06 02:56:13 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 265 seconds) |
2021-04-06 02:58:44 +0200 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) |
2021-04-06 02:59:08 +0200 | ezrakilty | (~ezrakilty@97-126-95-37.tukw.qwest.net) (Client Quit) |
2021-04-06 03:00:23 +0200 | haasn | (~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
2021-04-06 03:00:23 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
2021-04-06 03:01:33 +0200 | haasn | (~nand@mpv/developer/haasn) |
2021-04-06 03:02:15 +0200 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2021-04-06 03:04:26 +0200 | Morrow_ | (~MorrowM_@147.161.9.44) (Ping timeout: 240 seconds) |
2021-04-06 03:07:40 +0200 | hexfive | (~hexfive@50.35.83.177) |
2021-04-06 03:09:20 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 03:10:26 +0200 | bitmapper | (uid464869@gateway/web/irccloud.com/x-fukzxaddseekbgyz) |
2021-04-06 03:17:41 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) (Ping timeout: 240 seconds) |
2021-04-06 03:18:00 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 03:21:15 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 03:22:23 +0200 | Tario | (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
2021-04-06 03:22:31 +0200 | xff0x | (~xff0x@2001:1a81:523f:b000:30db:80f7:2aff:f171) (Ping timeout: 250 seconds) |
2021-04-06 03:22:46 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
2021-04-06 03:24:10 +0200 | Tario | (~Tario@200.119.187.21) |
2021-04-06 03:24:17 +0200 | xff0x | (~xff0x@2001:1a81:5274:b300:d2ad:1716:ab64:e445) |
2021-04-06 03:25:39 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-04-06 03:25:41 +0200 | Morrow_ | (~MorrowM_@147.161.9.44) |
2021-04-06 03:25:41 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
2021-04-06 03:25:59 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) |
2021-04-06 03:29:01 +0200 | rosterok | (uid236576@gateway/web/irccloud.com/x-rwvwjsgikbgkbaif) (Quit: Connection closed for inactivity) |
2021-04-06 03:36:06 +0200 | hiroaki | (~hiroaki@2a02:8108:8c40:2bb8:bf0d:f77b:ccaf:dfd1) (Ping timeout: 246 seconds) |
2021-04-06 03:37:49 +0200 | viluon | (uid453725@gateway/web/irccloud.com/x-gdkvwokxpicoslby) (Quit: Connection closed for inactivity) |
2021-04-06 03:37:50 +0200 | Tario | (~Tario@200.119.187.21) (Read error: Connection reset by peer) |
2021-04-06 03:38:47 +0200 | Tario | (~Tario@201.192.165.173) |
2021-04-06 03:43:13 +0200 | Morrow_ | (~MorrowM_@147.161.9.44) (Quit: Leaving) |
2021-04-06 03:43:32 +0200 | Morrow_ | (~MorrowM_@147.161.9.44) |
2021-04-06 03:46:00 +0200 | vv8 | (~egp_@128-71-69-136.broadband.corbina.ru) (Ping timeout: 265 seconds) |
2021-04-06 03:47:27 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 265 seconds) |
2021-04-06 03:47:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 03:49:21 +0200 | superstar64 | (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Quit: Connection closed) |
2021-04-06 03:50:40 +0200 | CMCDragonkai2 | (~Thunderbi@120.18.215.85) |
2021-04-06 03:57:29 +0200 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-04-06 03:58:01 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
2021-04-06 03:58:20 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 03:58:22 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 03:58:24 +0200 | stree | (~stree@68.36.8.116) (Quit: Caught exception) |
2021-04-06 03:58:46 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 03:59:28 +0200 | Alleria_ | (~AllahuAkb@2603-7000-3040-0000-e074-3699-e1b9-39a2.res6.spectrum.com) (Remote host closed the connection) |
2021-04-06 04:01:43 +0200 | conal | (~conal@64.71.133.70) |
2021-04-06 04:06:25 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-04-06 04:06:55 +0200 | juri__ | (~juri@79.140.114.222) |
2021-04-06 04:08:44 +0200 | urodna_ | (~urodna@unaffiliated/urodna) (Quit: urodna_) |
2021-04-06 04:09:41 +0200 | juri_ | (~juri@79.140.122.136) (Ping timeout: 240 seconds) |
2021-04-06 04:10:37 +0200 | drbean_ | (~drbean@TC210-63-209-214.static.apol.com.tw) |
2021-04-06 04:21:59 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-04-06 04:22:04 +0200 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2021-04-06 04:26:41 +0200 | carlomagno | (~cararell@148.87.23.11) (Quit: Leaving.) |
2021-04-06 04:27:05 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds) |
2021-04-06 04:37:04 +0200 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2021-04-06 04:46:25 +0200 | Morrow_ | (~MorrowM_@147.161.9.44) (Ping timeout: 260 seconds) |
2021-04-06 04:48:26 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) (Ping timeout: 240 seconds) |
2021-04-06 04:50:02 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection) |
2021-04-06 04:52:08 +0200 | aerona | (~aerona@2600:6c54:4600:f300:3cfc:ae1:3be3:38e1) (Remote host closed the connection) |
2021-04-06 04:52:12 +0200 | rajivr | (uid269651@gateway/web/irccloud.com/x-capllcjtsollkkrc) |
2021-04-06 04:53:09 +0200 | gnumonic | (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) |
2021-04-06 04:53:14 +0200 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-zbthekzvhrqpupmy) |
2021-04-06 04:53:20 +0200 | solvr | (57e3c46d@87.227.196.109) |
2021-04-06 04:54:19 +0200 | theDon | (~td@muedsl-82-207-238-169.citykom.de) (Ping timeout: 260 seconds) |
2021-04-06 04:56:02 +0200 | theDon | (~td@94.134.91.185) |
2021-04-06 04:57:44 +0200 | FinnElija | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
2021-04-06 04:57:44 +0200 | finn_elija | Guest60184 |
2021-04-06 04:57:44 +0200 | FinnElija | finn_elija |
2021-04-06 04:59:52 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 05:01:09 +0200 | Guest60184 | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 240 seconds) |
2021-04-06 05:05:23 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds) |
2021-04-06 05:05:56 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 268 seconds) |
2021-04-06 05:06:20 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-04-06 05:08:39 +0200 | sagax | (~sagax_nb@213.138.71.146) (Quit: Konversation terminated!) |
2021-04-06 05:08:53 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Client Quit) |
2021-04-06 05:16:00 +0200 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-04-06 05:16:15 +0200 | Tario | (~Tario@201.192.165.173) |
2021-04-06 05:18:50 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 05:20:45 +0200 | kum0 | (~kumo@139.180.144.166) |
2021-04-06 05:24:25 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 268 seconds) |
2021-04-06 05:25:21 +0200 | solvr | (57e3c46d@87.227.196.109) (Quit: Connection closed) |
2021-04-06 05:37:14 +0200 | cake_eater | (~kiweun@2607:fea8:2a62:9600:9db9:9a23:8a1e:6f8c) (Remote host closed the connection) |
2021-04-06 05:37:30 +0200 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-04-06 05:39:34 +0200 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-04-06 05:40:03 +0200 | Hellaenergy | (~Hellaener@178.239.168.171) (Remote host closed the connection) |
2021-04-06 05:45:11 +0200 | ba | (bandali@fsf/emeritus/bandali) (Quit: ZNC - https://znc.in) |
2021-04-06 05:47:36 +0200 | vv8 | (~egp_@128-71-69-136.broadband.corbina.ru) |
2021-04-06 05:51:23 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) |
2021-04-06 05:55:45 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 05:55:50 +0200 | sankarshan | (~sankarsha@185.204.1.185) |
2021-04-06 06:00:15 +0200 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
2021-04-06 06:00:48 +0200 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) |
2021-04-06 06:06:41 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 240 seconds) |
2021-04-06 06:15:31 +0200 | raym | (~ray@115.187.32.14) |
2021-04-06 06:18:35 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 06:20:03 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 06:24:46 +0200 | frozenErebus | (~frozenEre@37.231.244.249) |
2021-04-06 06:27:25 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 06:31:54 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 260 seconds) |
2021-04-06 06:33:12 +0200 | irc_user | (uid423822@gateway/web/irccloud.com/x-qgihnlrmtbcmmifd) |
2021-04-06 06:34:27 +0200 | irc_user | (uid423822@gateway/web/irccloud.com/x-qgihnlrmtbcmmifd) () |
2021-04-06 06:42:16 +0200 | <koz_> | What's a good way to generate a ByteArray inside a quasi-quoter? |
2021-04-06 06:42:23 +0200 | <koz_> | ByteArray# is fine too. |
2021-04-06 06:42:25 +0200 | conal | (~conal@64.71.133.70) (Ping timeout: 265 seconds) |
2021-04-06 06:43:32 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) |
2021-04-06 06:43:42 +0200 | jakalx | (~jakalx@base.jakalx.net) ("Error from remote client") |
2021-04-06 06:49:48 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-04-06 06:52:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-04-06 06:54:56 +0200 | berberman | (~berberman@unaffiliated/berberman) |
2021-04-06 06:55:49 +0200 | berberman_ | (~berberman@unaffiliated/berberman) (Ping timeout: 245 seconds) |
2021-04-06 06:56:46 +0200 | Benett | (~Benett@unaffiliated/benett) (Remote host closed the connection) |
2021-04-06 06:59:19 +0200 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
2021-04-06 07:00:05 +0200 | mp___ | (mp@hell.cx) |
2021-04-06 07:06:01 +0200 | gnumonic | (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2021-04-06 07:09:47 +0200 | Benett | (~Benett@unaffiliated/benett) |
2021-04-06 07:12:27 +0200 | Alleria__ | (~textual@2603-7000-3040-0000-18fd-c638-1b22-bd1e.res6.spectrum.com) (Ping timeout: 260 seconds) |
2021-04-06 07:12:46 +0200 | Alleria | (~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) |
2021-04-06 07:13:11 +0200 | Alleria | Guest66883 |
2021-04-06 07:13:47 +0200 | emmanuel_erc | (~user@cpe-74-71-106-64.nyc.res.rr.com) |
2021-04-06 07:16:28 +0200 | plutoniix | (~q@node-ukd.pool-125-24.dynamic.totinternet.net) (Quit: Leaving) |
2021-04-06 07:17:27 +0200 | sankarshan | (~sankarsha@185.204.1.185) (Remote host closed the connection) |
2021-04-06 07:17:31 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:17:50 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) (Remote host closed the connection) |
2021-04-06 07:18:10 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:18:19 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) (Remote host closed the connection) |
2021-04-06 07:18:59 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:19:39 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) (Remote host closed the connection) |
2021-04-06 07:19:54 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:19:55 +0200 | dougsko | (~dougsko@139.28.218.148) |
2021-04-06 07:19:57 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 07:22:34 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) (Read error: Connection reset by peer) |
2021-04-06 07:23:24 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:24:41 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 252 seconds) |
2021-04-06 07:26:37 +0200 | v01d4lph_ | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:26:37 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) (Read error: Connection reset by peer) |
2021-04-06 07:32:46 +0200 | yoneda | (~mike@193.206.102.122) |
2021-04-06 07:33:26 +0200 | aerona | (~aerona@2600:6c54:4600:f300:e355:7c0:28e4:1962) |
2021-04-06 07:34:02 +0200 | v01d4lph_ | (~v01d4lph4@223.177.184.123) (Read error: No route to host) |
2021-04-06 07:34:12 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) (Ping timeout: 252 seconds) |
2021-04-06 07:34:19 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) |
2021-04-06 07:35:32 +0200 | CMCDragonkai2 | (~Thunderbi@120.18.215.85) (Quit: CMCDragonkai2) |
2021-04-06 07:37:11 +0200 | proteusguy | (~proteusgu@cm-58-10-155-117.revip7.asianet.co.th) (Ping timeout: 260 seconds) |
2021-04-06 07:37:35 +0200 | waleee-cl | (uid373333@gateway/web/irccloud.com/x-jauuiqcdkjlizmjn) (Quit: Connection closed for inactivity) |
2021-04-06 07:37:46 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) |
2021-04-06 07:37:52 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:1112:7dc0:d4f4:fdda) |
2021-04-06 07:37:54 +0200 | vchlup | (~vchlup@nat.brnet.cz) |
2021-04-06 07:42:54 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection) |
2021-04-06 07:43:01 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:1112:7dc0:d4f4:fdda) (Ping timeout: 276 seconds) |
2021-04-06 07:43:39 +0200 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2021-04-06 07:44:15 +0200 | <edwardk> | koz_ does it need to be an actual byte array or can you get away with something like an Addr# literal? |
2021-04-06 07:47:40 +0200 | Tario | (~Tario@201.192.165.173) (Ping timeout: 265 seconds) |
2021-04-06 07:48:45 +0200 | <edwardk> | you can produce an Addr# literal and then allocate a bytearray and copy it into the bytearray from the slab of memory. (or if we ever get the ability to talk about 'unmanaged' bytearray#'s, then you'd be able to just directly point an unmanaged bytearray# at the addr# literal) |
2021-04-06 07:49:14 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 07:50:57 +0200 | nut | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-04-06 07:52:24 +0200 | Varis | (~Tadas@unaffiliated/varis) |
2021-04-06 07:56:17 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-04-06 07:57:57 +0200 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2021-04-06 08:04:18 +0200 | Pickchea | (~private@unaffiliated/pickchea) |
2021-04-06 08:05:08 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2021-04-06 08:06:33 +0200 | gnumonic | (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) |
2021-04-06 08:08:03 +0200 | v01d4lph_ | (~v01d4lph4@223.177.183.124) |
2021-04-06 08:08:56 +0200 | v01d4lph4 | (~v01d4lph4@223.177.184.123) (Ping timeout: 265 seconds) |
2021-04-06 08:11:41 +0200 | alx741 | (~alx741@181.196.69.45) (Ping timeout: 240 seconds) |
2021-04-06 08:11:49 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-04-06 08:14:50 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-04-06 08:18:48 +0200 | mice-user | (b4960d8b@180-150-13-139.b4960d.syd.static.aussiebb.net) |
2021-04-06 08:22:26 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) |
2021-04-06 08:22:26 +0200 | v01d4lph_ | (~v01d4lph4@223.177.183.124) (Read error: Connection reset by peer) |
2021-04-06 08:22:50 +0200 | <koz_> | edwardk: Nope, has to be an actual byte array. |
2021-04-06 08:24:20 +0200 | Desmond373 | (b49673ba@180.150.115.186) |
2021-04-06 08:24:24 +0200 | <Axman6> | There's no IsList instance for ByteArray# right? (mostly unrelated to koz_'s question) |
2021-04-06 08:24:32 +0200 | alx741 | (~alx741@181.196.68.238) |
2021-04-06 08:26:06 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) (Ping timeout: 240 seconds) |
2021-04-06 08:26:24 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) (Client Quit) |
2021-04-06 08:26:26 +0200 | dyamon | (~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net) |
2021-04-06 08:27:11 +0200 | dyamon | (~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net) (Client Quit) |
2021-04-06 08:28:16 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 265 seconds) |
2021-04-06 08:28:34 +0200 | <koz_> | There isn't, but there _is_ for ByteArray in primitive. |
2021-04-06 08:30:54 +0200 | frozenErebus | (~frozenEre@37.231.244.249) (Quit: leaving) |
2021-04-06 08:31:12 +0200 | frozenErebus | (~frozenEre@37.231.244.249) |
2021-04-06 08:31:21 +0200 | proteusguy | (~proteusgu@cm-58-10-209-239.revip7.asianet.co.th) |
2021-04-06 08:31:51 +0200 | <edwardk> | Axman6: can't be. wrong kind |
2021-04-06 08:35:53 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) |
2021-04-06 08:38:27 +0200 | <Axman6> | :'( that's kind of annoying |
2021-04-06 08:41:22 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 08:42:31 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2021-04-06 08:44:20 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) (Remote host closed the connection) |
2021-04-06 08:44:26 +0200 | <edwardk> | Axman6: working on it https://github.com/ekmett/unboxed |
2021-04-06 08:45:32 +0200 | <edwardk> | 9.2 gives us unlifted data declarations, and moves BoxedRep in with Unlifted and Lifted as specializations of the same type. so you can now in theory write code that is able to instantiate instances for both Lifted and Unlifted pointer types easily. e.g. Eq |
2021-04-06 08:48:10 +0200 | stree | (~stree@68.36.8.116) (Quit: Caught exception) |
2021-04-06 08:48:36 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 08:49:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 08:49:37 +0200 | amerocu[m] | (amerocumat@gateway/shell/matrix.org/x-vtmtlyxuaeoeiccp) |
2021-04-06 08:50:49 +0200 | solvr | (57e3c46d@87.227.196.109) |
2021-04-06 08:57:14 +0200 | Sornaensis | (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) |
2021-04-06 08:57:33 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-04-06 08:58:28 +0200 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
2021-04-06 09:00:15 +0200 | Sorny | (~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 260 seconds) |
2021-04-06 09:01:24 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) |
2021-04-06 09:01:55 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) (Read error: Connection reset by peer) |
2021-04-06 09:07:03 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) |
2021-04-06 09:08:15 +0200 | srk | (~sorki@2a00:1028:83a6:10aa:333a:80ef:9696:7eea) |
2021-04-06 09:09:17 +0200 | nut` | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-04-06 09:10:38 +0200 | Rudd0 | (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds) |
2021-04-06 09:12:08 +0200 | howdoi | (uid224@gateway/web/irccloud.com/x-sykzqmpormchxxqk) (Quit: Connection closed for inactivity) |
2021-04-06 09:12:40 +0200 | gtk | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-04-06 09:15:38 +0200 | nut | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
2021-04-06 09:16:56 +0200 | srk | (~sorki@2a00:1028:83a6:10aa:333a:80ef:9696:7eea) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-04-06 09:18:04 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection) |
2021-04-06 09:19:03 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 09:20:28 +0200 | frozenErebus | (~frozenEre@37.231.244.249) (Ping timeout: 265 seconds) |
2021-04-06 09:20:37 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 09:20:49 +0200 | bgamari_ | (~bgamari@2001:470:e438::1) (Ping timeout: 245 seconds) |
2021-04-06 09:21:01 +0200 | bgamari | (~bgamari@72.65.102.162) |
2021-04-06 09:21:14 +0200 | Varis | (~Tadas@unaffiliated/varis) |
2021-04-06 09:22:31 +0200 | kamotaketsunumin | (6769235f@103.105.35.95) |
2021-04-06 09:22:31 +0200 | <kamotaketsunumin> | https://media.discordapp.net/attachments/747637197548552193/828892217254739978/Screenshot_20210406… |
2021-04-06 09:22:49 +0200 | <kamotaketsunumin> | What cause Maybe () instead of IO() in there? anyone know? |
2021-04-06 09:23:06 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) (Ping timeout: 240 seconds) |
2021-04-06 09:23:10 +0200 | <kamotaketsunumin> | I'm trying to desugar do notation |
2021-04-06 09:23:30 +0200 | <DigitalKiwi> | cabal-install-ghc74: Temporary version of cabal-install for ghc-7.4 |
2021-04-06 09:23:41 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 245 seconds) |
2021-04-06 09:23:54 +0200 | <raehik> | kamotaketsunumin: lookup returns a Maybe |
2021-04-06 09:23:57 +0200 | <DigitalKiwi> | i do not think temporary means what they think it means |
2021-04-06 09:24:22 +0200 | <raehik> | looks like it's expecting the lambda on the end to return a Maybe because of that |
2021-04-06 09:24:27 +0200 | <DigitalKiwi> | is from 2012 lol |
2021-04-06 09:24:46 +0200 | <kamotaketsunumin> | how to return a Just instead? |
2021-04-06 09:24:52 +0200 | <kamotaketsunumin> | I though lookup is return Just |
2021-04-06 09:24:59 +0200 | <kamotaketsunumin> | from type signature I check it |
2021-04-06 09:25:05 +0200 | <raehik> | :t fromJust |
2021-04-06 09:25:07 +0200 | <lambdabot> | Maybe a -> a |
2021-04-06 09:25:12 +0200 | <kamotaketsunumin> | Oh no it's Maybe b |
2021-04-06 09:25:13 +0200 | <DigitalKiwi> | well, last one...copyright says 2005. all kinds of not temporary lol |
2021-04-06 09:25:16 +0200 | <kamotaketsunumin> | Eq a => a -> [(a, b)] -> Maybe b |
2021-04-06 09:25:24 +0200 | <kamotaketsunumin> | did I have to do case of ? |
2021-04-06 09:25:33 +0200 | <raehik> | your commented code essentially does fromJust via a pattern match so same thing |
2021-04-06 09:25:38 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) |
2021-04-06 09:25:43 +0200 | <raehik> | :t return . fromJust |
2021-04-06 09:25:44 +0200 | <lambdabot> | Monad m => Maybe a -> m a |
2021-04-06 09:25:53 +0200 | <raehik> | That gets you what you want (replace m with IO) |
2021-04-06 09:25:53 +0200 | <kamotaketsunumin> | what? |
2021-04-06 09:26:01 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 09:26:12 +0200 | <kamotaketsunumin> | formJust ? |
2021-04-06 09:26:23 +0200 | Desmond373 | (b49673ba@180.150.115.186) (Quit: Connection closed) |
2021-04-06 09:26:24 +0200 | <kamotaketsunumin> | what is fromJust here? |
2021-04-06 09:26:32 +0200 | <raehik> | fromJust takes a Maybe and returns the term stored in Just |
2021-04-06 09:26:40 +0200 | <raehik> | it takes a Maybe a and returns the a |
2021-04-06 09:26:46 +0200 | <raehik> | if it's Nothing, it errors out |
2021-04-06 09:26:59 +0200 | <kamotaketsunumin> | ahhh I see, lemme try. |
2021-04-06 09:27:10 +0200 | <kamotaketsunumin> | strange, it's not in Prelude? |
2021-04-06 09:27:17 +0200 | <kamotaketsunumin> | did I have to add module/library? |
2021-04-06 09:27:22 +0200 | <raehik> | so use fromJust to unwrap, and rewrap in IO with return |
2021-04-06 09:27:31 +0200 | <raehik> | yeah, import Data.Maybe (fromJust) |
2021-04-06 09:27:40 +0200 | <kamotaketsunumin> | ohh okay Data.Maybe, I got it. |
2021-04-06 09:27:46 +0200 | <raehik> | (Hoogle is handy for figuring out where to import things) |
2021-04-06 09:28:14 +0200 | <kamotaketsunumin> | hoogle is hard to explore? |
2021-04-06 09:28:18 +0200 | <kamotaketsunumin> | Am I the only one? |
2021-04-06 09:28:26 +0200 | <raehik> | https://hoogle.haskell.org/?hoogle=fromJust |
2021-04-06 09:29:05 +0200 | <raehik> | I think the UI is fine personally |
2021-04-06 09:29:32 +0200 | <raehik> | some features might be unclear I'll agree |
2021-04-06 09:30:32 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2021-04-06 09:31:46 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) |
2021-04-06 09:32:28 +0200 | <DigitalKiwi> | it took me years to find the Contents button on hackage |
2021-04-06 09:32:56 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) |
2021-04-06 09:33:16 +0200 | <kamotaketsunumin> | main = getArgs >>= \(command : args) -> fromJust (lookup command dispatch) args |
2021-04-06 09:33:16 +0200 | <kamotaketsunumin> | great |
2021-04-06 09:33:24 +0200 | <kamotaketsunumin> | it's just work |
2021-04-06 09:33:26 +0200 | <raehik> | nice! |
2021-04-06 09:33:28 +0200 | srk | (~sorki@unaffiliated/srk) |
2021-04-06 09:33:59 +0200 | <raehik> | sometimes you can replace the fromJust lookup pattern with a function |
2021-04-06 09:34:14 +0200 | <raehik> | that way you can remove the fromJust and feel a bit safer |
2021-04-06 09:35:06 +0200 | <kamotaketsunumin> | emm really? I don't know what happen under fromJust, is there pattern matching behind it? the type signatur just Maybe a -> a |
2021-04-06 09:35:19 +0200 | <kamotaketsunumin> | safer means no error thrown right? |
2021-04-06 09:35:23 +0200 | <raehik> | yes, if you pass a Nothing to fromJust it throws a runtime error |
2021-04-06 09:35:27 +0200 | <kamotaketsunumin> | and the program crash |
2021-04-06 09:35:33 +0200 | <kamotaketsunumin> | yeah |
2021-04-06 09:35:53 +0200 | <raehik> | in your code it probably doesn't matter all that much because it would be a clear programmer error and probably happen early |
2021-04-06 09:36:09 +0200 | <raehik> | but it's good practice to avoid unsafe stuff where possible |
2021-04-06 09:36:23 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-04-06 09:37:11 +0200 | <raehik> | try changing your `[(String, [String] -> IO ())]` to a `String -> ([String] -> IO ())` |
2021-04-06 09:37:22 +0200 | beka | (~beka@gothdyke.mom) (Quit: ZNC 1.6.5+deb1+deb9u2 - http://znc.in) |
2021-04-06 09:37:34 +0200 | <kamotaketsunumin> | hstodo: Main.hs:30:20-79: Non-exhaustive patterns in lambda <= funny |
2021-04-06 09:38:02 +0200 | <kamotaketsunumin> | raehik why though? |
2021-04-06 09:38:10 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 09:38:31 +0200 | <raehik> | why change it? to clarify your types |
2021-04-06 09:38:34 +0200 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) |
2021-04-06 09:39:04 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:49c1:f7f6:7281:486d) |
2021-04-06 09:39:06 +0200 | <kamotaketsunumin> | so? no more lookup? |
2021-04-06 09:39:13 +0200 | <raehik> | no huge reason, it stood out to me because it was something I noticed in a codebase recently |
2021-04-06 09:39:32 +0200 | beka | (~beka@gothdyke.mom) |
2021-04-06 09:39:49 +0200 | <raehik> | yes, you could replace `fromJust (lookup command dispatch) args` with `(dispatch command) args` |
2021-04-06 09:40:51 +0200 | <raehik> | you'll want to change the type as I mentioned, and the dispatch function should be `case cmd of "add" -> add` etc |
2021-04-06 09:41:24 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit) |
2021-04-06 09:41:36 +0200 | sayola | (~vekto@dslb-002-201-085-157.002.201.pools.vodafone-ip.de) (Ping timeout: 245 seconds) |
2021-04-06 09:41:43 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 09:42:04 +0200 | <kamotaketsunumin> | ah, I use guard instead |
2021-04-06 09:42:57 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan) |
2021-04-06 09:43:00 +0200 | <raehik> | yep any way is fine |
2021-04-06 09:43:19 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) |
2021-04-06 09:43:19 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:49c1:f7f6:7281:486d) (Ping timeout: 258 seconds) |
2021-04-06 09:43:21 +0200 | <raehik> | if lambda case was default yet I would've said that, it's clearest and shortest |
2021-04-06 09:43:23 +0200 | <kamotaketsunumin> | ah the way dispatch store is in list, yeah perhaps it's good to just store dispatch as a Param(:t String) -> Command(:t [String] -> IO()) |
2021-04-06 09:43:25 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) (Client Quit) |
2021-04-06 09:43:45 +0200 | <raehik> | great idea |
2021-04-06 09:43:46 +0200 | <kamotaketsunumin> | lol, I learn a lot of stuff and it's just make sense now. |
2021-04-06 09:43:52 +0200 | lurkless | (~ll@unaffiliated/lurkless) |
2021-04-06 09:43:57 +0200 | aerona | (~aerona@2600:6c54:4600:f300:e355:7c0:28e4:1962) (Remote host closed the connection) |
2021-04-06 09:44:33 +0200 | <raehik> | do you know how to make a type synonym? you should do that for the command at least |
2021-04-06 09:45:04 +0200 | chele | (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
2021-04-06 09:45:07 +0200 | <raehik> | > type Command = [String] -> IO () |
2021-04-06 09:45:09 +0200 | <lambdabot> | <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘type’ |
2021-04-06 09:45:40 +0200 | <raehik> | (ok I don't know how to use the bots here lol) |
2021-04-06 09:46:02 +0200 | <kamotaketsunumin> | yeah I do know. |
2021-04-06 09:46:25 +0200 | <kamotaketsunumin> | I'm just get into newtype, but didn't use it right now. |
2021-04-06 09:46:34 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
2021-04-06 09:46:35 +0200 | <kamotaketsunumin> | a stuff like deriving, etc. |
2021-04-06 09:46:59 +0200 | jespada | (~jespada@90.254.243.187) |
2021-04-06 09:47:39 +0200 | JON13 | (a5e1c284@165.225.194.132) |
2021-04-06 09:47:51 +0200 | gnumonic | (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2021-04-06 09:48:03 +0200 | JON13 | (a5e1c284@165.225.194.132) (Client Quit) |
2021-04-06 09:49:10 +0200 | kritzefitz | (~kritzefit@p548c9398.dip0.t-ipconnect.de) |
2021-04-06 09:49:20 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 09:49:45 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2021-04-06 09:53:48 +0200 | <kamotaketsunumin> | @raeh |
2021-04-06 09:53:48 +0200 | <lambdabot> | Unknown command, try @list |
2021-04-06 09:53:49 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 250 seconds) |
2021-04-06 09:54:05 +0200 | <kamotaketsunumin> | raehik what big codebase you see? |
2021-04-06 09:54:15 +0200 | <kamotaketsunumin> | what kind of app is it? |
2021-04-06 09:54:24 +0200 | thc202 | (~thc202@unaffiliated/thc202) |
2021-04-06 09:56:06 +0200 | <raehik> | a compiler I work on, they used the same lookup pattern |
2021-04-06 09:56:23 +0200 | <kamotaketsunumin> | compiler, oh right. |
2021-04-06 09:56:29 +0200 | <raehik> | kamotaketsunumin: I'm also very new to Haskell so I wasn't sure if there was a reason to use it |
2021-04-06 09:56:30 +0200 | <kamotaketsunumin> | are you making a programming language? |
2021-04-06 09:56:33 +0200 | bitmapper | (uid464869@gateway/web/irccloud.com/x-fukzxaddseekbgyz) (Quit: Connection closed for inactivity) |
2021-04-06 09:56:42 +0200 | <raehik> | now I'm quite certain it's an anti-pattern |
2021-04-06 09:56:50 +0200 | <kamotaketsunumin> | haskell is used in two major thing, compiler or blockchain hahaha |
2021-04-06 09:57:03 +0200 | <raehik> | no I'm simply working on some research stuff |
2021-04-06 09:57:30 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) |
2021-04-06 09:59:51 +0200 | xourt | (d4c620ea@212-198-32-234.rev.numericable.fr) |
2021-04-06 10:04:05 +0200 | gitgood | (~gitgood@80-44-12-39.dynamic.dsl.as9105.com) (Quit: Probably away to do something really awesome) |
2021-04-06 10:07:00 +0200 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) |
2021-04-06 10:09:57 +0200 | hendursa1 | (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 240 seconds) |
2021-04-06 10:10:38 +0200 | kritzefitz | (~kritzefit@p548c9398.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2021-04-06 10:10:56 +0200 | kritzefitz | (~kritzefit@2003:5b:203b:200::10:49) |
2021-04-06 10:17:12 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) |
2021-04-06 10:17:24 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2021-04-06 10:17:55 +0200 | jack1909_ | (~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca) (Ping timeout: 248 seconds) |
2021-04-06 10:20:04 +0200 | jack1909 | (~qpls@23.105.170.167) |
2021-04-06 10:20:50 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 10:25:31 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 276 seconds) |
2021-04-06 10:26:02 +0200 | Franciman | (~francesco@host-87-20-23-243.retail.telecomitalia.it) |
2021-04-06 10:28:27 +0200 | jack1909 | (~qpls@23.105.170.167) (Ping timeout: 260 seconds) |
2021-04-06 10:28:55 +0200 | gnumonic | (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) |
2021-04-06 10:28:58 +0200 | shailangsa | (~shailangs@host86-186-177-179.range86-186.btcentralplus.com) (Ping timeout: 260 seconds) |
2021-04-06 10:29:21 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan) |
2021-04-06 10:29:40 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2021-04-06 10:30:16 +0200 | jack1909 | (~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca) |
2021-04-06 10:33:06 +0200 | clog | (~nef@66.114.33.57) (Ping timeout: 260 seconds) |
2021-04-06 10:33:39 +0200 | <int-e> | shapr: No, I had not seen https://grin-compiler.github.io/ ...quite a bit of activity there, too. Thanks for the link! |
2021-04-06 10:35:30 +0200 | solvr | (57e3c46d@87.227.196.109) (Quit: Connection closed) |
2021-04-06 10:36:31 +0200 | <DigitalKiwi> | (setting aside that everything's a compiler) haskell is used for a lot more than that :/ |
2021-04-06 10:37:35 +0200 | juri__ | juri_ |
2021-04-06 10:38:58 +0200 | oish | (~charlie@228.25.169.217.in-addr.arpa) |
2021-04-06 10:40:10 +0200 | <minoru_shiraeesh> | do people really create compilers with haskell or just prototypes of compilers? and then implement them in C |
2021-04-06 10:40:29 +0200 | Pickchea | (~private@unaffiliated/pickchea) (Ping timeout: 252 seconds) |
2021-04-06 10:42:32 +0200 | <DigitalKiwi> | wow i know ghc has some rough spots but to call it a prototype is a bit harsh don't you think ;) |
2021-04-06 10:42:53 +0200 | <tomsmeding> | someone who implements a compiler in haskell only to then reimplement the thing in C is someone who thoroughly hates themselves |
2021-04-06 10:43:25 +0200 | jumper149 | (~jumper149@80.240.31.34) |
2021-04-06 10:43:26 +0200 | jumper149 | (~jumper149@80.240.31.34) (Client Quit) |
2021-04-06 10:44:44 +0200 | jumper149 | (~jumper149@80.240.31.34) |
2021-04-06 10:45:05 +0200 | jumper149 | (~jumper149@80.240.31.34) (Client Quit) |
2021-04-06 10:45:14 +0200 | <Uniaika> | yes |
2021-04-06 10:45:28 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2021-04-06 10:46:47 +0200 | <minoru_shiraeesh> | I mean, if I'm not mistaken, putting esoteric experimental side-projects aside, majority of compiler are written in C. |
2021-04-06 10:46:57 +0200 | <minoru_shiraeesh> | *compilers |
2021-04-06 10:47:31 +0200 | <raehik> | lots of compilers have components written in C for various reasons but otherwise that's not true |
2021-04-06 10:47:33 +0200 | <minoru_shiraeesh> | I think this is because of manual memory management |
2021-04-06 10:47:44 +0200 | <minoru_shiraeesh> | as one of the reasons |
2021-04-06 10:47:55 +0200 | <Uniaika> | minoru_shiraeesh: Elm, PureScript, OCaml, Rust, NodeJS, Go are not written in C |
2021-04-06 10:48:02 +0200 | <raehik> | the rust compiler is self-hosted |
2021-04-06 10:48:15 +0200 | <Uniaika> | raehik: and was written in OCaml before that |
2021-04-06 10:48:20 +0200 | Pickchea | (~private@unaffiliated/pickchea) |
2021-04-06 10:48:23 +0200 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2021-04-06 10:48:29 +0200 | <Uniaika> | GHC was first implemented in LazyML |
2021-04-06 10:48:35 +0200 | <Uniaika> | Hugs on the other hand is in C |
2021-04-06 10:48:53 +0200 | <aldum> | rust is a lot of C++ also, isn't it? |
2021-04-06 10:48:55 +0200 | <Uniaika> | p. sure javac is in Java |
2021-04-06 10:49:20 +0200 | <Uniaika> | hmm, in absolute numbers idk, aldum |
2021-04-06 10:49:30 +0200 | <Uniaika> | 0.3% of C++ in their GH repo |
2021-04-06 10:49:46 +0200 | <Uniaika> | but there's also the library/ folder in this repo |
2021-04-06 10:51:09 +0200 | jumper149 | (~jumper149@80.240.31.34) |
2021-04-06 10:51:43 +0200 | shailangsa | (~shailangs@host86-186-136-21.range86-186.btcentralplus.com) |
2021-04-06 10:51:51 +0200 | <raehik> | Uniaika: wow, I had no idea the Rust compiler was written in an ML originally! very cool |
2021-04-06 10:52:07 +0200 | <raehik> | I'm surprised. I honestly expected C lol |
2021-04-06 10:52:27 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 10:52:42 +0200 | kamotaketsunumin | (6769235f@103.105.35.95) (Ping timeout: 240 seconds) |
2021-04-06 10:54:15 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-04-06 10:54:28 +0200 | <minoru_shiraeesh> | Uniaika: "Elm, PureScript, OCaml, Rust, NodeJS, Go are not written in C" - C++ ? |
2021-04-06 10:54:28 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) |
2021-04-06 10:54:51 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 10:56:36 +0200 | drbean_ | (~drbean@TC210-63-209-214.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
2021-04-06 10:56:55 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
2021-04-06 10:56:55 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 258 seconds) |
2021-04-06 10:57:10 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Client Quit) |
2021-04-06 10:58:32 +0200 | <xsperry> | minoru_shiraeesh agda and idris copmilers were written in haskell |
2021-04-06 10:58:58 +0200 | nut` | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
2021-04-06 10:59:19 +0200 | <Franciman> | and that was a serious error |
2021-04-06 10:59:29 +0200 | frozenErebus | (~frozenEre@37.231.244.249) |
2021-04-06 10:59:33 +0200 | <xsperry> | meh |
2021-04-06 10:59:43 +0200 | gtk | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
2021-04-06 10:59:45 +0200 | CaptainIRS | (9d339880@157.51.152.128) |
2021-04-06 10:59:50 +0200 | <enikar> | since version 1.5 the go compiler is written in go. |
2021-04-06 11:00:41 +0200 | <minoru_shiraeesh> | from the rust page in wikipedia: The same year, work shifted from the initial compiler (written in OCaml) to the LLVM-based self-hosting compiler written in Rust. |
2021-04-06 11:01:24 +0200 | sedeki | (~textual@unaffiliated/sedeki) |
2021-04-06 11:01:25 +0200 | <merijn> | minoru_shiraeesh: Elm and PureScript are written in Haskell, Ocaml is presumably written in Ocaml |
2021-04-06 11:01:25 +0200 | __monty__ | (~toonn@unaffiliated/toonn) |
2021-04-06 11:01:29 +0200 | <Uniaika> | minoru_shiraeesh: NodeJS is indeed made in C++ if I'm not mistaken |
2021-04-06 11:02:05 +0200 | <merijn> | minoru_shiraeesh: The main reason compiler components tend to be written in C is that C is the only language with a standardised ABI |
2021-04-06 11:02:23 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 11:02:25 +0200 | <merijn> | And once you write some component temporarily in C and it works, why bother rewriting it |
2021-04-06 11:03:04 +0200 | <minoru_shiraeesh> | what do they need llvm for? maybe it simplifies the work |
2021-04-06 11:03:30 +0200 | <minoru_shiraeesh> | can you create a compiler with java script and llvm? |
2021-04-06 11:03:38 +0200 | <minoru_shiraeesh> | or python and llvm |
2021-04-06 11:03:38 +0200 | <merijn> | Same reason with people complaining "Why is GHCs RTS written in C?!" to which the obvious is "Because the first version was and by now we have a 3 decades old, high-performance, battle-tested RTS...why would you spend a year rewriting it from scratch if the only reason is "to make it not C"?" |
2021-04-06 11:03:53 +0200 | mettekou | (~mettekou@d8D875214.access.telenet.be) |
2021-04-06 11:03:55 +0200 | viluon | (uid453725@gateway/web/irccloud.com/x-vxyigueamtfqricd) |
2021-04-06 11:04:01 +0200 | <mettekou> | Any advice on storing recursive algebraic data types in a relational database? |
2021-04-06 11:04:10 +0200 | <merijn> | minoru_shiraeesh: LLVM == the low-level virtual machine, it's a framework for generating and optimising assembly in a platform independent way |
2021-04-06 11:04:19 +0200 | <merijn> | mettekou: "do it manually" |
2021-04-06 11:04:49 +0200 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection) |
2021-04-06 11:05:03 +0200 | <mettekou> | merijn: I am doing it manually, but you have a lot of options: adjacency lists, nested sets... |
2021-04-06 11:05:22 +0200 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2021-04-06 11:05:32 +0200 | <mettekou> | I was wondering whether there's a canonical way. |
2021-04-06 11:05:43 +0200 | <merijn> | mettekou: tbh, I would forget about ADTs when defining a database schema |
2021-04-06 11:06:27 +0200 | <merijn> | mettekou: In the sense of: Define a schema for the data you have (and maybe the operation you'll need) and then figure out how to map between that and ADTs |
2021-04-06 11:06:39 +0200 | <mettekou> | merijn: I don't know, the sum and product types map quite well, if you use the same approach you would use for classes in a class hierarchy in an object-oriented programming language. |
2021-04-06 11:06:47 +0200 | <merijn> | replicating ADTs in your database sounds way to tightly coupled |
2021-04-06 11:07:02 +0200 | <mettekou> | merijn: I'm actually trying to store ASTs and program executions for some really minimal DSL. |
2021-04-06 11:07:12 +0200 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving) |
2021-04-06 11:08:08 +0200 | kuribas | (~user@ptr-25vy0i98ky9sotgacau.18120a2.ip6.access.telenet.be) |
2021-04-06 11:08:09 +0200 | <merijn> | That sounds...odd? But I'd probably have something like 1 table for the AST itself and 1 table for each type of node, the AST table just referencing those |
2021-04-06 11:08:33 +0200 | <aldum> | tables are a product type of sorts ;) |
2021-04-06 11:08:45 +0200 | <merijn> | So, like, a table of binary operators has an id, operator and 2 references back into the AST table |
2021-04-06 11:08:52 +0200 | <sedeki> | mettekou i'm here as well (not only in the postgres channel). |
2021-04-06 11:09:09 +0200 | <mettekou> | merijn: That's the adjacency list approach, which is what I would do as well. |
2021-04-06 11:09:23 +0200 | <mettekou> | With a recursive CTE, it's easy to query. |
2021-04-06 11:09:28 +0200 | <merijn> | Morbidly curious why you wanna store an AST into a database, though :> |
2021-04-06 11:09:35 +0200 | michalz | (~user@185.246.204.46) |
2021-04-06 11:10:06 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 11:10:37 +0200 | <mettekou> | merijn: I'm modelling industrial processes using a DSL which is based on Gilbreth-style flow process charts. |
2021-04-06 11:11:36 +0200 | <mettekou> | merijn: Industrial engineers do not like text-based languages, so I'm building a flow process chart editor which also makes these charts executable programs in the DSL. |
2021-04-06 11:12:04 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 11:12:22 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 11:13:14 +0200 | <Maxdamantus> | If you were creating a text-based language, would you still be trying to store the AST in the database? |
2021-04-06 11:13:41 +0200 | <Maxdamantus> | ("in the database" presumably means something other than "as a single blob of data"( |
2021-04-06 11:13:44 +0200 | <Maxdamantus> | )) |
2021-04-06 11:14:14 +0200 | <mettekou> | Maxdamantus: Yes, because I want to link executions of the process steps to the process steps. |
2021-04-06 11:14:40 +0200 | <mettekou> | The alternative is indeed JSON/XML/BLOB or files, which is just moving the linking problem to the application code. |
2021-04-06 11:15:48 +0200 | <mettekou> | Not smart, in my opinion, since an important advantage of using a relational database is delegating referential integrity to it. |
2021-04-06 11:15:54 +0200 | <merijn> | mettekou: Oooh |
2021-04-06 11:16:10 +0200 | <Maxdamantus> | I find it hard to imagine that it would be simpler to maintain these things in a relational database, otherwise people would be generally using relational database when writing compilers. |
2021-04-06 11:16:28 +0200 | <merijn> | mettekou: "Other people who liked process flowcharts and Haskell also liked: Clean" ;) |
2021-04-06 11:16:30 +0200 | <mettekou> | Maxdamntus: I don't think so, they don't require persistence. |
2021-04-06 11:16:56 +0200 | <merijn> | mettekou: You should lookup itasks |
2021-04-06 11:17:00 +0200 | <Maxdamantus> | mettekou: the source files persist. |
2021-04-06 11:17:25 +0200 | <merijn> | mettekou: https://clean.cs.ru.nl/ITasks |
2021-04-06 11:17:36 +0200 | <mettekou> | merijn: I'm doing it in F#, but it's a general functional programming problem, so I asked about it here, since there's more activity here. :P |
2021-04-06 11:17:56 +0200 | <Maxdamantus> | mettekou: you're presumably treating contents of the database as source code, rather than the contents of a text/JSON/binary string/file. |
2021-04-06 11:18:10 +0200 | Aquazi | (uid312403@gateway/web/irccloud.com/x-bmhbjzvaxfjgfshr) |
2021-04-06 11:18:11 +0200 | cafce25 | (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) |
2021-04-06 11:18:25 +0200 | <merijn> | mettekou: Well, they literally have a pre-built DSL generating GUIs etc for exactly the kinda stuff you're talking about ;) |
2021-04-06 11:18:47 +0200 | <merijn> | mettekou: So if your adventurous it could save you weeks/months of work :p |
2021-04-06 11:19:04 +0200 | <Maxdamantus> | Having worked on something similar, I imagine you would run into issues at some point regarding versioning of the code, including merging. |
2021-04-06 11:19:58 +0200 | <Maxdamantus> | When people work on the code, they'll probably think in terms of a particular snapshot and make changes to that, then at some point those changes will be merged into the master copy. |
2021-04-06 11:20:37 +0200 | <mettekou> | Maxdamantus: They define the process once and only revise details, kind of important for production lines. |
2021-04-06 11:21:00 +0200 | <mettekou> | A single edit after the production line runs already makes them nervous. |
2021-04-06 11:21:09 +0200 | <Maxdamantus> | and at various stages, you have different "versions" of this code. That will be a bit tricky I think to represent in a RDBMS. Probably a lot simpler to just keep each version of the code in a big string (or JSON/XML structure, whatever) |
2021-04-06 11:22:24 +0200 | <Maxdamantus> | Right, I would also be nervous using a system built like that. |
2021-04-06 11:24:08 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 11:24:27 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 11:24:33 +0200 | coni | (d4338494@212-51-132-148.fiber7.init7.net) |
2021-04-06 11:24:35 +0200 | <Maxdamantus> | another reason that the single-version blob approach is useful is that you know that a single version of the entire code is represented by just a string, which in the worst case could be understood by someone technical enough, but you just have to optimise the way you view that string by producing appropriate tooling, so tools that just render that string as a graph, etc. |
2021-04-06 11:25:28 +0200 | noCheese | (~nocheese@unaffiliated/nocheese) (Quit: I'm out!) |
2021-04-06 11:25:29 +0200 | <Maxdamantus> | RDBMSes are potentially useful when it doesn't make sense to look at the entire dataset as a unit. |
2021-04-06 11:25:51 +0200 | noCheese | (~nocheese@gw2.aibor.de) |
2021-04-06 11:25:51 +0200 | noCheese | (~nocheese@gw2.aibor.de) (Changing host) |
2021-04-06 11:25:51 +0200 | noCheese | (~nocheese@unaffiliated/nocheese) |
2021-04-06 11:27:16 +0200 | <mettekou> | Maxdamantus: "Right, I would also be nervous using a system built like that." - What's that supposed to mean? |
2021-04-06 11:27:56 +0200 | fendor | (~fendor@91.141.0.13.wireless.dyn.drei.com) |
2021-04-06 11:28:00 +0200 | Ranhir | (~Ranhir@157.97.53.139) |
2021-04-06 11:28:58 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
2021-04-06 11:29:30 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 268 seconds) |
2021-04-06 11:33:33 +0200 | <Maxdamantus> | mettekou: I find it hard to trust systems that don't have some clear representation of the overall code. |
2021-04-06 11:34:11 +0200 | <Maxdamantus> | mettekou: for a typical text-based programming language, that can simply be the text that makes up each source file. |
2021-04-06 11:34:50 +0200 | <Maxdamantus> | mettekou: but even for a graphical programming system, there should be something analogous. Something that can at least be serialised into such a source file. |
2021-04-06 11:35:11 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 260 seconds) |
2021-04-06 11:35:41 +0200 | <Maxdamantus> | So someone can capture the state of the system into a file, and any other representation can be seen as derived from the contents of that file. |
2021-04-06 11:36:11 +0200 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
2021-04-06 11:36:24 +0200 | <mettekou> | Maxdamantus: I don't see why a relational database is not trustworthy in that respect, and flat files are. |
2021-04-06 11:37:56 +0200 | <mettekou> | mettekou: I'd hate to do reporting queries over flat files, by the way. Even with PostgreSQL's excellent JSON support, for example, I would still hate to do reporting queries over JSON. |
2021-04-06 11:38:52 +0200 | <mettekou> | I just realized that that's why I want a relational database and compiler writers don't: I need to store executions and do reporting based on them. |
2021-04-06 11:40:18 +0200 | <Maxdamantus> | Well, your original question was about representing ASTs in relational databases. Unless the approach is to just store the entire tree in a string (which is what I would advocate), you're going to be creating some representation that is harder to use than regular AST structures you would create in memory. |
2021-04-06 11:40:54 +0200 | <Maxdamantus> | since the way you normally represent ASTs is as some sort of recursive structure, which doesn't inherently work in an RDBMS. |
2021-04-06 11:42:19 +0200 | <Maxdamantus> | Things like "counting AST nodes" *might* be simpler, but I think the usual things you expect to do with ASTs will likely be harder, since you've got a less direct representation. |
2021-04-06 11:42:29 +0200 | <merijn> | Maxdamantus: I disagree, recursive things work very well in relational databases |
2021-04-06 11:42:40 +0200 | <mettekou> | Maxdamantus: an adjacency list works fine with a recursive CTE query. |
2021-04-06 11:42:48 +0200 | <merijn> | Recursive CTEs are great |
2021-04-06 11:43:02 +0200 | <merijn> | SQLite has a bunch of nice example applications of recursive CTEs for Fossil |
2021-04-06 11:43:32 +0200 | <mettekou> | merijn: I'm using PostgreSQL, so I have good recursive CTE support as well. |
2021-04-06 11:43:57 +0200 | sedeki | (~textual@unaffiliated/sedeki) (Quit: Textual IRC Client: www.textualapp.com) |
2021-04-06 11:45:51 +0200 | lotuseater | (~user@p200300e78705e200e5bac9463b911ab3.dip0.t-ipconnect.de) |
2021-04-06 11:47:04 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 11:47:04 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
2021-04-06 11:47:20 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 11:47:41 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) |
2021-04-06 11:48:43 +0200 | Pickchea | (~private@unaffiliated/pickchea) (Ping timeout: 260 seconds) |
2021-04-06 11:51:14 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 245 seconds) |
2021-04-06 11:51:23 +0200 | mice-user | (b4960d8b@180-150-13-139.b4960d.syd.static.aussiebb.net) (Ping timeout: 240 seconds) |
2021-04-06 11:51:31 +0200 | p4trix | (~p4trix@19.red-83-49-45.dynamicip.rima-tde.net) |
2021-04-06 11:51:56 +0200 | DavidEichmann | (~david@47.27.93.209.dyn.plus.net) |
2021-04-06 11:52:31 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-04-06 11:52:53 +0200 | clog | (~nef@bespin.org) |
2021-04-06 11:53:18 +0200 | <mettekou> | merijn: iTasks seems interesting, but it may be overkill for my use case (really, the DSL I have doesn't have procedural abstraction, not even branching currently, it's very close to a flow process chart, with only 3 types of nodes). |
2021-04-06 11:53:33 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) |
2021-04-06 11:54:30 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:615f:d2ef:3b34:54be) |
2021-04-06 11:54:40 +0200 | <Maxdamantus> | merijn: still seems like unnecessary cognitive overhead. That's all stuff that is abstracted away when dealing with structures in normal programming languages. |
2021-04-06 11:54:58 +0200 | <merijn> | It should have branching? Pretty sure I saw that years ago already during one of the NL-FP days...at any rate, you can at least steal their design ;) |
2021-04-06 11:55:09 +0200 | <Maxdamantus> | merijn: when writing recursive structures in Haskell or whatever, you're not having to produce the pointer values for cross-referencing. You can't even inspect them. |
2021-04-06 11:55:26 +0200 | <merijn> | Maxdamantus: I don't think it's overhead at all, I find recursive CTEs (and really all of SQL) very natural with a purely functional mindset |
2021-04-06 11:55:49 +0200 | <merijn> | Maxdamantus: heh? |
2021-04-06 11:55:50 +0200 | <Maxdamantus> | merijn: so why do programming languages normally abstract these things away? |
2021-04-06 11:56:23 +0200 | <merijn> | Maxdamantus: Have you seen how those recursive CTEs look like? They're...like...the most purely functional thing you can imagine :p |
2021-04-06 11:56:43 +0200 | <mettekou> | merijn: Yeah, iTasks has branching and much more, I was talking about my own DSL. It doesn't have anything fancy at all. |
2021-04-06 11:57:08 +0200 | <kuribas> | merijn: but representing stuff like ASTs in a database involves many small tables, and corresponding overhead. I'd just serialize to JSON, and do any processing in haskell. |
2021-04-06 11:57:08 +0200 | <mettekou> | merijn: No procedural abstraction, no branching, and just 3 "statements" or "expressions". |
2021-04-06 11:57:37 +0200 | <merijn> | Maxdamantus: See the 3.2, 3.3 and 3.4 examples here: https://sqlite.org/lang_with.html |
2021-04-06 11:57:38 +0200 | <mettekou> | kuribas: That works fine until you want reporting over executions. |
2021-04-06 11:57:47 +0200 | <merijn> | kuribas: WHo says "many small tables" |
2021-04-06 11:57:55 +0200 | <merijn> | kuribas: How many nodetypes does your AST have? |
2021-04-06 11:58:02 +0200 | <merijn> | kuribas: I'd say 20 is already way high |
2021-04-06 11:58:06 +0200 | <Maxdamantus> | merijn: admittedly, not, sorry. But if I just imagine fundamentally what the model of a relational datastore is, it seems like if you want to represent recursive things, you need to be exposed somehow to things that are for good reason abstracted away already in typical programming languages. |
2021-04-06 11:58:14 +0200 | <merijn> | kuribas: And you can probably compact several nodetypes into the same tables |
2021-04-06 11:58:44 +0200 | <kuribas> | merijn: I was just thinking about my previous company, where they implemented a static schema (for taxes) using many tables.. |
2021-04-06 11:58:57 +0200 | <kuribas> | merijn: it was more than 20 I believe... |
2021-04-06 11:59:08 +0200 | <merijn> | kuribas: For an AST? |
2021-04-06 11:59:16 +0200 | <Maxdamantus> | (eg, creating identifiers to be used essentially as pointers) |
2021-04-06 11:59:20 +0200 | <tdammers> | SQL schemas in the wild are a never-ending source of cruel entertainment |
2021-04-06 11:59:24 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:615f:d2ef:3b34:54be) (Ping timeout: 258 seconds) |
2021-04-06 11:59:31 +0200 | <kuribas> | merijn: it was a static schema for tax reports. |
2021-04-06 11:59:47 +0200 | <merijn> | kuribas: How does that relate to the number of tables you'd need for an AST? |
2021-04-06 11:59:55 +0200 | <merijn> | Also, many tables isn't *inherently* bad |
2021-04-06 11:59:58 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 265 seconds) |
2021-04-06 12:00:07 +0200 | <kuribas> | merijn: because an AST tend to have many branches as well. |
2021-04-06 12:00:09 +0200 | <merijn> | As with all tech things: "It Depends (TM)" |
2021-04-06 12:00:30 +0200 | <tdammers> | my favorite antipattern in this regard is to create tables dynamically, and store their names in columns, as quasi-foreign keys |
2021-04-06 12:00:38 +0200 | <merijn> | Anyway, the freshly baked bread for lunch is done and it smells better than any tech discussion ;) |
2021-04-06 12:00:39 +0200 | <Maxdamantus> | I really can't imagine myself looking at a spreadsheet denoting an AST and seeing something more obvious than an AST represented in JSON. |
2021-04-06 12:01:09 +0200 | <Maxdamantus> | if a spreadsheet is denoting an AST with a bunch of cross-referencing identifiers, I can probably transform it into some JSON that is easier to understand at a glance. |
2021-04-06 12:01:19 +0200 | Rudd0 | (~Rudd0@185.189.115.108) |
2021-04-06 12:01:26 +0200 | <kuribas> | merijn: the primary reason for using database tables is searchability. |
2021-04-06 12:02:05 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 250 seconds) |
2021-04-06 12:02:07 +0200 | <kuribas> | if you don't need that, I don't see any reason at all for dividing you structures into tables. |
2021-04-06 12:02:54 +0200 | <kuribas> | the haskell typesystem already takes care of consistency. |
2021-04-06 12:03:09 +0200 | <mettekou> | kuribas: The primary reason for using database tables is eliminating data redundancy, not searchability. |
2021-04-06 12:03:13 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) (Ping timeout: 260 seconds) |
2021-04-06 12:03:18 +0200 | <tdammers> | ^ |
2021-04-06 12:03:57 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 12:04:02 +0200 | <kuribas> | mettekou: why would you have data redundancy in a static scheme, or AST? |
2021-04-06 12:04:41 +0200 | <mettekou> | kuribas: Network and hierarchical databases (i.e. CODASYL) had indices before Codd came up with the relational model, so they were searchable. The problems were access path dependence and data redundancy. |
2021-04-06 12:05:22 +0200 | <mettekou> | kuribas: I mean data redundancy in the relational model sense, i.e. the result of unnormalized data. |
2021-04-06 12:05:31 +0200 | <tdammers> | and in fact modern tree-shaped noSQL databases have the same problem |
2021-04-06 12:05:43 +0200 | <tdammers> | (or document databases, for that matter) |
2021-04-06 12:05:52 +0200 | <mettekou> | tdammers: Indeed, as Stonebraker pointed out in "Those that do not learn from the past..." |
2021-04-06 12:06:26 +0200 | <tdammers> | if you're smart about noSQL, you realize that that's a tradeoff, and that tradeoff may, under certain circumstances, be worth it |
2021-04-06 12:06:50 +0200 | <tdammers> | but it certainly ruins the idea that noSQL databases are unambiguously superior |
2021-04-06 12:06:52 +0200 | Tops2 | (~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) |
2021-04-06 12:06:58 +0200 | <aldum> | if you are smart, you realize everythng is a tradeoff, there are no solutions :) |
2021-04-06 12:07:28 +0200 | <tdammers> | there are solutions alright, it's just that as an adult, you realize at some point that "solution" doesn't mean what you thought it did |
2021-04-06 12:07:36 +0200 | <kuribas> | tdammers: I just wonder what advantage they have over storing JSONs in a RDBMS. |
2021-04-06 12:07:59 +0200 | <mettekou> | tdammers: The problem with the NoSQL term is that MongoDB ends up together with Apache Cassandra and Redis. |
2021-04-06 12:08:28 +0200 | <mettekou> | Whereas relational or SQL is pretty narrow as a category, NoSQL is just anything else. |
2021-04-06 12:08:29 +0200 | <tdammers> | mettekou: agree completely. couchdb has about as much in common with mongodb as it does with postgres, if not less |
2021-04-06 12:09:15 +0200 | <kuribas> | mettekou: right, and a good NoSQL database would be complementary to a RDBMs, not a replacement. |
2021-04-06 12:10:00 +0200 | royal_screwup211 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 12:10:11 +0200 | <tdammers> | kuribas: not necessarily. they do serve the same general concern, that of persisting large data sets for efficient partial querying and modification |
2021-04-06 12:10:47 +0200 | <kuribas> | tdammers: but a RDBMs works well for most cases. |
2021-04-06 12:11:04 +0200 | <kuribas> | I often think people want NoSQL because they don't understand SQL. |
2021-04-06 12:14:00 +0200 | <tdammers> | because they don't understand SQL, because they don't understand NoSQL, because they believe in unicorns and silver bullets, because they are practicing hype-driven development, because management makes them, ... |
2021-04-06 12:15:51 +0200 | <Maxdamantus> | in all seriousness though, why are compilers not using SQL? |
2021-04-06 12:16:15 +0200 | <Maxdamantus> | 21:16:10 < Maxdamantus> I find it hard to imagine that it would be simpler to maintain these things in a relational database, otherwise people would be generally using relational database when writing compilers. |
2021-04-06 12:16:19 +0200 | shalokshalom | (~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106) (Remote host closed the connection) |
2021-04-06 12:16:35 +0200 | shalokshalom | (~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106) |
2021-04-06 12:16:42 +0200 | <Maxdamantus> | If these relational models are so great, why not replace general data structures in programming languages with relational ones? |
2021-04-06 12:17:39 +0200 | <Maxdamantus> | You almost never see relational patterns used in memory. They're normally just used for querying larger sets of data stored outside of the main program's memory. |
2021-04-06 12:18:03 +0200 | <kuribas> | Maxdamantus: I sometimes use a relational model in haskell, for example storing IDs and a map of ID to the object. |
2021-04-06 12:18:06 +0200 | <tdammers> | relational data structures in memory are a thing in game programming |
2021-04-06 12:18:09 +0200 | <haskellstudent> | kuribas: do you think high availability requirements is a legitimate reason because of schema migrations? if i store everything as json in a kv store or a kv table in a rdbms i never have to do a schema migration in the db and pause it |
2021-04-06 12:19:02 +0200 | <kuribas> | haskellstudent: well, you may need to do migration if your datatype that the JSON represents changes. |
2021-04-06 12:19:21 +0200 | <haskellstudent> | sure, but not in the db |
2021-04-06 12:19:56 +0200 | <kuribas> | depends, you may want to make sure that the JSON types all have the same structure. |
2021-04-06 12:20:06 +0200 | <kuribas> | which would require migration |
2021-04-06 12:20:49 +0200 | <haskellstudent> | which means i can have a newer version of a service write and read a newer version of e.g. an event json in the db while the older versions just ignore any fields in the json they dont know yet. |
2021-04-06 12:21:05 +0200 | coni | (d4338494@212-51-132-148.fiber7.init7.net) (Quit: Connection closed) |
2021-04-06 12:21:24 +0200 | <Maxdamantus> | tdammers: I feel like even in game programming, that model ("entity" something something) seems mostly useful if you're intending to share the state incrementally across a network at some point. |
2021-04-06 12:21:59 +0200 | <Maxdamantus> | So it still doesn't seem inherently better as an in-memory model. |
2021-04-06 12:22:09 +0200 | <kuribas> | haskellstudent: that will not always work |
2021-04-06 12:22:15 +0200 | royal_screwup211 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 12:22:15 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 12:22:27 +0200 | <tdammers> | Maxdamantus: the main reason this is done is performance, and specifically, cache performance. The idea is that you lay out your data structures such that for the most performance critical operations, the data you need is laid out linearly in memory, so you can zoom over it with the minimum amount of cache misses |
2021-04-06 12:22:35 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 12:22:46 +0200 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-zbthekzvhrqpupmy) (Quit: Connection closed for inactivity) |
2021-04-06 12:23:00 +0200 | <haskellstudent> | kuribas: can you give an example where it would not work? |
2021-04-06 12:23:53 +0200 | <tdammers> | the alternative, the classic object graph, is really really bad for cache performance: when traversing a list of objects, you're walking a list of pointers to arbitrary heap locations, and each of those pointers is relatively likely to cause a cache miss. And if those objects then contain pointers to other objects, it gets worse. |
2021-04-06 12:24:00 +0200 | <kuribas> | haskellstudent: if the type changes in incompatible ways |
2021-04-06 12:24:52 +0200 | <haskellstudent> | kuribas: of course if i removed a field from the json event for example the older services could no longer read it, but they can "ignore" it (logging a parsing error) while they are still running until all old versions of the service are upgraded |
2021-04-06 12:24:59 +0200 | pavonia | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2021-04-06 12:25:03 +0200 | <tdammers> | the schema migration problem exists regardless of sql or not-sql |
2021-04-06 12:25:08 +0200 | Guest66883 | (~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-04-06 12:25:11 +0200 | <kuribas> | this |
2021-04-06 12:25:15 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) |
2021-04-06 12:25:16 +0200 | <tdammers> | and the mitigation strategies are largely the same too |
2021-04-06 12:25:28 +0200 | <tdammers> | the disadvantage of a "schema-less |
2021-04-06 12:25:33 +0200 | <tdammers> | " store is that the schema is implicit |
2021-04-06 12:25:45 +0200 | Alleria_ | (~AllahuAkb@2603-7000-3040-0000-51cb-91e5-ecfa-0406.res6.spectrum.com) |
2021-04-06 12:25:57 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) |
2021-04-06 12:26:20 +0200 | <kuribas> | tdammers: yeah, it's the same problem with clojure. The idea is that you don't need schemas and static structure, but you still end up with it, just in an implicit and ad-hoc way. |
2021-04-06 12:26:22 +0200 | <haskellstudent> | tdammers: not necessarily. its can be very explicit, its just defined e.g. in haskell rather than both in the db and in haskell |
2021-04-06 12:26:57 +0200 | <tdammers> | if you define the schema, then it's no longer schema-less, is it |
2021-04-06 12:27:27 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 12:27:28 +0200 | lawt | (~lawt@c-73-151-3-92.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2021-04-06 12:27:30 +0200 | <haskellstudent> | correct, i never said it would be. there is no such thing. but i dont need to pause the db to do a migration, that was the only point. |
2021-04-06 12:28:09 +0200 | <tdammers> | a decent rdbms can do schema modifications without downtime too |
2021-04-06 12:28:27 +0200 | <tdammers> | you just can't have inconsistent data at any point |
2021-04-06 12:28:36 +0200 | <tdammers> | like, half of the records in the old schema and the other half in the new |
2021-04-06 12:28:42 +0200 | <tdammers> | but that's a design feature, really |
2021-04-06 12:29:31 +0200 | <kuribas> | tdammers: doing a huge transaction to migrate may slow the DB down though... |
2021-04-06 12:30:09 +0200 | <tdammers> | sure. but so can a huge sweep over a "schema-less" database that changes all the records (documents, whatever) to match the new structure |
2021-04-06 12:30:37 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 12:32:01 +0200 | Alleria_ | (~AllahuAkb@2603-7000-3040-0000-51cb-91e5-ecfa-0406.res6.spectrum.com) (Ping timeout: 245 seconds) |
2021-04-06 12:32:50 +0200 | <haskellstudent> | tdammers: but in the case of e.g. an immutable event history that is what i might want. in an sql db i would probably have to create have to create a new table then with the new "incompatible" version. but then i would end up with another table for each such schema change that i ever made. |
2021-04-06 12:33:09 +0200 | <kuribas> | and then, how do you synchonize the changes in the DB with the service version? |
2021-04-06 12:34:18 +0200 | <kuribas> | or do let the service detect the previous database version, and handle it gracefully? |
2021-04-06 12:35:10 +0200 | <olligobber> | No instance for (Language.Haskell.TH.Syntax.Lift TH.Type) |
2021-04-06 12:35:12 +0200 | <olligobber> | >:( |
2021-04-06 12:35:21 +0200 | <haskellstudent> | kuribas: service v1 keeps reading v1 events as usual, service v2 still knows how to read the v1 events but also v2 |
2021-04-06 12:35:27 +0200 | <tdammers> | note that it is perfectly possible to implement many changes to an SQL schema in a backwards-compatible way |
2021-04-06 12:36:00 +0200 | <tdammers> | so what exactly is the difference between v1 and v2? typically, such a change will be "widening" rather than completely changing the schema |
2021-04-06 12:36:13 +0200 | <kuribas> | tdammers: I suppose you keep your schemas backward compatible unless it because too messy, then run a breaking migration? |
2021-04-06 12:36:15 +0200 | <tdammers> | add a field, extend a field type to support more values, etc. |
2021-04-06 12:36:28 +0200 | <haskellstudent> | typically, yes. but we were talking about incompatible chanegs |
2021-04-06 12:36:37 +0200 | <haskellstudent> | (deleting or renaming a field) |
2021-04-06 12:36:56 +0200 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2021-04-06 12:36:57 +0200 | <tdammers> | and even when you make "breaking" changes, you can often *still* uphold backwards compatibility, e.g., by providing views that have the same structure and name as the old table |
2021-04-06 12:37:30 +0200 | <tdammers> | deleting fields: don't delete, make optional. |
2021-04-06 12:37:38 +0200 | <tdammers> | renaming is just delete + add |
2021-04-06 12:37:42 +0200 | <tdammers> | so just do that |
2021-04-06 12:37:58 +0200 | <tdammers> | add a column, make the old one optional, and maybe add a constraint saying you can only have one or the other, but not both |
2021-04-06 12:38:05 +0200 | <tdammers> | or do the "compatibility view" trick |
2021-04-06 12:38:39 +0200 | <kuribas> | tdammers: so you use a stored procedure to implement the old table "view"? |
2021-04-06 12:40:05 +0200 | <tdammers> | no, just a plain view will usually work |
2021-04-06 12:40:09 +0200 | <tdammers> | except for inserts ofc |
2021-04-06 12:40:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-04-06 12:40:41 +0200 | <kuribas> | how does that work for JSON? |
2021-04-06 12:41:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 12:41:16 +0200 | <tdammers> | JSON? I'm talking about relational schemas. JSON you put in there is pretty much opaque. |
2021-04-06 12:42:11 +0200 | frozenErebus | (~frozenEre@37.231.244.249) (Ping timeout: 240 seconds) |
2021-04-06 12:43:48 +0200 | olligobber1 | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2021-04-06 12:44:26 +0200 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 265 seconds) |
2021-04-06 12:46:08 +0200 | <olligobber1> | merijn, hey, why can't I lift a type? |
2021-04-06 12:46:21 +0200 | <olligobber1> | `No instance for (Language.Haskell.TH.Syntax.Lift TH.Type)' |
2021-04-06 12:46:35 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-04-06 12:46:58 +0200 | <olligobber1> | lol |
2021-04-06 12:46:59 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 12:47:03 +0200 | <olligobber1> | merijn, wb |
2021-04-06 12:47:18 +0200 | olligobber1 | olligobber |
2021-04-06 12:48:20 +0200 | <haskellstudent> | tdammers: ok so zero downtime migrations might be possible, but it seems like there are still traps and while they could be avoided it seems more complicated than just having a kv store/table for my events so i know exactly how the system will behave. example: https://gocardless.com/blog/zero-downtime-postgres-migrations-the-hard-parts/ |
2021-04-06 12:50:16 +0200 | MindlessDrone | (~MindlessD@unaffiliated/mindlessdrone) (Ping timeout: 268 seconds) |
2021-04-06 12:51:35 +0200 | royal_screwup211 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 12:51:55 +0200 | MindlessDrone | (~MindlessD@unaffiliated/mindlessdrone) |
2021-04-06 12:51:57 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-04-06 12:53:06 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 12:54:06 +0200 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-frmbfjisqfxmhgqn) |
2021-04-06 12:55:38 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 12:56:24 +0200 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-04-06 12:57:04 +0200 | <olligobber> | merijn, can I have template haskell help pls? |
2021-04-06 12:57:21 +0200 | ukari | (~ukari@unaffiliated/ukari) |
2021-04-06 12:58:06 +0200 | gnumonic | (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2021-04-06 12:58:25 +0200 | <merijn> | olligobber: Eh, maybe? I'm not really a TH expert :p |
2021-04-06 12:58:43 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2021-04-06 12:58:45 +0200 | NinjaTrappeur | (~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 3.1) |
2021-04-06 12:58:48 +0200 | <olligobber> | merijn, I'm getting No instance for (Lift Type) |
2021-04-06 12:58:54 +0200 | <olligobber> | `No instance for (Language.Haskell.TH.Syntax.Lift TH.Type)' |
2021-04-06 12:59:04 +0200 | <merijn> | Oof...cursed error |
2021-04-06 12:59:26 +0200 | NinjaTrappeur | (~ninja@unaffiliated/ninjatrappeur) |
2021-04-06 12:59:34 +0200 | <olligobber> | mmhmm |
2021-04-06 12:59:40 +0200 | <merijn> | I mean, seems perfectly normal there is no Lift instance for Type, but I dread the code that requires that :p |
2021-04-06 13:00:00 +0200 | Alleria | (~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) |
2021-04-06 13:00:08 +0200 | <olligobber> | I'm just trying to take in a function's name and get its type in an Exp |
2021-04-06 13:00:23 +0200 | Alleria | Guest63000 |
2021-04-06 13:00:25 +0200 | <olligobber> | so I guess I want to lift the string instead of the type? |
2021-04-06 13:01:07 +0200 | <olligobber> | also, why wouldn't there be a lift instance for type? |
2021-04-06 13:01:11 +0200 | jonathanx | (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2021-04-06 13:01:34 +0200 | <olligobber> | lol can I just add deriveLift $ mkName "Type" to my source? |
2021-04-06 13:01:35 +0200 | jonathanx | (~jonathan@h-176-109.A357.priv.bahnhof.se) |
2021-04-06 13:01:40 +0200 | <merijn> | Lift is the typeclass for "values that can be written as source literals" |
2021-04-06 13:01:51 +0200 | <merijn> | Type is not something that has values |
2021-04-06 13:02:02 +0200 | <olligobber> | isn't it? |
2021-04-06 13:02:05 +0200 | <merijn> | Sounds like you want something like reify or something |
2021-04-06 13:02:10 +0200 | <merijn> | olligobber: no? |
2021-04-06 13:02:20 +0200 | <merijn> | What values does type have? |
2021-04-06 13:02:30 +0200 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
2021-04-06 13:02:35 +0200 | <olligobber> | https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH.html#g:22 |
2021-04-06 13:02:52 +0200 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) |
2021-04-06 13:03:05 +0200 | <merijn> | Wait |
2021-04-06 13:03:11 +0200 | <olligobber> | VarT (Name "Int") ? |
2021-04-06 13:03:18 +0200 | <merijn> | You're constructing TH *in* TH? |
2021-04-06 13:03:27 +0200 | <olligobber> | no? |
2021-04-06 13:03:41 +0200 | <merijn> | olligobber: Then you're very confused ;) |
2021-04-06 13:04:00 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) |
2021-04-06 13:04:01 +0200 | <olligobber> | D: |
2021-04-06 13:04:04 +0200 | <merijn> | olligobber: Let's rewind |
2021-04-06 13:04:06 +0200 | Guest63000 | (~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) (Ping timeout: 245 seconds) |
2021-04-06 13:04:30 +0200 | <merijn> | So, we have Template Haskell which is code, that runs at compile time and produces an AST (that gets compiled into the final program) |
2021-04-06 13:04:40 +0200 | <olligobber> | yes |
2021-04-06 13:04:43 +0200 | <merijn> | That AST is represented as Type |
2021-04-06 13:05:12 +0200 | <olligobber> | part of it is, sure |
2021-04-06 13:05:20 +0200 | frozenErebus | (~frozenEre@37.231.244.249) |
2021-04-06 13:05:38 +0200 | Alleria_ | (~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) |
2021-04-06 13:05:49 +0200 | <olligobber> | oh |
2021-04-06 13:05:51 +0200 | <olligobber> | hm |
2021-04-06 13:05:52 +0200 | <merijn> | The Lift class has, essentially, 1 function: "liftTyped :: t -> m Exp" |
2021-04-06 13:06:11 +0200 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Read error: No route to host) |
2021-04-06 13:06:13 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2021-04-06 13:06:19 +0200 | <merijn> | i.e. "given a value (at TH execution time), give me the AST representating that value" |
2021-04-06 13:06:40 +0200 | <olligobber> | I fixed it! |
2021-04-06 13:06:47 +0200 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-04-06 13:06:48 +0200 | <olligobber> | now I get a different error |
2021-04-06 13:07:01 +0200 | <sshine> | merijn, "liftTyped" as in "it passed GHC's type-check"? |
2021-04-06 13:07:03 +0200 | <merijn> | But, trying to Lift "Type" implies you are trying to construct the AST of a TH AST at compile time |
2021-04-06 13:07:07 +0200 | rprije | (~rprije@59-102-63-15.tpgi.com.au) (Ping timeout: 260 seconds) |
2021-04-06 13:07:12 +0200 | <olligobber> | yeah I was |
2021-04-06 13:07:25 +0200 | <merijn> | sshine: Well, there's "two" THs in GHC |
2021-04-06 13:07:48 +0200 | <olligobber> | instead I used a let bind to make it lift the string instead of the Type |
2021-04-06 13:07:52 +0200 | <merijn> | sshine: There's regular old Template Haskell, which is a Haskell AST that gets compiled, but that AST might be broken and have type errors |
2021-04-06 13:08:10 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-04-06 13:08:12 +0200 | <merijn> | sshine: There's also Typed TH which guarantees the TH generated AST is well-typed |
2021-04-06 13:08:18 +0200 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds) |
2021-04-06 13:08:25 +0200 | <sshine> | merijn, cool! |
2021-04-06 13:08:33 +0200 | <merijn> | sshine: So really it's more like "liftTyped :: t -> Q (TExp t)" |
2021-04-06 13:08:34 +0200 | <olligobber> | yeah, I can't use typed th here |
2021-04-06 13:08:44 +0200 | <merijn> | sshine: vs "lift :: t -> Q Exp" |
2021-04-06 13:08:50 +0200 | <sshine> | merijn, so supposedly that reduces the C++-like type-error-wall-of-text scenarios? |
2021-04-06 13:09:12 +0200 | <merijn> | sshine: It means that you get the type error in your TH code, rather then the *generated* code, yeah |
2021-04-06 13:09:19 +0200 | <merijn> | sshine: Also, it allows some funky hacks |
2021-04-06 13:09:31 +0200 | <merijn> | sshine: Because you can smuggle typeclass instances backwards! |
2021-04-06 13:09:56 +0200 | <olligobber> | merijn, so I was basically doing [| show t |] where t :: Type, but now I'm doing let showt = show t in [| showt |] |
2021-04-06 13:10:08 +0200 | <sshine> | merijn, >_< |
2021-04-06 13:10:09 +0200 | <merijn> | @hackage validated-literals |
2021-04-06 13:10:09 +0200 | <lambdabot> | https://hackage.haskell.org/package/validated-literals |
2021-04-06 13:10:35 +0200 | <merijn> | sshine: I take a look at the "final" type, then smuggle the typeclass from that back to compile time to do validation |
2021-04-06 13:11:16 +0200 | <merijn> | I need to update it for 9.0, 9.2 and TH 2.17 though >.> |
2021-04-06 13:11:17 +0200 | <olligobber> | ok, now to make "ForallT [KindedTV a_6989586621679019993 StarT,KindedTV v_7566047373982443483 StarT] [] (AppT (AppT (ConT Functional.Lambda.Typed.TypedLambda) (AppT (AppT ArrowT (VarT a_6989586621679019993)) (VarT a_6989586621679019993))) (VarT v_7566047373982443483))" into something readable |
2021-04-06 13:11:58 +0200 | <sshine> | merijn, validated-literals is a good example of somewhere where the type-level fu is pretty encapsulated, and the exposed interface is clean and Boring in the exciting way. :-D |
2021-04-06 13:12:08 +0200 | <merijn> | sshine: Thanks :D |
2021-04-06 13:12:13 +0200 | <merijn> | That was the goal |
2021-04-06 13:12:23 +0200 | <merijn> | tbh |
2021-04-06 13:12:25 +0200 | <olligobber> | yeah, validated-literals is super cool |
2021-04-06 13:12:29 +0200 | <merijn> | the implementation is trivial |
2021-04-06 13:12:34 +0200 | <sshine> | I've seen it before. I just haven't used it yet. so nice to get reminded. |
2021-04-06 13:13:04 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 13:14:05 +0200 | <merijn> | I'm trying to sneak in enough hacking time to fix Haskell-CI to my liking for GitHub Actions so I can restore CI testing on my repos and update for GHC 9.0 and later, but coding energy is low stuck at home all year >.> |
2021-04-06 13:14:26 +0200 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2021-04-06 13:14:41 +0200 | Alleria_ | (~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-04-06 13:14:56 +0200 | <olligobber> | ah, pprint, nice: `forall (a_0 :: *) (v_1 :: *) .Functional.Lambda.Typed.TypedLambda (a_0 -> a_0) v_1' |
2021-04-06 13:16:05 +0200 | <merijn> | olligobber: I can't help but be suspicious of showing a type, then quoting that? Really seems like you'd want something like Name or reify instead? |
2021-04-06 13:16:32 +0200 | <olligobber> | merijn, I am using reify to get the type |
2021-04-06 13:17:05 +0200 | <olligobber> | and I'm gonna use pprint instead of show |
2021-04-06 13:17:05 +0200 | <merijn> | olligobber: Why the show, though? |
2021-04-06 13:17:11 +0200 | <olligobber> | so it's a string |
2021-04-06 13:17:17 +0200 | <merijn> | What's gonna happen with that string? |
2021-04-06 13:17:19 +0200 | <olligobber> | print |
2021-04-06 13:17:42 +0200 | <merijn> | So you're trying to print the string of the generated TH at compile time? |
2021-04-06 13:17:43 +0200 | xourt | (d4c620ea@212-198-32-234.rev.numericable.fr) (Ping timeout: 240 seconds) |
2021-04-06 13:17:48 +0200 | <olligobber> | no |
2021-04-06 13:17:55 +0200 | <olligobber> | I'm trying to print the type of a function |
2021-04-06 13:18:04 +0200 | <olligobber> | at runtime |
2021-04-06 13:18:11 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 240 seconds) |
2021-04-06 13:18:44 +0200 | <merijn> | olligobber: A polymorphic function, I assume? |
2021-04-06 13:18:50 +0200 | <olligobber> | yeah |
2021-04-06 13:18:55 +0200 | <merijn> | Else you could just use typeRep |
2021-04-06 13:19:16 +0200 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 268 seconds) |
2021-04-06 13:19:18 +0200 | <olligobber> | oh, I don't just want the type of the thing |
2021-04-06 13:19:30 +0200 | <olligobber> | the type is TypedLambda t v, and I just want to print t |
2021-04-06 13:20:01 +0200 | <olligobber> | and it worked! wow |
2021-04-06 13:24:01 +0200 | <olligobber> | merijn, see: https://gist.github.com/olligobber/a8931ae1ed972e6d524063b079dcdefb |
2021-04-06 13:24:08 +0200 | <olligobber> | works fine |
2021-04-06 13:24:42 +0200 | <olligobber> | for one example |
2021-04-06 13:26:06 +0200 | <merijn> | olligobber: Careful an elder god doesn't fry your brain, staring into that abyss ;) |
2021-04-06 13:26:17 +0200 | <olligobber> | it's fine |
2021-04-06 13:26:46 +0200 | <merijn> | That's what all Lovecraft protoganists think before descending into gibbering madness ;) |
2021-04-06 13:27:26 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) |
2021-04-06 13:27:46 +0200 | <olligobber> | I chose this path when I started learning haskell |
2021-04-06 13:28:44 +0200 | <olligobber> | though better variable names from pprinting the types would be nice |
2021-04-06 13:28:46 +0200 | <merijn> | olligobber: Oh, I am not saying you *shouldn't*, I learned a lot messing with dark arts, but it helps to be aware that what you are doing is in fact dark voodoo :p |
2021-04-06 13:30:00 +0200 | <olligobber> | oh yeah, typing in "compose" and it returning "(b_0 -> c_1) -> (a_2 -> b_0) -> a_2 -> c_1" and "(λabc.a(bc))" is definitely voodoo |
2021-04-06 13:30:16 +0200 | <olligobber> | I just wish the voodoo had less unnecessary underscores |
2021-04-06 13:30:48 +0200 | <Logio> | extra precision is needed when dealing with demons |
2021-04-06 13:31:30 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 13:32:23 +0200 | <merijn> | olligobber: I'm still fond of this horror: https://gist.github.com/merijn/6130082 ;) |
2021-04-06 13:32:46 +0200 | <merijn> | olligobber: You need the underscores because naming things is hard, even if you're a compiler! |
2021-04-06 13:34:03 +0200 | <Logio> | I'm tempted to press the "report abuse" button on the gist |
2021-04-06 13:34:09 +0200 | malumore | (~malumore@151.62.116.133) |
2021-04-06 13:35:10 +0200 | <merijn> | Logio: Now realise I wrote that in 2013 |
2021-04-06 13:35:14 +0200 | <merijn> | ;) |
2021-04-06 13:35:26 +0200 | <merijn> | You can do much worse now :p |
2021-04-06 13:36:24 +0200 | <olligobber> | merijn, wait, so that is the identity function but it doesn't work on () or Int? |
2021-04-06 13:36:39 +0200 | <merijn> | olligobber: YEs |
2021-04-06 13:36:42 +0200 | <olligobber> | o_O |
2021-04-06 13:36:43 +0200 | <merijn> | Well |
2021-04-06 13:36:46 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.44) (Ping timeout: 240 seconds) |
2021-04-06 13:36:56 +0200 | <olligobber> | also, I fixed the underscore thing, why can't ghc do it too? |
2021-04-06 13:36:57 +0200 | <merijn> | olligobber: There's...some catches |
2021-04-06 13:37:01 +0200 | <olligobber> | oh no |
2021-04-06 13:37:15 +0200 | <merijn> | olligobber: As in, if you write "1" GHC can't tell if it's Int or not |
2021-04-06 13:37:22 +0200 | <olligobber> | right |
2021-04-06 13:37:30 +0200 | <merijn> | So (at least in 2013) it'd throw a hissy fit on polymorphic literals |
2021-04-06 13:37:34 +0200 | <olligobber> | lol |
2021-04-06 13:37:47 +0200 | <merijn> | But at least it was a compile time hissy fit! |
2021-04-06 13:38:23 +0200 | <merijn> | You could probably write something better |
2021-04-06 13:38:33 +0200 | <olligobber> | so I can't get rid of the underscores? |
2021-04-06 13:38:37 +0200 | CitizenSnips | (~CitizenSn@irc.refl.club) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-04-06 13:38:44 +0200 | <merijn> | This is also using a hacky ~ abuse to force the error, because there was no custom type errors at the time |
2021-04-06 13:38:48 +0200 | <merijn> | olligobber: Probably no |
2021-04-06 13:38:52 +0200 | <olligobber> | :( |
2021-04-06 13:39:02 +0200 | <merijn> | olligobber: those type variable names are an internal detail of GHC |
2021-04-06 13:39:37 +0200 | <merijn> | I mean, you could write code to rename all the type variables before printing...but that seems excessive >.> |
2021-04-06 13:39:40 +0200 | <olligobber> | I've written a function that takes a traversable of ords and replaces each thing with a distinct name before though |
2021-04-06 13:40:02 +0200 | CitizenSnips | (~CitizenSn@irc.refl.club) |
2021-04-06 13:40:04 +0200 | <olligobber> | fine, underscores are ok |
2021-04-06 13:40:14 +0200 | <olligobber> | the point of using template haskell here is to be lazy |
2021-04-06 13:41:58 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-04-06 13:42:19 +0200 | royal_screwup211 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 13:42:19 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 13:42:30 +0200 | geekosaur | (ac3a53f2@172.58.83.242) |
2021-04-06 13:42:38 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 13:42:39 +0200 | <olligobber> | as for dark magic, I type "fix", I get "(a_0 -> a_0) -> a_0" and "(λa.(λb.bb)(λb.a(bb)))" |
2021-04-06 13:46:25 +0200 | Sorna | (~Sornaensi@077213203030.dynamic.telenor.dk) |
2021-04-06 13:46:32 +0200 | <merijn> | I am both impressed and appalled :p |
2021-04-06 13:46:39 +0200 | <olligobber> | :D |
2021-04-06 13:47:11 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
2021-04-06 13:49:38 +0200 | <olligobber> | oh no, GHC.Types.Bool? |
2021-04-06 13:49:41 +0200 | Sornaensis | (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 252 seconds) |
2021-04-06 13:49:42 +0200 | <olligobber> | I just want Bool! |
2021-04-06 13:50:06 +0200 | maroloccio | (~marolocci@pousada3ja.mma.com.br) |
2021-04-06 13:51:43 +0200 | Alleria_ | (~AllahuAkb@2603-7000-3040-0000-51cb-91e5-ecfa-0406.res6.spectrum.com) |
2021-04-06 13:52:27 +0200 | dougsko | (~dougsko@139.28.218.148) (Remote host closed the connection) |
2021-04-06 13:53:19 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) (Read error: Connection reset by peer) |
2021-04-06 13:53:48 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) |
2021-04-06 13:55:21 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:9c30:fa43:beb0:8b1b) |
2021-04-06 13:56:01 +0200 | drbean_ | (~drbean@TC210-63-209-216.static.apol.com.tw) |
2021-04-06 13:58:45 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-04-06 13:59:57 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:9c30:fa43:beb0:8b1b) (Ping timeout: 250 seconds) |
2021-04-06 14:00:32 +0200 | frozenErebus | (~frozenEre@37.231.244.249) (Ping timeout: 246 seconds) |
2021-04-06 14:02:10 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 14:03:27 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 14:03:38 +0200 | urodna | (~urodna@unaffiliated/urodna) |
2021-04-06 14:06:01 +0200 | malumore | (~malumore@151.62.116.133) (Ping timeout: 260 seconds) |
2021-04-06 14:08:00 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-04-06 14:09:11 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) (Ping timeout: 260 seconds) |
2021-04-06 14:15:11 +0200 | manuel | (~manuel@185.204.1.185) |
2021-04-06 14:15:38 +0200 | <olligobber> | huh, is regex not in haskell by default? |
2021-04-06 14:16:04 +0200 | <geekosaur> | we tend to prefer parsers |
2021-04-06 14:16:16 +0200 | <olligobber> | fair, but I'm doing hacky stuff |
2021-04-06 14:16:17 +0200 | Alleria | (~textual@mskresolve-a.mskcc.org) |
2021-04-06 14:16:19 +0200 | <yushyin> | 'in haskell'? we have regex libs on hackage |
2021-04-06 14:16:30 +0200 | <olligobber> | yeah, but it isn't in base |
2021-04-06 14:16:41 +0200 | Alleria | Guest96189 |
2021-04-06 14:17:03 +0200 | <geekosaur> | base is small, not "contains everything" |
2021-04-06 14:17:28 +0200 | <olligobber> | yeah, and regex should be avoided |
2021-04-06 14:17:30 +0200 | <olligobber> | hmm |
2021-04-06 14:17:41 +0200 | <olligobber> | can I do this without regex |
2021-04-06 14:18:10 +0200 | <xsperry> | you can get regex packages on hackage, just like parser packages |
2021-04-06 14:18:39 +0200 | <olligobber> | yeah, but there must be a better way of doing this... |
2021-04-06 14:19:01 +0200 | <merijn> | olligobber: Parser combinators :p |
2021-04-06 14:19:11 +0200 | <xsperry> | what are you doing? |
2021-04-06 14:19:22 +0200 | <merijn> | xsperry: Black magic :p |
2021-04-06 14:19:35 +0200 | <olligobber> | printing a Type but without the underscores after type variables and library names before type constructors |
2021-04-06 14:20:20 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 14:20:24 +0200 | Tario | (~Tario@201.192.165.173) |
2021-04-06 14:20:53 +0200 | <olligobber> | I could write my own function... |
2021-04-06 14:21:00 +0200 | <geekosaur> | :t span |
2021-04-06 14:21:01 +0200 | <lambdabot> | (a -> Bool) -> [a] -> ([a], [a]) |
2021-04-06 14:21:21 +0200 | <olligobber> | nah, I'll just write my own function to render the ast |
2021-04-06 14:21:30 +0200 | <olligobber> | famous last words |
2021-04-06 14:21:59 +0200 | Sorny | (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) |
2021-04-06 14:23:18 +0200 | <Uniaika> | olligobber: what do you need regexps for? |
2021-04-06 14:23:28 +0200 | <Uniaika> | ah, curse, my client has scrolled up |
2021-04-06 14:23:31 +0200 | <Uniaika> | olligobber: don't mind me |
2021-04-06 14:23:48 +0200 | bahamas | (~lucian@86.120.22.101) |
2021-04-06 14:23:48 +0200 | bahamas | (~lucian@86.120.22.101) (Changing host) |
2021-04-06 14:23:48 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2021-04-06 14:24:09 +0200 | <tdammers> | personally, my first instinct would be to find a better representation of that Type, one that has more structure to it than just String |
2021-04-06 14:24:23 +0200 | nbloomf | (~nbloomf@76.217.43.73) |
2021-04-06 14:24:26 +0200 | Sorna | (~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 240 seconds) |
2021-04-06 14:24:34 +0200 | <tdammers> | and then build a custom pretty-printer for that, rather than trying to reverse-engineer the existing pretty-printing |
2021-04-06 14:25:36 +0200 | <olligobber> | well, Type kinda captures that |
2021-04-06 14:26:16 +0200 | <tdammers> | right, it's Type from TH, isn't it |
2021-04-06 14:26:23 +0200 | <olligobber> | yeah |
2021-04-06 14:26:47 +0200 | <tdammers> | so you'd have to bite the bullet and write a pretty-printer that covers all the constructors |
2021-04-06 14:27:26 +0200 | <olligobber> | or I could make it fail on constructors I don't think it will actually encounter |
2021-04-06 14:27:27 +0200 | <tdammers> | and then use https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH.html#g:16 these fellows to massage individual names into a format you like |
2021-04-06 14:27:43 +0200 | <tdammers> | yeah, or that. or just print something useless for them |
2021-04-06 14:27:57 +0200 | <tdammers> | depends how serious and reusable you want to make it |
2021-04-06 14:28:14 +0200 | <olligobber> | I expect most of my types to be fairly normal |
2021-04-06 14:28:24 +0200 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
2021-04-06 14:28:35 +0200 | <olligobber> | huh, what does nameBase do to type variables I wonder |
2021-04-06 14:29:00 +0200 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) |
2021-04-06 14:29:08 +0200 | <tdammers> | same as term variables. report the local name without a module prefix. |
2021-04-06 14:29:25 +0200 | <tdammers> | if there's an underscore at the end, it'll still havethat |
2021-04-06 14:29:30 +0200 | <olligobber> | I see |
2021-04-06 14:29:33 +0200 | <tdammers> | but just removing the underscore isn't difficult at all |
2021-04-06 14:29:42 +0200 | <olligobber> | what if there is a_0 and a_1 |
2021-04-06 14:29:45 +0200 | solvr | (57e3c46d@87.227.196.109) |
2021-04-06 14:29:57 +0200 | <tdammers> | well, then you would normally want to retain the whole thing to distinguish them |
2021-04-06 14:30:15 +0200 | <olligobber> | I'm gonna write a smart renamer instead that just uses ['a'..'z'] as type variable names |
2021-04-06 14:30:33 +0200 | <tdammers> | depends on your use case, but yes, that you could do |
2021-04-06 14:33:47 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 246 seconds) |
2021-04-06 14:34:22 +0200 | malumore | (~malumore@151.62.116.133) |
2021-04-06 14:34:36 +0200 | <olligobber> | yeah I can re-use something like `reLabelInt :: (Ord x, Traversable t) => t x -> t Integer' from https://github.com/olligobber/DirectProof/blob/master/ReLabel.hs |
2021-04-06 14:36:39 +0200 | geekosaur | (ac3a53f2@172.58.83.242) (Quit: Connection closed) |
2021-04-06 14:39:35 +0200 | geekosaur | (ac3a53f2@172.58.83.242) |
2021-04-06 14:41:45 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection) |
2021-04-06 14:41:50 +0200 | CitizenSnips | (~CitizenSn@irc.refl.club) (Remote host closed the connection) |
2021-04-06 14:42:52 +0200 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-04-06 14:43:02 +0200 | CitizenSnips | (~CitizenSn@irc.refl.club) |
2021-04-06 14:43:40 +0200 | ukari | (~ukari@unaffiliated/ukari) |
2021-04-06 14:45:38 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 14:46:10 +0200 | CitizenSnips | (~CitizenSn@irc.refl.club) (Client Quit) |
2021-04-06 14:47:00 +0200 | waleee-cl | (uid373333@gateway/web/irccloud.com/x-nfsshumoaduyxswb) |
2021-04-06 14:50:01 +0200 | CitizenSnips | (~CitizenSn@irc.refl.club) |
2021-04-06 14:51:22 +0200 | mmmattyx | (uid17782@gateway/web/irccloud.com/x-kuttqhjrmgrkynne) |
2021-04-06 14:53:43 +0200 | shalokshalom | (~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106) (Ping timeout: 246 seconds) |
2021-04-06 14:54:58 +0200 | ddellacosta | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
2021-04-06 14:55:32 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 14:56:59 +0200 | maroloccio | (~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3) |
2021-04-06 14:59:41 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2021-04-06 15:00:14 +0200 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-04-06 15:02:11 +0200 | typetetris | (uid275937@gateway/web/irccloud.com/x-ffiqklyrigbqxewu) |
2021-04-06 15:02:47 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.223) |
2021-04-06 15:04:42 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-04-06 15:08:57 +0200 | frozenErebus | (~frozenEre@37.231.244.249) |
2021-04-06 15:09:06 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) |
2021-04-06 15:10:15 +0200 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 268 seconds) |
2021-04-06 15:10:58 +0200 | forell | (~forell@unaffiliated/forell) (Quit: ZNC - https://znc.in) |
2021-04-06 15:11:11 +0200 | deviantfero | (~deviantfe@190.150.27.58) (Quit: WeeChat 3.1) |
2021-04-06 15:11:51 +0200 | forell | (~forell@unaffiliated/forell) |
2021-04-06 15:13:05 +0200 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) |
2021-04-06 15:13:08 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 15:13:29 +0200 | nbloomf | (~nbloomf@76.217.43.73) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-04-06 15:15:16 +0200 | carlomagno | (~cararell@148.87.23.11) |
2021-04-06 15:17:04 +0200 | CaptainIRS | (9d339880@157.51.152.128) (Quit: Connection closed) |
2021-04-06 15:19:26 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds) |
2021-04-06 15:19:33 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) |
2021-04-06 15:19:46 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 15:20:05 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 15:21:49 +0200 | xourt | (d4c620ea@212-198-32-234.rev.numericable.fr) |
2021-04-06 15:22:17 +0200 | <olligobber> | ok, my render function is slightly better |
2021-04-06 15:22:26 +0200 | <olligobber> | `((->) a) a' |
2021-04-06 15:22:32 +0200 | <olligobber> | `((->) Bool) ((->) Bool) Bool' |
2021-04-06 15:22:46 +0200 | <olligobber> | could use some work though |
2021-04-06 15:24:47 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 15:26:23 +0200 | <olligobber> | ah, missing brackets, yay |
2021-04-06 15:30:00 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
2021-04-06 15:31:57 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) |
2021-04-06 15:31:59 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) (Read error: Connection reset by peer) |
2021-04-06 15:33:11 +0200 | <olligobber> | yay it worked! |
2021-04-06 15:34:54 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:b11f:2c4a:f9e7:6e7d) |
2021-04-06 15:37:08 +0200 | <emmanuel_erc> | So at my soon to be previous job, I had to maintain a Haskell codebase that is going to be rewritten (to Typescript) |
2021-04-06 15:37:23 +0200 | <emmanuel_erc> | I think I've heard from people here before that Haskell codebase rewrites are common in the industry. |
2021-04-06 15:37:43 +0200 | <olligobber> | why not purescript? |
2021-04-06 15:37:57 +0200 | <emmanuel_erc> | I don't see the need to go into th reasons why it happened at my previous job, but I'd like to ask if it is common that Haskell codebases, what are some common reasons. |
2021-04-06 15:38:53 +0200 | <emmanuel_erc> | olligobber: Because they think typescript is more popular and they'd like to open source the project (they really want PRs from other people not at the compnay) |
2021-04-06 15:39:06 +0200 | cafce25 | (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-04-06 15:39:11 +0200 | kiweun | (~kiweun@2607:fea8:2a62:9600:b11f:2c4a:f9e7:6e7d) (Ping timeout: 250 seconds) |
2021-04-06 15:39:17 +0200 | <olligobber> | hmm, as someone who hasn't used typescript I guess I can't judge yet |
2021-04-06 15:39:41 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 252 seconds) |
2021-04-06 15:39:45 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 15:40:24 +0200 | <lortabac> | emmanuel_erc: I don't know how common they are, it has happened to me and I've heard of at least 3 similar rewrite stories at big companies |
2021-04-06 15:40:45 +0200 | <olligobber> | merijn, want to see the dark magic? https://github.com/olligobber/IotaBF/blob/70d04088bac1f56c4660be1f7ba6e16ef0403a01/src/PrintLambda… |
2021-04-06 15:41:21 +0200 | <olligobber> | note I have no idea if it works properly, but it works on my test cases |
2021-04-06 15:41:46 +0200 | <lortabac> | emmanuel_erc: the common theme seem to be an ambitious manager looking for an easy way of promoting themselves |
2021-04-06 15:43:35 +0200 | cafce25 | (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) |
2021-04-06 15:44:07 +0200 | cafce25 | (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Client Quit) |
2021-04-06 15:44:18 +0200 | cafce25 | (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) |
2021-04-06 15:44:23 +0200 | geekosaur | (ac3a53f2@172.58.83.242) (Quit: Connection closed) |
2021-04-06 15:45:11 +0200 | <emmanuel_erc> | that seems to be the case here as well. |
2021-04-06 15:45:18 +0200 | tetrahedron | (hypercube@gateway/vpn/protonvpn/hypercube) (Ping timeout: 240 seconds) |
2021-04-06 15:46:44 +0200 | <emmanuel_erc> | I mean they don't come right out and say that. How did everyone else come to the conclusion that there was some ambitious manager looking to promote themselves? |
2021-04-06 15:47:12 +0200 | <lortabac> | that was my own conclusion |
2021-04-06 15:47:23 +0200 | <lortabac> | based on the stories I have witnessed and heard |
2021-04-06 15:47:39 +0200 | Rudd0 | (~Rudd0@185.189.115.108) (Ping timeout: 260 seconds) |
2021-04-06 15:49:18 +0200 | <lortabac> | that said, I have also heard of rewrites for technical reasons -- there was a team migrating to Go because of the long GC pauses |
2021-04-06 15:50:05 +0200 | <lortabac> | they wrote a blog post IIRC |
2021-04-06 15:50:09 +0200 | drbean_ | (~drbean@TC210-63-209-216.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
2021-04-06 15:50:10 +0200 | <merijn> | emmanuel_erc: Usually what happens is: Some small team of people write something cool in Haskell that blows other solutions out the water. It takes of. Managers and corporate come in, look at Haskell and go "oh...shit what do we do with this...", hire 100 code monkeys to reimplement the entire thing in Java/C++ and repeat |
2021-04-06 15:50:25 +0200 | <merijn> | See: BlueSpec |
2021-04-06 15:51:47 +0200 | <merijn> | Managers/companies don't wanna deal with needing to find people with the right skills, training, etc. they mostly want easily replaced, predictable machine cogs :p |
2021-04-06 15:51:55 +0200 | <lortabac> | in the company where I work, 2 out of the 3 projects I've worked on have been rewritten |
2021-04-06 15:52:04 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 15:52:05 +0200 | <lortabac> | the first one was more or less as merijn described |
2021-04-06 15:52:33 +0200 | <lortabac> | the second one was more about an ambitious manager blaming Haskell instead of management problems |
2021-04-06 15:53:15 +0200 | <merijn> | emmanuel_erc: Orson Scott Card's essay on software companies is always relevant: http://www.call-with-current-continuation.org/rants/how-companies-die.txt |
2021-04-06 15:53:16 +0200 | <lortabac> | then blaming the C# devs who quit the project before finishing the rewrite (because they ran into the same problems as the Haskell team) |
2021-04-06 15:54:44 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2021-04-06 15:55:16 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection) |
2021-04-06 15:55:39 +0200 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0.1) |
2021-04-06 15:56:16 +0200 | <maerwald> | lortabac: yes, they tried to hire haskellers with Go experience, I remember. |
2021-04-06 15:56:19 +0200 | ukari | (~ukari@unaffiliated/ukari) (Ping timeout: 265 seconds) |
2021-04-06 15:56:52 +0200 | <merijn> | lortabac: To be fair, the project couldn't have been a more perfect worst-case for GHC's GC if they'd tried :p |
2021-04-06 15:56:57 +0200 | <merijn> | s/the/that |
2021-04-06 15:57:23 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) |
2021-04-06 15:58:16 +0200 | <maerwald> | emmanuel_erc: Typescript is awesome. I know haskellers who switched to TypeScript jobs |
2021-04-06 15:59:47 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds) |
2021-04-06 16:01:07 +0200 | <shapr> | int-e: much more activity here https://github.com/grin-compiler/ |
2021-04-06 16:01:34 +0200 | <zzz> | msg lambdabot :t 3 |
2021-04-06 16:01:43 +0200 | <zzz> | ignore that please |
2021-04-06 16:01:54 +0200 | <merijn> | zzz: You can't make me! |
2021-04-06 16:01:55 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 16:02:41 +0200 | notzmv | (~zmv@unaffiliated/zmv) (Ping timeout: 268 seconds) |
2021-04-06 16:03:29 +0200 | <fendor> | maerwald, while I agree, typescript is really cool, I don't like the ecosystem that comes with it, usually |
2021-04-06 16:04:49 +0200 | <lortabac> | typescript is cool, but rewrites are almost always a bad idea |
2021-04-06 16:04:59 +0200 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
2021-04-06 16:05:58 +0200 | <merijn> | I disagree |
2021-04-06 16:06:04 +0200 | <merijn> | Lots of times they're a great idea |
2021-04-06 16:06:05 +0200 | <emmanuel_erc> | Regardless, I'm leaving the current job partially because I think the rewrite is a dumb idea and I don't want to work on a codebase that is going to be thrown out eventually. |
2021-04-06 16:06:27 +0200 | <emmanuel_erc> | They didn't really have an interest in listening to what I had to say about the whole venture. |
2021-04-06 16:06:31 +0200 | `slikts | (~nelabs@wikipedia/reinis) (Ping timeout: 246 seconds) |
2021-04-06 16:06:32 +0200 | <emmanuel_erc> | So I've decided to leave. |
2021-04-06 16:06:42 +0200 | Tops21 | (~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) |
2021-04-06 16:07:14 +0200 | <maerwald> | merijn: the problem is that most ppl think rewrite should include changing langague |
2021-04-06 16:07:20 +0200 | <maerwald> | while that's often one of the lesser problems |
2021-04-06 16:08:06 +0200 | <maerwald> | most of the time the continuous growing of the codebase is what kills the bird |
2021-04-06 16:08:33 +0200 | <maerwald> | assumptions that were true in the beginning aren't anymore, but are still intrinic part of the architecture |
2021-04-06 16:08:38 +0200 | <merijn> | maerwald: More people should listen to Brooks. Build one to throw away |
2021-04-06 16:08:43 +0200 | <maerwald> | everything after that is going to be sh*te |
2021-04-06 16:09:42 +0200 | <zzz> | if i have 'x = 1 :: Num a => a ; y = x :: Int' are x and y the same or is y a copy of x? |
2021-04-06 16:09:50 +0200 | <lortabac> | merijn: rewrites in the real world are different, they are often made by different people, who end up reinventing the same wheels and making the same mistakes |
2021-04-06 16:10:02 +0200 | <merijn> | zzz: Yes, no, maybe, you shouldn't care :) |
2021-04-06 16:10:08 +0200 | <maerwald> | so we have ppl switch languages, frameworks and whatnot... but they rarely switch their *approach* to software engineering |
2021-04-06 16:10:24 +0200 | <merijn> | lortabac: I'm not responsible for people doing sensible things in a stupid way, thereby ruining the sensibility |
2021-04-06 16:10:25 +0200 | <lortabac> | "Build one to throw away" is a very good idea if you gain knowledge from the first try |
2021-04-06 16:10:31 +0200 | Tops2 | (~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) (Ping timeout: 260 seconds) |
2021-04-06 16:10:47 +0200 | <merijn> | maerwald: Wait...I have to think to program? |
2021-04-06 16:10:58 +0200 | <merijn> | maerwald: I thought I could just copy&paste from SO |
2021-04-06 16:11:39 +0200 | <zzz> | merijn: i see. 'x / 2' is fine but 'y / 2' is not |
2021-04-06 16:11:49 +0200 | <maerwald> | yeah and read blog posts from Google engineers to figure out what framework you need |
2021-04-06 16:12:06 +0200 | <maerwald> | (because you really have the same set of problem as google has, right?) |
2021-04-06 16:12:38 +0200 | Guest15377 | stilgart |
2021-04-06 16:13:24 +0200 | <merijn> | zzz: Yes, but that's unrelated? |
2021-04-06 16:13:33 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection) |
2021-04-06 16:13:42 +0200 | tetrahedron | (~hypercube@137.112.237.23) |
2021-04-06 16:13:46 +0200 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-frmbfjisqfxmhgqn) (Quit: Connection closed for inactivity) |
2021-04-06 16:13:53 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 16:15:00 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-04-06 16:15:15 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) |
2021-04-06 16:15:51 +0200 | kiweun | (~kiweun@dsl-173-206-238-190.tor.primus.ca) |
2021-04-06 16:15:59 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) (Client Quit) |
2021-04-06 16:16:05 +0200 | <zzz> | merijn: it is? |
2021-04-06 16:16:13 +0200 | <merijn> | :t (/) |
2021-04-06 16:16:14 +0200 | <lambdabot> | Fractional a => a -> a -> a |
2021-04-06 16:16:15 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) |
2021-04-06 16:16:30 +0200 | <merijn> | zzz: / only works on types that are instances of Fractional |
2021-04-06 16:16:38 +0200 | <merijn> | zzz: Int is not an instance of Fractional |
2021-04-06 16:16:44 +0200 | <tdammers> | maerwald: and also because the choice of framework is the one thing that defines you as an "engineer" |
2021-04-06 16:16:45 +0200 | kiweun | (~kiweun@dsl-173-206-238-190.tor.primus.ca) (Remote host closed the connection) |
2021-04-06 16:16:49 +0200 | <merijn> | So using / on something of type Int is a type error |
2021-04-06 16:17:05 +0200 | frozenErebus | (~frozenEre@37.231.244.249) (Ping timeout: 252 seconds) |
2021-04-06 16:17:10 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 276 seconds) |
2021-04-06 16:17:15 +0200 | <merijn> | zzz: 'y' has type "Int" (whether it's the same as x or not) |
2021-04-06 16:17:24 +0200 | <merijn> | zzz: You probably want div |
2021-04-06 16:17:34 +0200 | <merijn> | > 10 `div` 3 |
2021-04-06 16:17:36 +0200 | <lambdabot> | 3 |
2021-04-06 16:17:54 +0200 | <zzz> | no. thats the thing |
2021-04-06 16:18:00 +0200 | <zzz> | ok, let me try to explain |
2021-04-06 16:18:04 +0200 | <merijn> | Then you want fromIntegral |
2021-04-06 16:18:13 +0200 | <zzz> | (1 :: Num a => a) / 2 |
2021-04-06 16:18:13 +0200 | <merijn> | > (10 :: Int) / 3 |
2021-04-06 16:18:15 +0200 | <lambdabot> | error: |
2021-04-06 16:18:15 +0200 | <lambdabot> | • No instance for (Fractional Int) arising from a use of ‘/’ |
2021-04-06 16:18:15 +0200 | <lambdabot> | • In the expression: (10 :: Int) / 3 |
2021-04-06 16:18:17 +0200 | <merijn> | eh |
2021-04-06 16:18:18 +0200 | <merijn> | what |
2021-04-06 16:18:20 +0200 | <zzz> | > (1 :: Num a => a) / 2 |
2021-04-06 16:18:21 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-04-06 16:18:21 +0200 | <lambdabot> | 0.5 |
2021-04-06 16:18:22 +0200 | <merijn> | ah, right |
2021-04-06 16:18:32 +0200 | <merijn> | > fromIntegral (10 :: Int) / 3 |
2021-04-06 16:18:34 +0200 | <lambdabot> | 3.3333333333333335 |
2021-04-06 16:18:45 +0200 | <zzz> | no merijn, here's my problem |
2021-04-06 16:18:47 +0200 | <merijn> | :t fromIntegral |
2021-04-06 16:18:48 +0200 | <lambdabot> | (Integral a, Num b) => a -> b |
2021-04-06 16:18:57 +0200 | <zzz> | i get that, but listen |
2021-04-06 16:19:05 +0200 | <zzz> | ill try to be concise |
2021-04-06 16:19:09 +0200 | <zzz> | > (1 :: Num a => a) / 2 |
2021-04-06 16:19:11 +0200 | <lambdabot> | 0.5 |
2021-04-06 16:19:32 +0200 | <zzz> | > (1 :: Int) / 2 |
2021-04-06 16:19:33 +0200 | <lambdabot> | error: |
2021-04-06 16:19:34 +0200 | <lambdabot> | • No instance for (Fractional Int) arising from a use of ‘/’ |
2021-04-06 16:19:34 +0200 | <lambdabot> | • In the expression: (1 :: Int) / 2 |
2021-04-06 16:19:34 +0200 | <merijn> | That's GHC infers (and solves) a Fractional constraint there |
2021-04-06 16:19:41 +0200 | <zzz> | this is all good and obvious |
2021-04-06 16:19:44 +0200 | CaptainIRS | (9d339880@157.51.152.128) |
2021-04-06 16:20:58 +0200 | notzmv | (~zmv@unaffiliated/zmv) |
2021-04-06 16:21:11 +0200 | <zzz> | my problem is when i do 'x = 1 :: Num a => a ; y = x :: Int' i can do x/2 but not y/2 |
2021-04-06 16:21:25 +0200 | <merijn> | Yes |
2021-04-06 16:21:42 +0200 | <zzz> | which kind of clashes with my idea of referential transparency |
2021-04-06 16:21:50 +0200 | <maerwald> | tdammers: I've been thinking whether there's a way to capture the notion of code complexity (in terms of intellectual/practical complexity) better, especially over time. But it would always sorta be per compontent/module/function (e.g. via self-reports after a ticket is complete) |
2021-04-06 16:21:55 +0200 | <merijn> | zzz: Why? |
2021-04-06 16:22:02 +0200 | <maerwald> | But that quickly breaks down with code refactors |
2021-04-06 16:22:04 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 16:22:27 +0200 | tetrahedron | (~hypercube@137.112.237.23) (Quit: WeeChat 3.1) |
2021-04-06 16:22:35 +0200 | <emmanuel_erc> | Given what has happened to me at this last job, it makes me wonder if persuing Haskell has been worth it or will be so. |
2021-04-06 16:22:45 +0200 | <merijn> | zzz: If you rewrote "y = 1 :: Int" you'd get the same result |
2021-04-06 16:22:57 +0200 | <maerwald> | emmanuel_erc: worth for? |
2021-04-06 16:23:03 +0200 | <zzz> | merijn: because if 'x = y', shouldn't 'x/2 == y/2' ? |
2021-04-06 16:23:04 +0200 | <merijn> | So, you can trivially replace 'x' with its definition in y. |
2021-04-06 16:23:29 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
2021-04-06 16:23:33 +0200 | <emmanuel_erc> | maerwald: Was learning Haskell worth it? (For job prospects/satisfication) |
2021-04-06 16:23:37 +0200 | <lortabac> | emmanuel_erc: instead of a big company with a small Haskell team, try targeting companies that are fully committed to Haskell |
2021-04-06 16:23:46 +0200 | <merijn> | zzz: But x and y have different types |
2021-04-06 16:23:54 +0200 | <tdammers> | maerwald: "WTF/s" is the established unit for that, I think |
2021-04-06 16:23:56 +0200 | <lortabac> | it has worked for me (I am starting a new job in a couple of weeks) |
2021-04-06 16:23:59 +0200 | <zzz> | merijn: i see |
2021-04-06 16:24:03 +0200 | <maerwald> | tdammers: :p |
2021-04-06 16:24:36 +0200 | <merijn> | zzz: You can replace sub expressions *in a well-typed expression* with their definition |
2021-04-06 16:24:46 +0200 | <merijn> | zzz: But your 'y/2' isn't well typed to begin with |
2021-04-06 16:24:52 +0200 | <maerwald> | emmanuel_erc: well, there are some well paid haskell jobs, but generally you can make better money with other languages |
2021-04-06 16:25:02 +0200 | <tdammers> | emmanuel_erc: I would say that learning Haskell is worth it even if you never get to use the language itself professionally. Just the concepts you're exposed to, and the clarity gained from working through them and making them your own, is worth every minute of it. |
2021-04-06 16:25:22 +0200 | <merijn> | zzz: Basically, claims are limited to well-typed expression. Expression that are *not* well-typed may (or may not) conform to those claims |
2021-04-06 16:25:24 +0200 | <tdammers> | emmanuel_erc: the risk is of course that you may end up spoiling your brain for more, ahem, pedestrian languages |
2021-04-06 16:25:33 +0200 | <maerwald> | pedestrian :p |
2021-04-06 16:25:44 +0200 | <merijn> | zzz: In this case, the claim would still hold for your example, despite 'y/2' not being well-typed |
2021-04-06 16:25:46 +0200 | <tdammers> | *cough*phpedestrian*cough**diescoughing* |
2021-04-06 16:26:03 +0200 | <emmanuel_erc> | tdammers: Yeah, I can sympathize with that last statement. It annoys me when I don't have algebraic data types (I'm talking the most basic kind). |
2021-04-06 16:26:22 +0200 | <maerwald> | emmanuel_erc: you can *sorta* have them in typescript |
2021-04-06 16:26:30 +0200 | <kuribas> | tdammers: that happened. I find every other language painful. |
2021-04-06 16:26:39 +0200 | <merijn> | zzz: Basically, the idea of interactions between proofs/claims and types is that, to keep our proofs doable, we restrict to proving properties of well-typed expressions |
2021-04-06 16:26:43 +0200 | <maerwald> | and there are way more opportunities in typescript, so if you're looking for that only... |
2021-04-06 16:26:58 +0200 | <merijn> | zzz: Making use of the type system to rule out cases that we don't care about |
2021-04-06 16:27:35 +0200 | <tdammers> | emmanuel_erc: algebraic data types are still a relatively superficial feature. I'm talking more about the big picture. Things like being more aware of side effects, and designing code to keep them contained. Even if your code isn't pure the way Haskell code is, just having the clarity of mind to realize that effects are thing that need particular attention, and understanding some strategies for dealing with |
2021-04-06 16:27:37 +0200 | <tdammers> | them, is worth a lot. |
2021-04-06 16:27:54 +0200 | <merijn> | zzz: Consider the trivial type system where no expressions are well-typed. Now all our proofs are trivial! Everything is always true for all well-typed expressions ('cause there aren't any)! |
2021-04-06 16:28:05 +0200 | <maerwald> | tdammers: rust sharpens your mind too about mutability, just in a different way |
2021-04-06 16:28:17 +0200 | <tdammers> | maerwald: no doubt. |
2021-04-06 16:28:20 +0200 | <zzz> | merijn: that used to be my intuition, but then 'x = 1 ; y = x :: Int ; z = x :: Double' gives me an error |
2021-04-06 16:28:23 +0200 | <merijn> | zzz: Vice versa, consider the untyped case where *everything* is well-typed, now proving anything becomes impossible |
2021-04-06 16:28:23 +0200 | <haskellstudent> | i would have said just having any decent static type system is a huge improvement |
2021-04-06 16:28:30 +0200 | <tdammers> | maerwald: rust also wasn't the first thing I thought of when I said "pedestrian" |
2021-04-06 16:28:31 +0200 | <merijn> | zzz: Ah! |
2021-04-06 16:28:36 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2021-04-06 16:28:37 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection) |
2021-04-06 16:28:39 +0200 | <emmanuel_erc> | rust is even more esoteric than Haskell in some ways |
2021-04-06 16:28:40 +0200 | <merijn> | zzz: That one is a kinda funny edge case |
2021-04-06 16:28:55 +0200 | <maerwald> | I can be convinced to do haskell, rust and typescript. They all have ADTs |
2021-04-06 16:28:56 +0200 | <merijn> | zzz: You have discovered the "Dreaded Monomorphism Restriction" |
2021-04-06 16:29:01 +0200 | <haskellstudent> | esoteric? :) |
2021-04-06 16:29:01 +0200 | <emmanuel_erc> | well esoteric isn't the right word... there are less use cases for rust IMO |
2021-04-06 16:29:07 +0200 | <tdammers> | yeah, having a type system and type checker that actually pull their weight can do wonder to the damage that Java and its brethren may have inflicted on your brain |
2021-04-06 16:29:12 +0200 | v01d4lph4 | (~v01d4lph4@223.177.183.124) (Remote host closed the connection) |
2021-04-06 16:29:12 +0200 | <maerwald> | emmanuel_erc: it's verbose af, but pretty neat |
2021-04-06 16:29:25 +0200 | <merijn> | zzz: Which is actually kinda related to your original question |
2021-04-06 16:29:30 +0200 | tanuki | (~quassel@173.168.178.1) |
2021-04-06 16:29:46 +0200 | <zzz> | merijn: oh i see |
2021-04-06 16:29:52 +0200 | <merijn> | zzz: Since '1' is polymorphic it can be used at infinitely many different types, right? |
2021-04-06 16:30:20 +0200 | <merijn> | zzz: Now, logically, you can't keep infinite different values in memory, so your only other option is to compute them every time their used |
2021-04-06 16:30:32 +0200 | <maerwald> | and verbose languages (like C) have the tendency to make you skip lines of code in order to understand the broad meaning... and then there's this huge gap between high-level and actual understaning (including all the memory tricks in a codepath) |
2021-04-06 16:30:33 +0200 | <zzz> | i would think so. but i have an idea of what you are talking about i've encountered it before |
2021-04-06 16:30:35 +0200 | rj | (~x@gateway/tor-sasl/rj) |
2021-04-06 16:30:36 +0200 | <merijn> | zzz: But assume '1' was instead something that was super expensive to compute. That'd be bad |
2021-04-06 16:31:18 +0200 | <merijn> | zzz: We have the situation where 'x = ...' *looks* like it is a value that's only computed once, but ends up computed many times...that'd be bad |
2021-04-06 16:31:21 +0200 | kritzefitz | (~kritzefit@2003:5b:203b:200::10:49) (Remote host closed the connection) |
2021-04-06 16:31:43 +0200 | <haskellstudent> | emmanuel_erc: afaik a simple way to put it is that rust is better if performance and latency (no gc pauses) and/or memory usage is really important. haskell is more high level but has gc with the pros and cons of that, its harder to reason about performance and memory usage. |
2021-04-06 16:31:59 +0200 | <zzz> | merijn: yes |
2021-04-06 16:32:06 +0200 | <merijn> | zzz: So the monomorphism restriction says "if something *looks* like a value (as opposed to a function), we monomorphise it" this guarantees the expected "constant computation time" |
2021-04-06 16:32:14 +0200 | <maerwald> | pick the language your engineers like, whatever that is :) |
2021-04-06 16:32:20 +0200 | <emmanuel_erc> | haskellstudent: Yeah, I realize that distinction. |
2021-04-06 16:32:21 +0200 | <haskellstudent> | emmanuel_erc: but i also found rust pretty viable for building an API backend service |
2021-04-06 16:32:33 +0200 | <merijn> | zzz: But that only works if it *can* be monomorphic. But you example tries to turn it into both Int *and* Double |
2021-04-06 16:32:46 +0200 | <emmanuel_erc> | haskellstudent: Have you tinkered around with rust + webassembly? |
2021-04-06 16:32:49 +0200 | <merijn> | zzz: That's only possible if 'x = 1' was polymorphic, which we just said was tricky |
2021-04-06 16:33:11 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds) |
2021-04-06 16:33:15 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) |
2021-04-06 16:33:32 +0200 | <merijn> | zzz: If you wrote your original example as 'x :: Num a => a; x = 1' (so explicit polymorphic literal) then 'y :: Double; y = x' and 'z :: Int; z = x' *would* work |
2021-04-06 16:34:00 +0200 | <merijn> | (The polymorphic type signature on 'x' saying "I know what I'm doing, I'm okay with recomputing this for all possible values" |
2021-04-06 16:34:06 +0200 | <merijn> | ) |
2021-04-06 16:34:10 +0200 | <haskellstudent> | emmanuel_erc: i have a couple months experience each with both haskell (and a bit with ghcjs) and rust but didnt try webassembly because it still seems a bit too early for that. it seems like webassembly bundles turn out even bigger than what ghcjs produces? |
2021-04-06 16:34:50 +0200 | <dolio> | Wow, that's hard to believe. |
2021-04-06 16:36:01 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 16:36:01 +0200 | <haskellstudent> | emmanuel_erc: for frontend i tried miso and i found it pretty quick go get started with and the minified and gzipped js is around 100k minimum. i am currently evaluating reflex so i have no opinion on it yet but the minimum js size turns out around 200k IIRC |
2021-04-06 16:36:36 +0200 | <zzz> | merijn: so in conclusion, be dilligent with your signatures |
2021-04-06 16:37:05 +0200 | <maerwald> | haskellstudent: hasn't ghcjs development basically stalled? |
2021-04-06 16:37:33 +0200 | frozenErebus | (~frozenEre@37.231.244.249) |
2021-04-06 16:37:45 +0200 | <haskellstudent> | maerwald: not at all as far as i can tell? both miso and reflex/obelisk seem to be actively maintained and used in production |
2021-04-06 16:37:59 +0200 | <maerwald> | haskellstudent: those are frameworks |
2021-04-06 16:38:17 +0200 | <emmanuel_erc> | haskellstudent: So which framework is easier to use in your opinion, reflex or miso? |
2021-04-06 16:38:28 +0200 | <merijn> | zzz: Well, the MMR trade-off is: MMR enabled (default): things that look like values behave like values (in terms of compute), which sometimes triggers loud type errors when monomorphising fails. The alternative (MMR disabled) is: it always compiles, but sometimes things that look like values are super expensive in a way that's hard to detect |
2021-04-06 16:38:30 +0200 | <haskellstudent> | maerwald: yes i know but if you are talking about ghcjs that is what you are probably using |
2021-04-06 16:38:50 +0200 | <maerwald> | haskellstudent: I mean only the compiler and it looks stalled |
2021-04-06 16:39:20 +0200 | <haskellstudent> | maerwald: i am assuming that if they are actively used and maintained, ghcjs would at least get bugfixes when needed? |
2021-04-06 16:39:51 +0200 | <maerwald> | https://github.com/ghcjs/ghcjs is this the correct repo? |
2021-04-06 16:40:41 +0200 | <haskellstudent> | emmanuel_erc: thats what im trying to find out, but as i said so far i can only tell you that miso is easier to get started with, and it might have a bit better performance, which may or may not matter to you |
2021-04-06 16:40:47 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection) |
2021-04-06 16:41:19 +0200 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds) |
2021-04-06 16:41:55 +0200 | <maerwald> | latest commit 14 months old doesn't sound like a healthy, well-maintained compiler |
2021-04-06 16:41:58 +0200 | mouseghost | (~draco@87-206-9-185.dynamic.chello.pl) |
2021-04-06 16:41:58 +0200 | mouseghost | (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
2021-04-06 16:41:58 +0200 | mouseghost | (~draco@wikipedia/desperek) |
2021-04-06 16:42:19 +0200 | <zzz> | merijn: got it. thank you for the explanation |
2021-04-06 16:42:24 +0200 | <haskellstudent> | maerwald: new dev activity is on other branches, at least here for example: https://github.com/ghcjs/ghcjs/commits/hkm/nix-ghc-8.10 |
2021-04-06 16:42:37 +0200 | <maerwald> | ah |
2021-04-06 16:43:06 +0200 | <haskellstudent> | maerwald: you are looking at the "stable" branch i guess which will probably only get bugfixes while they work on the next release somewhere else |
2021-04-06 16:43:20 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) |
2021-04-06 16:44:48 +0200 | <haskellstudent> | maerwald: as far as i can tell there is enough production usage of reflex and miso and therefore ghcjs to be reasonably confident that it will be sufficiently well supported for the next years and i would invest in learning and building on it |
2021-04-06 16:47:02 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 16:47:50 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-04-06 16:47:51 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 260 seconds) |
2021-04-06 16:48:06 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) |
2021-04-06 16:50:38 +0200 | <haskellstudent> | maerwald: especially if you ask, what are the alternatives? i briefly tried purescript, the compiler is slow af so not an option. with miso and reflex you can use instant live reload. which i really want to have in my workflow. elm is fast to compile and run but its far too limiting from what i have read. and its they are both not haskell obviously which means no code sharing which means wasted time. i have not looked closely at |
2021-04-06 16:50:38 +0200 | <haskellstudent> | rust wasm but since i prefer haskell in general it would be ideal ofc if using haskell everywhere works well. and according to obsidian systems at least it works very well, so i am optimistic (also from what i have tried so far). |
2021-04-06 16:51:08 +0200 | <maerwald> | haskellstudent: well, the obvious alternative is typescript |
2021-04-06 16:51:28 +0200 | <merijn> | PureScript seems the more obvious alternative :p |
2021-04-06 16:51:50 +0200 | <maerwald> | too volatile |
2021-04-06 16:51:52 +0200 | <tdammers> | personally, I still find myself going back to just hand-writing javascript |
2021-04-06 16:53:11 +0200 | <merijn> | maerwald: Yes, but your volatility is below channel average :p |
2021-04-06 16:53:22 +0200 | <merijn> | s/volatility/volatility tolerance |
2021-04-06 16:53:27 +0200 | <tdammers> | it's not great, it's not haskell, but it has massive social inertia going for it, it's practically guaranteed to not go anywhere anytime soon, it's maintained, I know it well enough for there to be no nasty surprises, and it offers an absolutely seamless gradation of "fanciness", starting from writing in a <script> tag directly in your HTML template all the way to webpack + nodejs + whatever |
2021-04-06 16:53:42 +0200 | <solvr> | I thought we tried the "alternate JS syntax" thing with CoffeeScript and we agreed it's not worth it |
2021-04-06 16:53:48 +0200 | <solvr> | But I guess bad ideas never die. |
2021-04-06 16:53:49 +0200 | <haskellstudent> | tdammers: as long as the quantity and complexity stays very low interpreted languages can be nice. the moment you exceed that however you get problems in my experience. |
2021-04-06 16:53:50 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2021-04-06 16:54:09 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 16:54:12 +0200 | <tdammers> | haskellstudent: yes, and so the trick is to keep the complexity low, which, with enough discipline, is often possible. |
2021-04-06 16:54:40 +0200 | <tdammers> | you have to draw very clear boundaries in order to keep things contained, and be religiously about documenting and respecting those boundaries, but it is doable |
2021-04-06 16:54:51 +0200 | <haskellstudent> | solvr: coffeescript is pointless, its just another syntax. it does not give you a type system, which would be the crucial difference. |
2021-04-06 16:55:00 +0200 | <maerwald> | aha! I figured out a minimal example that breaks lazy bytestring GC/streaming: https://paste.tomsmeding.com/o1aCZ5wk |
2021-04-06 16:55:12 +0200 | <solvr> | haskellstudent, I agree |
2021-04-06 16:55:34 +0200 | <solvr> | haskell_1, I use TS but TS crucially minimizes non-standard syntax, and offers types. |
2021-04-06 16:55:34 +0200 | <tdammers> | of course "enough discipline" isn't something you can get in the kind of team that would typically write JS, so there's that |
2021-04-06 16:55:38 +0200 | <maerwald> | I guess this is what happens in `tar` too |
2021-04-06 16:55:42 +0200 | <haskellstudent> | tdammers: but why do that if you can do that AND have a good type system to help you reduce defects (and thus save time) even more? i mean thas why i am using haskell in the first place |
2021-04-06 16:56:00 +0200 | <tdammers> | haskellstudent: because all that type stuff comes with a harsh penalty in practice |
2021-04-06 16:56:03 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-04-06 16:56:09 +0200 | <tdammers> | the language itself is just a small part of the equation |
2021-04-06 16:56:15 +0200 | <emmanuel_erc> | So I'm just trying out miso right now. |
2021-04-06 16:56:20 +0200 | <haskellstudent> | tdammers: and i think there is also a lot of potential to increase productivity and decrease complexity if you can leverage code sharing |
2021-04-06 16:56:22 +0200 | <emmanuel_erc> | Installation was super easy |
2021-04-06 16:56:32 +0200 | <haskellstudent> | tdammers: what penalty? |
2021-04-06 16:56:35 +0200 | <emmanuel_erc> | and much faster than reflex |
2021-04-06 16:56:35 +0200 | <solvr> | tdammers depends on the type system and the community around it |
2021-04-06 16:56:43 +0200 | <tomsmeding> | maerwald: that's unfortunate |
2021-04-06 16:56:57 +0200 | <haskellstudent> | tdammers: except for having to spend some time learning new things? |
2021-04-06 16:57:15 +0200 | <tdammers> | haskellstudent: compile times. library ecosystem. additional accidental complexity introduced by the compiler. longer turnaround times. potentially buggy compilers. more moving parts to your build system. |
2021-04-06 16:57:48 +0200 | <haskellstudent> | tdammers: like i said earlier, i have instant love reloading working with both miso and reflex |
2021-04-06 16:57:52 +0200 | <tdammers> | fun story: we had a fairly decent purescript codebase at one job, things were humming along smoothly, until someone asked for a slippy map |
2021-04-06 16:58:03 +0200 | <haskellstudent> | and i mean instant. on a old cpu. |
2021-04-06 16:58:06 +0200 | <fresheyeball> | haskellstudent: shameless plug http://shpadoinkle.org/docs/index.html |
2021-04-06 16:58:13 +0200 | <fresheyeball> | my alternative to Reflex and Miso |
2021-04-06 16:58:19 +0200 | <merijn> | haskellstudent: For small stuff, maybe :) |
2021-04-06 16:58:23 +0200 | <Uniaika> | fresheyeball: hehe |
2021-04-06 16:58:26 +0200 | <fresheyeball> | Faster than Reflex, without the boilerplate of Elm |
2021-04-06 16:58:28 +0200 | <merijn> | haskellstudent: GHC isn't super fast, sadly |
2021-04-06 16:58:39 +0200 | <merijn> | haskellstudent: I highly doubt ghcjs is faster |
2021-04-06 16:58:50 +0200 | <maerwald> | rust isn't fast either |
2021-04-06 16:58:54 +0200 | <maerwald> | Go is |
2021-04-06 16:59:04 +0200 | <fresheyeball> | maerwald: you mean compile times? |
2021-04-06 16:59:05 +0200 | <merijn> | maerwald: Yeah, but Go is shite :p |
2021-04-06 16:59:06 +0200 | <Uniaika> | compiler speed or executable speed? |
2021-04-06 16:59:11 +0200 | <maerwald> | compiler speed |
2021-04-06 16:59:14 +0200 | <Uniaika> | yes |
2021-04-06 16:59:18 +0200 | <Uniaika> | you're indeed right |
2021-04-06 16:59:30 +0200 | <maerwald> | developing Go is awesome, if you can bear the language |
2021-04-06 16:59:31 +0200 | <haskellstudent> | merijn: so far i could at least always see any compiler errors within 1s or so using halive |
2021-04-06 16:59:39 +0200 | <fresheyeball> | yes yes, compilers that don't help the engineer go super fast by not helping |
2021-04-06 16:59:44 +0200 | <haskellstudent> | gotta go now, see you later |
2021-04-06 16:59:46 +0200 | <tdammers> | now, in a JS project, I could have just dropped leaflet into my dependencies, and whip up a map to show anywhere on any page with maybe a dozen lines of code. not elegant, but works as advertised. for purescript, I looked into the options, and concluded that I had two of them: create my own slippy map library in native purescript, or make a purescript wrapper for leaflet |
2021-04-06 17:00:09 +0200 | <Uniaika> | fresheyeball: actually I think codegen has also been somewhat sacrificed for compiler speed |
2021-04-06 17:00:14 +0200 | <maerwald> | tdammers: and both of them expensive engineering tasks |
2021-04-06 17:00:17 +0200 | <tdammers> | I picked option 2, but fortunately, the company in question went out of business before I got to do more than superficial work on that |
2021-04-06 17:00:23 +0200 | <fresheyeball> | Uniaika: good point |
2021-04-06 17:00:23 +0200 | <tdammers> | maerwald: exactly. |
2021-04-06 17:00:25 +0200 | <maerwald> | heh |
2021-04-06 17:00:47 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) |
2021-04-06 17:00:48 +0200 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9469:29ae:2372:7bd6) |
2021-04-06 17:00:50 +0200 | <maerwald> | that reminds me when I was working on an event sourced haskell codebase... |
2021-04-06 17:00:53 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection) |
2021-04-06 17:01:13 +0200 | <maerwald> | tdammers: which relied heavily on ixset-typed :) |
2021-04-06 17:01:25 +0200 | <maerwald> | (we even forked it) |
2021-04-06 17:01:35 +0200 | <maerwald> | none of those were business domain problems |
2021-04-06 17:01:37 +0200 | <tdammers> | I mean, yes, an idiomatic slippy map in purescript would be a hell of a lot more elegant than leaflet. but leaflet has the whopping advantage of existing. |
2021-04-06 17:01:53 +0200 | _d0t | (void@gateway/vpn/mullvad/d0t/x-89419360) |
2021-04-06 17:01:56 +0200 | <merijn> | maerwald: I blame acid-state for false advertising, popularising ixset |
2021-04-06 17:01:58 +0200 | bitmapper | (uid464869@gateway/web/irccloud.com/x-fmeoowlskniejelz) |
2021-04-06 17:02:23 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2021-04-06 17:02:31 +0200 | <tdammers> | 90% of all problems in "haskell in industry" code are the fault of acid-state. or servant. |
2021-04-06 17:02:35 +0200 | tdammers | runs away |
2021-04-06 17:02:44 +0200 | <merijn> | tdammers: Probably true |
2021-04-06 17:03:16 +0200 | <maerwald> | most of the engineering hours went into either debugging performance issues or buying more ram or into solving problems that don't exist in actual database systems |
2021-04-06 17:03:43 +0200 | <merijn> | Most people excited about acid-state should really just want SQLite |
2021-04-06 17:03:47 +0200 | <maerwald> | because someone in the beginning thought: hey, it might be cool if we... |
2021-04-06 17:04:11 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) (Ping timeout: 240 seconds) |
2021-04-06 17:04:28 +0200 | <maerwald> | and like always... the guy didn't stay long enough to see all of the fallout of their decisions :) |
2021-04-06 17:04:38 +0200 | ddellaco_ | (~ddellacos@ool-44c73afa.dyn.optonline.net) |
2021-04-06 17:04:56 +0200 | <_d0t> | ohai! I'm getting HLS to segfault on my project. How do I even begin with debugging it? 0_o |
2021-04-06 17:04:59 +0200 | <tdammers> | merijn: IMO, anyone who isn't using postgresql and cannot explain in under 100 words why not should be using postgresql |
2021-04-06 17:05:24 +0200 | <merijn> | tdammers: "managing a server is a hassle" :p |
2021-04-06 17:05:28 +0200 | <maerwald> | tdammers: "event sourcing is cooler"? |
2021-04-06 17:05:43 +0200 | <maerwald> | (tbf, you can bolt it onto a postgresql database anyway) |
2021-04-06 17:05:45 +0200 | <shapr> | _d0t: did you install from ghcup? |
2021-04-06 17:05:47 +0200 | <tdammers> | apt install postgres; createdb whatever; psql whatever # there, you just "managed a server" |
2021-04-06 17:05:55 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 17:06:00 +0200 | <_d0t> | shapr: nope. I tried both nixos version and the last git build. |
2021-04-06 17:06:03 +0200 | <merijn> | tdammers: That requires me to have a machine |
2021-04-06 17:06:06 +0200 | <shapr> | _d0t: also, you could ask on the #haskell-language-server IRC channel, sometimes it's more active |
2021-04-06 17:06:11 +0200 | malumore | (~malumore@151.62.116.133) (Ping timeout: 268 seconds) |
2021-04-06 17:06:14 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 17:06:21 +0200 | <_d0t> | ah didn't know it was a thing |
2021-04-06 17:06:22 +0200 | <merijn> | tdammers: I can run SQLite anywere :p |
2021-04-06 17:06:23 +0200 | <shapr> | _d0t: you get the same segfault from both? that sounds like a bug to me |
2021-04-06 17:06:36 +0200 | <_d0t> | shapr: dunno about the "same", but both do segfault |
2021-04-06 17:06:47 +0200 | <tdammers> | merijn: "I have to run on a machine where I can't install anything" would be a valid excuse, I guess |
2021-04-06 17:07:02 +0200 | <shapr> | _d0t: do you get a segfault from any project? |
2021-04-06 17:07:13 +0200 | <_d0t> | shapr: doesn't seem so |
2021-04-06 17:07:23 +0200 | <_d0t> | shapr: but it seems restricted to only ghc 8.6.5 |
2021-04-06 17:07:25 +0200 | <merijn> | tdammers: How about: "I wanna treat my database as an application file format" and "I want to easily archive, share, and distribute my database"? :p |
2021-04-06 17:07:45 +0200 | <shapr> | _d0t: are you able to try a later version? perhaps 8.10.4 ? |
2021-04-06 17:07:58 +0200 | <tdammers> | merijn: those would work too. |
2021-04-06 17:08:01 +0200 | <_d0t> | shapr: not with this project. But I tried with another one and it worked. |
2021-04-06 17:08:08 +0200 | <shapr> | I don't remember whether HLS 1.0 supports 8.6.5 |
2021-04-06 17:08:10 +0200 | <tdammers> | though one could arguably share psql-dumps |
2021-04-06 17:08:11 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) (Ping timeout: 240 seconds) |
2021-04-06 17:08:16 +0200 | <_d0t> | shapr: it does |
2021-04-06 17:08:19 +0200 | <shapr> | oh good |
2021-04-06 17:08:34 +0200 | <_d0t> | in fact, it's the oldest supported version rn |
2021-04-06 17:08:35 +0200 | <tdammers> | but yeah, if you want to use it as an application file format, then that's smack in the middle of sqlite's design space |
2021-04-06 17:09:02 +0200 | <infinisil> | Is there a good `Arbitrary Value` somewhere? Where Value is from aeson |
2021-04-06 17:09:05 +0200 | <shapr> | _d0t: did you generate your own hie.yaml ? |
2021-04-06 17:09:13 +0200 | <merijn> | tdammers: My flowchart is usually: "I need a database" -> 'Will SQLite work? If yes, then SQLite. If no, then are you sure?' -> "Yes, I'm sure" -> 'Ok, use postgres' :p |
2021-04-06 17:09:25 +0200 | <_d0t> | shapr: yup |
2021-04-06 17:09:47 +0200 | <shapr> | _d0t: if you're using hls 1.0 does it work without a generated hie.yaml ? |
2021-04-06 17:10:04 +0200 | <_d0t> | shapr: lemme check |
2021-04-06 17:10:04 +0200 | <shapr> | that is, does the implicit cradle succeed? |
2021-04-06 17:10:06 +0200 | <maerwald> | merijn: I had to migrate at least once from sqlite to postgresql, so I start with postgresql too |
2021-04-06 17:10:15 +0200 | <tdammers> | merijn: same for me, except the other way around. |
2021-04-06 17:10:23 +0200 | <maerwald> | even if it's not the optimal decision, it's not a problem |
2021-04-06 17:10:42 +0200 | <tdammers> | maerwald: the key is to realize that you need to up your game early, when switching DBMS isn't too painful yet |
2021-04-06 17:10:47 +0200 | <merijn> | maerwald, tdammers: Maybe I would too in a company setting where we had servers anyway |
2021-04-06 17:11:08 +0200 | <tdammers> | and yeah, if "having a server" is an issue, then I can totally understand your choice |
2021-04-06 17:11:14 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
2021-04-06 17:11:17 +0200 | <merijn> | But for my personal code that's generally "application running on one machine, not networked" SQLite is a much more sensible default |
2021-04-06 17:11:18 +0200 | <tdammers> | for me, "database is locked" is more of a show stopper |
2021-04-06 17:11:38 +0200 | <tdammers> | most of my stuff is networked in some way anyway |
2021-04-06 17:11:49 +0200 | <merijn> | And the ability to just SCP a file from my laptop to a remote server/etc. is a feature |
2021-04-06 17:12:40 +0200 | <infinisil> | Oh, found the answer myself, there's an Arbitrary Value in aeson itself: https://github.com/haskell/aeson/blob/master/tests/Instances.hs#L170 |
2021-04-06 17:12:50 +0200 | Deide | (~Deide@217.155.19.23) |
2021-04-06 17:12:57 +0200 | <maerwald> | I could see using sqlite in desktop apps or other tools. It's cheap, why store config etc in files? |
2021-04-06 17:13:08 +0200 | <maerwald> | but for backend I don't find it too appealing |
2021-04-06 17:13:14 +0200 | <merijn> | maerwald: Right, that's the sorta thing I'm thinking |
2021-04-06 17:13:34 +0200 | <merijn> | maerwald: But even for backend stuff it'd be better than acid-state :p |
2021-04-06 17:14:03 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) |
2021-04-06 17:14:30 +0200 | <shapr> | _d0t: my hope is that the hie.yaml is confusing hls, but it still shouldn't segfault |
2021-04-06 17:14:31 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) |
2021-04-06 17:14:32 +0200 | <_d0t> | shapr: it started, but then it began running the build via cabal+nix, and I'm not gonna wait for that |
2021-04-06 17:14:42 +0200 | <shapr> | _d0t: you may have to |
2021-04-06 17:14:51 +0200 | <shapr> | I mean |
2021-04-06 17:15:02 +0200 | <shapr> | If you haven't already built the project, hls will do that for you |
2021-04-06 17:15:05 +0200 | <_d0t> | shapr: not sure it's a good idea. It's gonna take quite a while. Is it possible to force hls to use stack? |
2021-04-06 17:15:18 +0200 | <shapr> | I don't know, sorry |
2021-04-06 17:15:37 +0200 | <shapr> | At work we use stack without nix for building, hls is okay with that |
2021-04-06 17:15:46 +0200 | <shapr> | at home I use cabal+nix |
2021-04-06 17:15:57 +0200 | <_d0t> | shapr: yeah, I do this to. But here without hie.yaml hls reverts to cabal. |
2021-04-06 17:16:09 +0200 | <shapr> | that's surprising |
2021-04-06 17:16:26 +0200 | <shapr> | oh wait, at work I've always generated my own hie.yaml |
2021-04-06 17:16:36 +0200 | <_d0t> | and now it tries to build ghc from source |
2021-04-06 17:16:41 +0200 | <_d0t> | nope, definitely not going this way |
2021-04-06 17:16:42 +0200 | <shapr> | and at home I never do, and I always use cabal+nix at home |
2021-04-06 17:16:45 +0200 | rj | (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
2021-04-06 17:16:46 +0200 | <shapr> | _d0t: ok that's bad |
2021-04-06 17:17:11 +0200 | <shapr> | _d0t: I'd suggest reporting a bug on github or joining #haskell-language-server and asking one of the devs |
2021-04-06 17:17:15 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds) |
2021-04-06 17:17:16 +0200 | <_d0t> | ok |
2021-04-06 17:17:20 +0200 | <shapr> | I'm just an excited user :-) |
2021-04-06 17:17:21 +0200 | <_d0t> | thanks! |
2021-04-06 17:18:04 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 17:18:04 +0200 | <tdammers> | merijn: re scp, if you can have postgresql databases on both ends, with unix auth, then it's almost as easy: psql-dump thedatabase | ssh theserver psql thedatabase |
2021-04-06 17:18:25 +0200 | <merijn> | tdammers: Now I have to manage *double* the number of servers! |
2021-04-06 17:18:37 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 252 seconds) |
2021-04-06 17:19:08 +0200 | <tdammers> | well, all my computers basically have postgres clusters running on them anyway, so the overhead is absolutely minimal |
2021-04-06 17:19:18 +0200 | <maerwald> | merijn: hire a nix engineer, they'll do it for you |
2021-04-06 17:19:42 +0200 | <tdammers> | but my use cases are different. I need multiple concurrent connections pretty much from day 1 in most projects |
2021-04-06 17:21:07 +0200 | rj | (~x@gateway/tor-sasl/rj) |
2021-04-06 17:21:19 +0200 | raym | (~ray@115.187.32.14) (Quit: leaving) |
2021-04-06 17:22:22 +0200 | <merijn> | maerwald: I can't even afford to work on my own stuff, let alone pay someone for it :p |
2021-04-06 17:22:42 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-04-06 17:22:43 +0200 | steerio | (~steerio@aviv.kinneret.de) (Quit: leaving) |
2021-04-06 17:22:55 +0200 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-04-06 17:24:02 +0200 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-04-06 17:24:55 +0200 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-04-06 17:26:02 +0200 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-04-06 17:31:15 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-04-06 17:31:44 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
2021-04-06 17:33:24 +0200 | ulidtko | (~ulidtko@194.54.80.38) |
2021-04-06 17:39:10 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 17:41:11 +0200 | dcoutts | (~duncan@94.186.125.91.dyn.plus.net) (Ping timeout: 240 seconds) |
2021-04-06 17:41:50 +0200 | mettekou | (~mettekou@d8D875214.access.telenet.be) (Quit: Leaving) |
2021-04-06 17:44:11 +0200 | z0 | (~zzz@2001:8a0:de1b:9601:85ea:cf54:e2e4:7d25) |
2021-04-06 17:44:28 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 17:44:40 +0200 | hiptobecubic | (~john@unaffiliated/hiptobecubic) |
2021-04-06 17:48:04 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) |
2021-04-06 17:48:12 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) |
2021-04-06 17:49:18 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) |
2021-04-06 17:49:27 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 17:50:01 +0200 | alx741 | (~alx741@181.196.68.238) (Ping timeout: 260 seconds) |
2021-04-06 17:52:12 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 246 seconds) |
2021-04-06 17:53:10 +0200 | Wuzzy | (~Wuzzy@p5790e46d.dip0.t-ipconnect.de) |
2021-04-06 17:55:44 +0200 | ukari | (~ukari@unaffiliated/ukari) |
2021-04-06 17:56:30 +0200 | hypercube | (hypercube@gateway/vpn/protonvpn/hypercube) |
2021-04-06 17:57:46 +0200 | gtk | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-04-06 17:58:00 +0200 | zyklotomic | (~ethan@unaffiliated/chocopuff) |
2021-04-06 17:58:20 +0200 | z0 | (~zzz@2001:8a0:de1b:9601:85ea:cf54:e2e4:7d25) (Quit: z0) |
2021-04-06 17:58:54 +0200 | <dmj`> | maerwald: nix engineer is a thing now? |
2021-04-06 17:59:08 +0200 | <maerwald> | dmj`: sure |
2021-04-06 18:00:01 +0200 | <monochrom> | I would s/engineer/admin/ but it is a millenial trend to call every position "engineer". |
2021-04-06 18:00:31 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
2021-04-06 18:00:36 +0200 | <aldum> | imo better than the gen X trend of calling every position a manager |
2021-04-06 18:00:46 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) (Ping timeout: 240 seconds) |
2021-04-06 18:01:02 +0200 | <aldum> | or at least not worse |
2021-04-06 18:01:42 +0200 | <dmj`> | bash engineer |
2021-04-06 18:02:11 +0200 | gtk | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
2021-04-06 18:02:17 +0200 | <monochrom> | If you answer emails for an elected politician you can be called "legislator's social media engineer" |
2021-04-06 18:03:13 +0200 | <monochrom> | If you were a spin doctor for said politician, you are now a spin engineer. |
2021-04-06 18:03:15 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-04-06 18:03:31 +0200 | <aldum> | spin epidemiologist these days :V |
2021-04-06 18:03:41 +0200 | <maerwald> | is this supposed to "leak" 1GB? https://paste.tomsmeding.com/WbAcQ3rq |
2021-04-06 18:03:51 +0200 | ToastInTheMachin | (~ToastInTh@172.93.177.196) |
2021-04-06 18:04:05 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 252 seconds) |
2021-04-06 18:04:49 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 18:05:42 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) |
2021-04-06 18:06:39 +0200 | ToastInTheMachin | (~ToastInTh@172.93.177.196) (Read error: Connection reset by peer) |
2021-04-06 18:07:19 +0200 | <dmj`> | maerwald: yes |
2021-04-06 18:07:32 +0200 | <dmj`> | maerwald: you're not incrementally processing the list |
2021-04-06 18:07:46 +0200 | <dmj`> | maerwald: the sink is your writeFile, but you're keeping the list in memory with null check |
2021-04-06 18:08:01 +0200 | <maerwald> | dmj`: but there's no chunk overlap |
2021-04-06 18:08:40 +0200 | <dmj`> | maerwald: it's still a list, it's same problem with avg xs = sum xs / fromIntegral (length xs) |
2021-04-06 18:08:56 +0200 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-04-06 18:09:00 +0200 | <dmj`> | the second you have to take two passes on a list, you're can't incrementally process it |
2021-04-06 18:09:21 +0200 | <dmj`> | you* |
2021-04-06 18:09:22 +0200 | Rudd0 | (~Rudd0@185.189.115.108) |
2021-04-06 18:09:42 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2021-04-06 18:09:59 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-04-06 18:10:02 +0200 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-04-06 18:10:35 +0200 | <maerwald> | is there a way to make this work with bytestring only? |
2021-04-06 18:11:00 +0200 | <tomsmeding> | maerwald: let's apply fusion terminologies to this; to remove the sharing in that code, you need vertical fusion to merge the 'take' and 'writeFile' loops over the buffer into, say, loop 1, and again vertical fusion to merge the 'drop' and 'null' loops into loop 2; then you can use horizontal fusion to merge loop 1 and loop 2 into a single loop. At this point there is only one consumer, which can |
2021-04-06 18:11:00 +0200 | <tomsmeding> | then merge using vertical fusion with 'readFile' to produce constant memory usage |
2021-04-06 18:11:17 +0200 | <tomsmeding> | I suspect that the horizontal fusion is the thing that's not being performed because there's explicit monadic sequencing between the writeFile and the null |
2021-04-06 18:11:17 +0200 | <shapr> | I want to be a nix engineer! |
2021-04-06 18:11:33 +0200 | fendor_ | (~fendor@91.141.3.10.wireless.dyn.drei.com) |
2021-04-06 18:12:13 +0200 | <tomsmeding> | intuition for vertical vs horizontal fusion: make a data flow graph of your code where nodes are operations (take/drop/writeFile etc), and arrows generally point downwards |
2021-04-06 18:12:51 +0200 | <tomsmeding> | vertical fusion is merging two directly vertically connected nodes into one; horizontal mutatus mutandis |
2021-04-06 18:12:55 +0200 | <tomsmeding> | *mutatis |
2021-04-06 18:13:26 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 18:13:46 +0200 | fendor | (~fendor@91.141.0.13.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
2021-04-06 18:14:01 +0200 | gitgood | (~gitgood@80-44-12-39.dynamic.dsl.as9105.com) |
2021-04-06 18:15:49 +0200 | <tomsmeding> | in fact, in dmj` 's avg example, it's again horizontal fusion of the 'sum' and 'length' loops that could make it constant-memory; not sure if ghc does that, but there are other compilers for other languages that do |
2021-04-06 18:16:21 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-04-06 18:17:17 +0200 | <dmj`> | streaming is about keeping a predictable amount of bytes in memory at any given time, laziness does this for you, for free, but it only works if nobody else is sharing your thunk, the second someone else shares it, you just accumulate in memory instead of incrementally processing |
2021-04-06 18:17:51 +0200 | <dmj`> | sum and length both share `xs`, sum can't process it incrementally, because length is demanding it |
2021-04-06 18:18:08 +0200 | <dmj`> | it's the same with writeFile and null in maerwald's example |
2021-04-06 18:18:13 +0200 | <maerwald> | is there an unsafe way to work around it? |
2021-04-06 18:18:47 +0200 | <tomsmeding> | dmj`: indeed, unless the compiler can see the definitions of 'sum' and 'length' and fuse their loops together into one pass over the list; again I don't know if ghc does this, but it's theoretically possible |
2021-04-06 18:19:01 +0200 | <dmj`> | tomsmeding: I haven't been able to get ghc to do horizontal fusion of sum and length, code had to become uncurry (/) $ foldl' (\(x,y) n -> (x + n, y + 1)) (0,0) xs |
2021-04-06 18:19:13 +0200 | <tomsmeding> | maerwald: wild guess: does it help if you use BSL.splitAt instead of take/drop? Small chance |
2021-04-06 18:19:24 +0200 | Sornaensis | (~Sornaensi@077213203030.dynamic.telenor.dk) |
2021-04-06 18:19:42 +0200 | <tomsmeding> | dmj`: yeah there you manually performed horizontal fusion :) Too bad about ghc |
2021-04-06 18:19:48 +0200 | <dmj`> | tomsmeding: GHCs optimizer won't do that I believe, and vector fusion relies on rewrite rules that don't always fire |
2021-04-06 18:19:50 +0200 | <tomsmeding> | it's very difficult to do in general though |
2021-04-06 18:19:52 +0200 | notzmv | (~zmv@unaffiliated/zmv) (Ping timeout: 265 seconds) |
2021-04-06 18:19:55 +0200 | <maerwald> | tomsmeding: I thought that too, but no, splitAt can't do it |
2021-04-06 18:20:01 +0200 | <tomsmeding> | sad |
2021-04-06 18:20:38 +0200 | <dmj`> | tomsmeding: GHC only optimizes across a single module at a time as well (blind JMP problem), those functions are defined in a different module, GHC would need to have the entire program in memory to do that. |
2021-04-06 18:20:47 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 18:21:03 +0200 | <dmj`> | maerwald: delete the "rest" and the "null" |
2021-04-06 18:21:10 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2021-04-06 18:21:31 +0200 | <maerwald> | dmj`: this is a minimal example... can't be done in the real code |
2021-04-06 18:21:54 +0200 | <maerwald> | there, rest is part of an unfoldr |
2021-04-06 18:22:15 +0200 | <maerwald> | and at every step it will leak `content` |
2021-04-06 18:22:21 +0200 | <tomsmeding> | dmj`: surely sum and length are inlined in ghc :p |
2021-04-06 18:22:53 +0200 | <maerwald> | I think it's time to get a drink and be sad |
2021-04-06 18:23:00 +0200 | <tomsmeding> | dmj`: 1. that's what {-# INLINE abc #-} is for, and 2. ghc does that for small functions anyway |
2021-04-06 18:23:31 +0200 | Sorny | (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 260 seconds) |
2021-04-06 18:23:44 +0200 | <tomsmeding> | maerwald: if bytestring had offered a read function that only reads a prefix of a file (i.e. 1GB), then you could split the readFile in two; that would work |
2021-04-06 18:23:51 +0200 | <tomsmeding> | but that probably doesn't work in the full tar case either |
2021-04-06 18:24:44 +0200 | <maerwald> | I'll just rewrite that logic with streamly |
2021-04-06 18:24:58 +0200 | Sorna | (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) |
2021-04-06 18:25:24 +0200 | <tomsmeding> | yeah making the bytestring _explicitly_ streaming instead of only implicitly via laziness is probably the way out |
2021-04-06 18:25:45 +0200 | <maerwald> | and streamly interacts well with bytestring, so it can be done incrementally |
2021-04-06 18:26:07 +0200 | <dmj`> | tomsmeding: main = do { [n] <- fmap read <$> getArgs; let xs = [1..n]; print (sum xs / fromIntegral (length xs)) } |
2021-04-06 18:26:12 +0200 | <dmj`> | tomsmeding: that will OOM your process for large n |
2021-04-06 18:26:45 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-04-06 18:27:09 +0200 | <dmj`> | tomsmeding: I don't think inlining can save you here |
2021-04-06 18:27:26 +0200 | Sornaensis | (~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 240 seconds) |
2021-04-06 18:28:47 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-04-06 18:29:04 +0200 | <dmj`> | tomsmeding: running with +RTS -s -RTS will be like 0% productivity |
2021-04-06 18:30:41 +0200 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Quit 啾) |
2021-04-06 18:31:21 +0200 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) |
2021-04-06 18:32:46 +0200 | alx741 | (~alx741@181.196.68.238) |
2021-04-06 18:33:41 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 18:34:38 +0200 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) (Client Quit) |
2021-04-06 18:35:43 +0200 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) |
2021-04-06 18:37:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 18:37:41 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 240 seconds) |
2021-04-06 18:37:50 +0200 | geekosaur | (82650c7a@130.101.12.122) |
2021-04-06 18:38:51 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 18:39:08 +0200 | <tomsmeding> | dmj`: inlining + horizontal fusion can fix that because it yields the same as your handwritten foldr |
2021-04-06 18:39:08 +0200 | howdoi | (uid224@gateway/web/irccloud.com/x-unpvrllwptrnqqhb) |
2021-04-06 18:39:30 +0200 | <tomsmeding> | ghc does the inlining but not the hor. fusion |
2021-04-06 18:41:19 +0200 | qqqq3 | (3e1d4450@62.29.68.80) |
2021-04-06 18:42:39 +0200 | zyklotomic | (~ethan@unaffiliated/chocopuff) (Remote host closed the connection) |
2021-04-06 18:42:41 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2021-04-06 18:43:05 +0200 | zyklotomic | (~ethan@66.154.104.2) |
2021-04-06 18:43:42 +0200 | <qqqq3> | Hello everyone, im faced with this error https://paste.tomsmeding.com/siTshGL1. Can someone explain this to me ? |
2021-04-06 18:44:24 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 18:45:09 +0200 | xourt | (d4c620ea@212-198-32-234.rev.numericable.fr) (Quit: Connection closed) |
2021-04-06 18:45:34 +0200 | <geekosaur> | what were you expecting (xs "-") to do? |
2021-04-06 18:46:09 +0200 | <geekosaur> | it's complaining because it expects xs to be a function, since it's applied to a string argument, but it's not |
2021-04-06 18:46:37 +0200 | <qqqq3> | how can i spesify my input to be char? |
2021-04-06 18:47:45 +0200 | <dcbdan> | '-' is a Char, "-" == ['-'] is a String |
2021-04-06 18:48:21 +0200 | <qqqq3> | so if i do a function like this test 'x' = x |
2021-04-06 18:48:29 +0200 | <qqqq3> | would the test function only expect chars ? |
2021-04-06 18:49:13 +0200 | <joel135> | :t \x -> 'x' == x |
2021-04-06 18:49:14 +0200 | <lambdabot> | Char -> Bool |
2021-04-06 18:49:25 +0200 | <geekosaur> | yes |
2021-04-06 18:49:37 +0200 | <qqqq3> | Thanks everyone |
2021-04-06 18:50:06 +0200 | zaquest | (~notzaques@5.128.210.178) (Read error: Connection reset by peer) |
2021-04-06 18:50:34 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-04-06 18:51:40 +0200 | <fresheyeball> | error, called at compiler/utils/Maybes.hs:55:27 in ghc:Maybes |
2021-04-06 18:51:42 +0200 | <fresheyeball> | expectJust, called at compiler/ghci/Linker.hs:719:28 in ghc:Linker |
2021-04-06 18:51:45 +0200 | <fresheyeball> | how can I begin debugging this? |
2021-04-06 18:51:50 +0200 | <fresheyeball> | I have no idea how to begin |
2021-04-06 18:51:59 +0200 | <fresheyeball> | I think this is an issue with backpack and TH |
2021-04-06 18:54:47 +0200 | ericsagn1 | (~ericsagne@2405:6580:0:5100:3c1:b586:27b7:7153) (Ping timeout: 260 seconds) |
2021-04-06 18:55:24 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) |
2021-04-06 18:55:44 +0200 | cafce25 | (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-04-06 18:55:54 +0200 | <dcbdan> | I don't know. Could it be that a Nothing is being passed in incorrectly? |
2021-04-06 18:56:09 +0200 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-gwsdixqwmnlinkah) |
2021-04-06 18:56:37 +0200 | <geekosaur> | that error is buried somewhere inside of ghc itself |
2021-04-06 18:56:43 +0200 | haskellstudent | (~quassel@213-225-9-45.nat.highway.a1.net) |
2021-04-06 18:59:40 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-04-06 19:00:29 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2021-04-06 19:01:00 +0200 | aerona | (~aerona@2600:6c54:4600:f300:17d9:d4ff:325b:67dc) |
2021-04-06 19:01:09 +0200 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-04-06 19:02:29 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-04-06 19:04:31 +0200 | Enrico63 | (520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) |
2021-04-06 19:04:43 +0200 | mupf | (~micha@v22017094964653601.ultrasrv.de) (Quit: WeeChat 3.0) |
2021-04-06 19:05:11 +0200 | <Enrico63> | Hello there, can anybody help me get started with http://mightybyte.github.io/monad-challenges/ |
2021-04-06 19:05:12 +0200 | <Enrico63> | ? |
2021-04-06 19:05:15 +0200 | mupf | (~micha@v22017094964653601.ultrasrv.de) |
2021-04-06 19:05:18 +0200 | qqqq3 | (3e1d4450@62.29.68.80) (Quit: Connection closed) |
2021-04-06 19:05:26 +0200 | <fresheyeball> | Enrico63: what do you need help with? |
2021-04-06 19:06:17 +0200 | <Enrico63> | I've posted a message on the github page: https://github.com/mightybyte/monad-challenges/issues/81 . In short, when I do `ghci Set1.hs` I get the error `ghc: unexpected RTS argument: Set1.hs` |
2021-04-06 19:06:21 +0200 | notzmv | (~zmv@unaffiliated/zmv) |
2021-04-06 19:07:48 +0200 | <Enrico63> | fresheyeball, I have to mention that following the instruction I run `cabal install` in the directory of the repo. Then when I found that issue on the github page, I also run `cabal install --package-env /PATH_TO_YOUR_FOLDER --lib` (with `/PATH_TO_YOUR_FOLDER` changed to `$PWD`, and I was in the repo's dir). |
2021-04-06 19:07:54 +0200 | ericsagn1 | (~ericsagne@2405:6580:0:5100:a729:cf9f:aaab:a664) |
2021-04-06 19:08:45 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) |
2021-04-06 19:09:38 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 19:09:46 +0200 | solvr | (57e3c46d@87.227.196.109) (Quit: Connection closed) |
2021-04-06 19:10:13 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-04-06 19:10:29 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 19:10:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-04-06 19:12:11 +0200 | molehillish | (~molehilli@ip98-165-87-166.ph.ph.cox.net) |
2021-04-06 19:12:16 +0200 | molehillish | (~molehilli@ip98-165-87-166.ph.ph.cox.net) (Client Quit) |
2021-04-06 19:12:27 +0200 | <joel135> | https://hoogle.haskell.org/?hoogle=Application |
2021-04-06 19:12:56 +0200 | <joel135> | There are no parentheses in the second entry! "type Application = Request -> Response -> IO ResponseReceived -> IO ResponseReceived" |
2021-04-06 19:14:33 +0200 | <monochrom> | Are they even remotely related? |
2021-04-06 19:14:51 +0200 | <geekosaur> | the parentheses are in the originals, if you click through |
2021-04-06 19:15:01 +0200 | <joel135> | yes they are there when i click |
2021-04-06 19:15:11 +0200 | <Enrico63> | Hello there, can anybody help me get started with http://mightybyte.github.io/monad-challenges/ ? I've posted a message on the github page: https://github.com/mightybyte/monad-challenges/issues/81 . In short, when I do `ghci Set1.hs` I get the error `ghc: unexpected RTS argument: Set1.hs`. I have to mention that following the instruction I run |
2021-04-06 19:15:11 +0200 | <Enrico63> | `cabal install` in the directory of the repo. Then when I found that issue on the github page, I also run `cabal install --package-env /PATH_TO_YOUR_FOLDER --lib` (with `/PATH_TO_YOUR_FOLDER` changed to `$PWD`, and I was in the repo's dir). |
2021-04-06 19:15:57 +0200 | <geekosaur> | Enrico63, do you have an alias for ghci, perhaps? |
2021-04-06 19:16:38 +0200 | <Enrico63> | Yes, `alias ghci='ghci +RTS -M100M -c30'`. I forgot about that. And I don't even know why I have it :/ |
2021-04-06 19:16:49 +0200 | <Enrico63> | i suppose `command ghci` will be enough..? |
2021-04-06 19:16:59 +0200 | <Enrico63> | yes |
2021-04-06 19:16:59 +0200 | <geekosaur> | yes |
2021-04-06 19:17:04 +0200 | <monochrom> | Well that's easy. ghci='ghci +RTS -M100M -c30 -RTS' |
2021-04-06 19:17:06 +0200 | <geekosaur> | or add '-RTS' to the end of that aliass |
2021-04-06 19:17:32 +0200 | <monochrom> | This is why remote tech support is impossible. |
2021-04-06 19:18:11 +0200 | <Enrico63> | monochrom, what? Forgetting we have some settings/aliases? |
2021-04-06 19:18:17 +0200 | <monochrom> | Yes. |
2021-04-06 19:18:29 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Quit: leaving) |
2021-04-06 19:18:33 +0200 | <Enrico63> | Eh, that happens when we're new to some things, I suppose |
2021-04-06 19:19:12 +0200 | ADG1089 | (~aditya@122.163.139.43) |
2021-04-06 19:19:15 +0200 | solvr | (57e3c46d@87.227.196.109) |
2021-04-06 19:19:23 +0200 | <Enrico63> | If that alias is there, it's for some reason I thought was good, at that time. I vaguely remember ghci using a load of RAM |
2021-04-06 19:19:54 +0200 | <Enrico63> | However, it seems geekosaur makes impossible things, then :D |
2021-04-06 19:19:55 +0200 | Pickchea | (~private@unaffiliated/pickchea) |
2021-04-06 19:20:09 +0200 | <geekosaur> | I'm a sysadmin, I think of such things :) |
2021-04-06 19:20:12 +0200 | HannaM | (~quassel@p54849510.dip0.t-ipconnect.de) |
2021-04-06 19:21:08 +0200 | <Enrico63> | geekosaur, for whatever reason I did put that alias in my config files, appending `-RTS` at the end of it... what does it? |
2021-04-06 19:21:24 +0200 | <monochrom> | "end of the RTS things" |
2021-04-06 19:21:38 +0200 | <geekosaur> | +RTS starts passing parameters directly to ghc's runtime system, -RTS stops |
2021-04-06 19:22:09 +0200 | <geekosaur> | --RTS (with double hyphen) both stops and forces any later +RTS to be passed through to the application, if you need to do that for some reason |
2021-04-06 19:23:06 +0200 | <Enrico63> | oh,ok, so it's just like +RTS and -RTS are opening and closing parenthesis around stuff to be passed to the runtime system (whatever that means) |
2021-04-06 19:24:45 +0200 | <ADG1089> | why don't people check in cabal.project? |
2021-04-06 19:25:10 +0200 | doraemon | (~doraemon@117.222.71.159) |
2021-04-06 19:26:29 +0200 | <tomsmeding> | Enrico63: indeed :) |
2021-04-06 19:27:04 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 19:27:32 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 19:27:40 +0200 | <geekosaur> | Enrico63, you may want to close that issue with an explanation. also you appended to an unrelated issue, you should probably have opened a new one (it's too late now) |
2021-04-06 19:28:13 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 19:28:46 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) |
2021-04-06 19:29:43 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-04-06 19:31:02 +0200 | cub3s_ | (bifunc2@gateway/vpn/protonvpn/bifunc2) |
2021-04-06 19:31:03 +0200 | forell | (~forell@unaffiliated/forell) (Quit: ZNC - https://znc.in) |
2021-04-06 19:31:25 +0200 | aenesidemus | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) |
2021-04-06 19:31:43 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 268 seconds) |
2021-04-06 19:32:14 +0200 | notzmv | (~zmv@unaffiliated/zmv) (Read error: Connection reset by peer) |
2021-04-06 19:32:39 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Ping timeout: 246 seconds) |
2021-04-06 19:32:42 +0200 | Enrico63 | (520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) (Quit: Connection closed) |
2021-04-06 19:32:52 +0200 | forell | (~forell@unaffiliated/forell) |
2021-04-06 19:34:00 +0200 | <cub3s_> | When I publish a Haskell library, I usually put a stack.yaml file in there with a resolver. Should I be doing this? This file is sort of useless because anyone who compiles the library is going to use their own stack.yaml resolver (or Nix file, or just pure cabal) anyway. |
2021-04-06 19:34:11 +0200 | kuribas | (~user@ptr-25vy0i98ky9sotgacau.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-04-06 19:34:30 +0200 | <cub3s_> | well, unless they just want to download my library only, and compile/test it in isolation |
2021-04-06 19:34:47 +0200 | <glguy> | cub3s_: it's not useful for someone depending on your library, but if stack's useful at all it could be useful for someone developing your library |
2021-04-06 19:34:51 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2021-04-06 19:35:09 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-04-06 19:35:16 +0200 | dcoutts | (~duncan@94.186.125.91.dyn.plus.net) |
2021-04-06 19:35:27 +0200 | <glguy> | if you have interesting extra-deps listed, it could serve as a shortcut to updating their own file |
2021-04-06 19:35:28 +0200 | <cub3s_> | glguy, ok now, in a similar way, shouldn't i also include a nix file pinned to a specific nixpkgs commit? (in a similar way that stack.yaml is pinned to specific resolver) |
2021-04-06 19:35:34 +0200 | vicfred | (~vicfred@unaffiliated/vicfred) |
2021-04-06 19:36:05 +0200 | <glguy> | cub3s_: I'd suppose it's just a question of what your other library developers need and what you want to support and actively test |
2021-04-06 19:36:19 +0200 | <glguy> | stale build information doesn't help anyone |
2021-04-06 19:36:48 +0200 | barthandelous | (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Quit: WeeChat 3.1) |
2021-04-06 19:37:17 +0200 | <cub3s_> | yeah |
2021-04-06 19:37:36 +0200 | <cub3s_> | it's starting to make sense to me to have both stack and nix support, as those are the most common |
2021-04-06 19:38:29 +0200 | CaptainIRS | (9d339880@157.51.152.128) (Quit: Connection closed) |
2021-04-06 19:38:43 +0200 | <minoru_shiraeesh> | emmanuel_erc: "Regardless, I'm leaving the current job partially because I think the rewrite is a dumb idea and I don't want to work on a codebase that is going to be thrown out eventually." |
2021-04-06 19:38:51 +0200 | <minoru_shiraeesh> | emmanuel_erc: "They didn't really have an interest in listening to what I had to say about the whole venture." |
2021-04-06 19:39:08 +0200 | <minoru_shiraeesh> | emmanuel_erc: "Given what has happened to me at this last job, it makes me wonder if persuing Haskell has been worth it or will be so." |
2021-04-06 19:39:36 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-04-06 19:39:51 +0200 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-04-06 19:40:18 +0200 | <minoru_shiraeesh> | I see your point and the way you feel, but on the other hand, I recently heard a saying "don't let a love for a language blind you" |
2021-04-06 19:40:19 +0200 | vicfred | (~vicfred@unaffiliated/vicfred) (Client Quit) |
2021-04-06 19:40:27 +0200 | ukari | (~ukari@unaffiliated/ukari) |
2021-04-06 19:41:44 +0200 | <minoru_shiraeesh> | if you take another perspective, the task of rewriting a codebase is an interesting one. |
2021-04-06 19:42:30 +0200 | <monochrom> | How long ago was that conversation? |
2021-04-06 19:42:52 +0200 | <minoru_shiraeesh> | :) it was 3 hours ago |
2021-04-06 19:43:34 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 19:44:46 +0200 | <cub3s_> | yeah rewrite in haskell and get paid for it?! not bad if you otherwise like it and will gain valuable haskell experience. "it'll be thrown out eventually". that's not really the employee's problem, is it? someone else bears the risk. |
2021-04-06 19:45:22 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 19:45:31 +0200 | <geekosaur> | this is rewriting away from haskell, iirc |
2021-04-06 19:45:34 +0200 | <geekosaur> | to typescript |
2021-04-06 19:45:39 +0200 | <cub3s_> | oh, my bad |
2021-04-06 19:46:06 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds) |
2021-04-06 19:46:56 +0200 | zyklotomic | (~ethan@66.154.104.2) (Changing host) |
2021-04-06 19:46:56 +0200 | zyklotomic | (~ethan@unaffiliated/chocopuff) |
2021-04-06 19:48:28 +0200 | zfnmxt_ | zfnmxt |
2021-04-06 19:49:26 +0200 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) |
2021-04-06 19:49:27 +0200 | <minoru_shiraeesh> | hmm, turns out he was in the position of maintaining legacy code that was in the process of being ported to other language |
2021-04-06 19:49:48 +0200 | <minoru_shiraeesh> | then my point about rewriting being an interesting task doesn't apply |
2021-04-06 19:50:19 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
2021-04-06 19:50:25 +0200 | Tops2 | (~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) |
2021-04-06 19:52:11 +0200 | Tops21 | (~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
2021-04-06 19:52:53 +0200 | Ory0n | (~Ory0n@mob-5-91-113-166.net.vodafone.it) |
2021-04-06 19:53:43 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-04-06 19:54:01 +0200 | zyklotomic | (~ethan@unaffiliated/chocopuff) (Quit: WeeChat 3.1) |
2021-04-06 19:54:46 +0200 | zaquest | (~notzaques@5.128.210.178) (Ping timeout: 240 seconds) |
2021-04-06 19:54:56 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 19:55:05 +0200 | mkDoku | (~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 265 seconds) |
2021-04-06 19:55:22 +0200 | geekosaur | (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
2021-04-06 19:55:53 +0200 | Ory0n | (~Ory0n@mob-5-91-113-166.net.vodafone.it) ("Leaving") |
2021-04-06 19:56:46 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Client Quit) |
2021-04-06 20:05:24 +0200 | esp32_prog | (~esp32_pro@91.193.4.202) (Quit: esp32_prog) |
2021-04-06 20:05:41 +0200 | solvr | (57e3c46d@87.227.196.109) (Quit: Connection closed) |
2021-04-06 20:07:04 +0200 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-04-06 20:07:10 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 20:07:52 +0200 | ukari | (~ukari@unaffiliated/ukari) |
2021-04-06 20:08:49 +0200 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-04-06 20:10:20 +0200 | geekosaur | (82650c7a@130.101.12.122) |
2021-04-06 20:12:26 +0200 | rajivr | (uid269651@gateway/web/irccloud.com/x-capllcjtsollkkrc) (Quit: Connection closed for inactivity) |
2021-04-06 20:13:23 +0200 | notzmv | (~zmv@unaffiliated/zmv) |
2021-04-06 20:14:24 +0200 | <maerwald> | did they ever say what kind of code it was? |
2021-04-06 20:14:35 +0200 | <maerwald> | If it was frontend, I'd say that might be quite reasonable |
2021-04-06 20:15:22 +0200 | jj2021 | (~JJ@cpe-76-185-168-105.satx.res.rr.com) |
2021-04-06 20:15:26 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 20:17:45 +0200 | shalokshalom | (~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106) |
2021-04-06 20:17:46 +0200 | <maerwald> | tomsmeding: https://arxiv.org/abs/1207.2017 can I maybe hack around my problem with that? :p |
2021-04-06 20:18:54 +0200 | <tomsmeding> | maerwald: I'm not sure how "un-sharing" a 1GB buffer would look :p |
2021-04-06 20:19:33 +0200 | srk | (~sorki@unaffiliated/srk) (Ping timeout: 246 seconds) |
2021-04-06 20:20:29 +0200 | eacameron | (uid256985@gateway/web/irccloud.com/x-ewulhovpekfjgces) |
2021-04-06 20:21:35 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
2021-04-06 20:22:40 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 20:25:00 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-04-06 20:25:19 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 20:25:59 +0200 | thc202 | (~thc202@unaffiliated/thc202) (Quit: thc202) |
2021-04-06 20:26:28 +0200 | <maerwald> | hmm, so another workaround would be to ditch lazy bytestring and recored file offsets, then have the call site re-read the file at those offsets |
2021-04-06 20:26:37 +0200 | fendor__ | (~fendor@178.115.129.28.wireless.dyn.drei.com) |
2021-04-06 20:27:03 +0200 | <tomsmeding> | that should work yes |
2021-04-06 20:27:17 +0200 | <maerwald> | since metadata is small in size, the memory leaks there aren't noticable |
2021-04-06 20:27:20 +0200 | doraemon | (~doraemon@117.222.71.159) () |
2021-04-06 20:27:43 +0200 | <maerwald> | s/metadata/header/ |
2021-04-06 20:29:38 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
2021-04-06 20:29:42 +0200 | fendor_ | (~fendor@91.141.3.10.wireless.dyn.drei.com) (Ping timeout: 268 seconds) |
2021-04-06 20:30:53 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 20:31:53 +0200 | <haskellstudent> | ok i was wrong regarding wasm bundle size. maybe what i remembered reading was the size before optimizations. afterwards rust wasm is just slightly larger than js and performs better. asterius (haskell wasm) output .wasm for todomvc (https://asterius.netlify.app/demo/todomvc/index.html#/completed) is 132k gzipped which is pretty good actually. but of course it will take a while untill haskell wasm is production ready, if ever. |
2021-04-06 20:33:56 +0200 | fendor | (~fendor@178.165.131.170.wireless.dyn.drei.com) |
2021-04-06 20:34:56 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 20:35:35 +0200 | fendor__ | (~fendor@178.115.129.28.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-04-06 20:36:32 +0200 | typetetris | (uid275937@gateway/web/irccloud.com/x-ffiqklyrigbqxewu) (Quit: Connection closed for inactivity) |
2021-04-06 20:36:43 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 20:37:12 +0200 | manuel | (~manuel@185.204.1.185) (Remote host closed the connection) |
2021-04-06 20:39:11 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 20:41:34 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) (Quit: Off to see the wizard.) |
2021-04-06 20:41:38 +0200 | darjeeling_ | (~darjeelin@115.215.43.37) (Ping timeout: 246 seconds) |
2021-04-06 20:43:49 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) |
2021-04-06 20:45:04 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 20:45:33 +0200 | aenesidemus | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving) |
2021-04-06 20:47:28 +0200 | Forlorn_ | (~Forlorn@unaffiliated/forlorn) |
2021-04-06 20:48:41 +0200 | maroloccio | (~marolocci@pousada3ja.mma.com.br) |
2021-04-06 20:48:46 +0200 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-04-06 20:48:49 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 20:50:01 +0200 | <mikoto-chan> | sorry if off-topic but what are a free category and a graph in category theory? |
2021-04-06 20:50:27 +0200 | <mikoto-chan> | most search results are very vague, I'm learning CT to better understand Haskell |
2021-04-06 20:51:49 +0200 | ADG1089 | (~aditya@122.163.139.43) (Remote host closed the connection) |
2021-04-06 20:54:09 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 20:54:29 +0200 | <koz_> | Learning CT will not necessarily help understanding Haskell, FWIW. |
2021-04-06 20:54:32 +0200 | <hololeap> | https://ncatlab.org/nlab/show/free+category ; https://en.wikipedia.org/wiki/Graph_(discrete_mathematics) |
2021-04-06 20:54:36 +0200 | darjeeling_ | (~darjeelin@122.245.210.109) |
2021-04-06 20:56:12 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 20:56:40 +0200 | <mikoto-chan> | koz_: things like Monoids and Kleisli categories were far easier to grasp in mathematics than Haskell for me |
2021-04-06 20:56:55 +0200 | <koz_> | mikoto-chan: YMMV. |
2021-04-06 20:57:06 +0200 | hive-mind | (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 260 seconds) |
2021-04-06 20:59:20 +0200 | __minoru__shirae | (~shiraeesh@5.101.59.224) |
2021-04-06 20:59:24 +0200 | notzmv | (~zmv@unaffiliated/zmv) (Ping timeout: 252 seconds) |
2021-04-06 20:59:26 +0200 | minoru_shiraeesh | (~shiraeesh@109.166.56.223) (Ping timeout: 240 seconds) |
2021-04-06 21:00:53 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) (Ping timeout: 246 seconds) |
2021-04-06 21:01:11 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
2021-04-06 21:01:19 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) |
2021-04-06 21:01:21 +0200 | molehillish | (~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection) |
2021-04-06 21:01:30 +0200 | <cub3s_> | is it possible to configure cabal such that it will ERROR instead of downloading a package, if that package is not found in Nix store? |
2021-04-06 21:02:04 +0200 | <cub3s_> | the default seems to be, if it's not found on nix store (within a nix shell), it still downloads/builds it using regular hackage |
2021-04-06 21:02:18 +0200 | <hololeap> | mikoto-chan: i think the concept is just really obvious and simple, which is why it feels "vague" to you |
2021-04-06 21:02:25 +0200 | norsxa | (uid494793@gateway/web/irccloud.com/x-nletjvianbknahyj) |
2021-04-06 21:02:28 +0200 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
2021-04-06 21:02:46 +0200 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) |
2021-04-06 21:03:30 +0200 | maroloccio | (~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3) |
2021-04-06 21:03:34 +0200 | Franciman | (~francesco@host-87-20-23-243.retail.telecomitalia.it) (Quit: Leaving) |
2021-04-06 21:03:39 +0200 | <mikoto-chan> | hololeap: alright let's say I want to learn CT for fun but there's no channel to discuss it on Freenode |
2021-04-06 21:03:43 +0200 | <mikoto-chan> | maybe ##math? |
2021-04-06 21:04:51 +0200 | <hololeap> | i've asked CT questions on occasion in #haskell and nobody complained. ##math works but don't expect anyone there to know anything about haskell |
2021-04-06 21:05:39 +0200 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-gwsdixqwmnlinkah) (Quit: Connection closed for inactivity) |
2021-04-06 21:06:08 +0200 | frozenErebus | (~frozenEre@37.231.244.249) (Ping timeout: 246 seconds) |
2021-04-06 21:07:55 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 21:08:14 +0200 | <mikoto-chan> | I will change the state of the universe with Monad IO so that Haskell doesn't exist when I'm gonna ask questions in ##math :) |
2021-04-06 21:08:37 +0200 | <monochrom> | ##category-theory or ##category, I forgot which |
2021-04-06 21:08:59 +0200 | <joel135> | ^ both are empty |
2021-04-06 21:08:59 +0200 | <hololeap> | as far as your question about free categories, that nLab article lays it out well. there really isn't much to it. |
2021-04-06 21:09:47 +0200 | hive-mind | (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) |
2021-04-06 21:10:57 +0200 | <monochrom> | ##categorytheory |
2021-04-06 21:11:31 +0200 | <joel135> | ok |
2021-04-06 21:11:32 +0200 | <monochrom> | Some of them are some of us, you will be in good hands. :) |
2021-04-06 21:11:52 +0200 | cub3s_ | (bifunc2@gateway/vpn/protonvpn/bifunc2) (Quit: Leaving) |
2021-04-06 21:12:00 +0200 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-04-06 21:13:05 +0200 | ukari | (~ukari@unaffiliated/ukari) |
2021-04-06 21:15:50 +0200 | hiroaki | (~hiroaki@2a02:908:4b18:8c40:cdf8:a3f:92b1:70de) |
2021-04-06 21:18:36 +0200 | son0p | (~ff@181.136.122.143) |
2021-04-06 21:23:16 +0200 | Guest29958 | (~amcrae@194.37.96.82) |
2021-04-06 21:25:40 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-04-06 21:25:58 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) |
2021-04-06 21:26:11 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-04-06 21:26:33 +0200 | cgfuh | (~cgfuh@181.167.191.58) |
2021-04-06 21:31:49 +0200 | `slikts | (~nelabs@wikipedia/reinis) |
2021-04-06 21:34:02 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 21:34:43 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) |
2021-04-06 21:35:13 +0200 | hololeap | (~hololeap@unaffiliated/hololeap) (Quit: Quit) |
2021-04-06 21:37:17 +0200 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) |
2021-04-06 21:38:08 +0200 | tomboy64 | (~tomboy64@unaffiliated/tomboy64) |
2021-04-06 21:39:00 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
2021-04-06 21:41:48 +0200 | Sorny | (~Sornaensi@077213203030.dynamic.telenor.dk) |
2021-04-06 21:42:23 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-04-06 21:42:43 +0200 | notzmv | (~zmv@unaffiliated/zmv) |
2021-04-06 21:43:51 +0200 | hololeap | (~hololeap@unaffiliated/hololeap) |
2021-04-06 21:44:51 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 21:45:11 +0200 | Sorna | (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 240 seconds) |
2021-04-06 21:45:12 +0200 | hololeap | (~hololeap@unaffiliated/hololeap) (Client Quit) |
2021-04-06 21:46:08 +0200 | Franciman | (~francesco@host-87-20-23-243.retail.telecomitalia.it) |
2021-04-06 21:46:36 +0200 | gesties | (a7f8ae19@167.248.174.25) |
2021-04-06 21:47:05 +0200 | notzmv | (~zmv@unaffiliated/zmv) (Ping timeout: 246 seconds) |
2021-04-06 21:48:08 +0200 | hololeap | (~hololeap@gateway/tor-sasl/hololeap) |
2021-04-06 21:48:11 +0200 | hypercube | (hypercube@gateway/vpn/protonvpn/hypercube) (Ping timeout: 265 seconds) |
2021-04-06 21:48:22 +0200 | Lord_of_Life_ | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2021-04-06 21:49:19 +0200 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds) |
2021-04-06 21:49:41 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-04-06 21:49:48 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-04-06 21:49:50 +0200 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-04-06 21:50:32 +0200 | hololeap | (~hololeap@gateway/tor-sasl/hololeap) (Remote host closed the connection) |
2021-04-06 21:50:54 +0200 | hololeap | (~hololeap@gateway/tor-sasl/hololeap) |
2021-04-06 21:56:14 +0200 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0) |
2021-04-06 21:56:26 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2021-04-06 22:00:59 +0200 | __minoru__shirae | (~shiraeesh@5.101.59.224) (Ping timeout: 260 seconds) |
2021-04-06 22:02:58 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-04-06 22:03:35 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-04-06 22:05:11 +0200 | petersen | (~petersen@redhat/juhp) (Ping timeout: 240 seconds) |
2021-04-06 22:05:55 +0200 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-04-06 22:07:10 +0200 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) |
2021-04-06 22:08:19 +0200 | petersen | (~petersen@redhat/juhp) |
2021-04-06 22:08:25 +0200 | hypercube | (~hypercube@75.186.121.128) |
2021-04-06 22:08:40 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-04-06 22:09:36 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 260 seconds) |
2021-04-06 22:12:42 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) |
2021-04-06 22:12:45 +0200 | mikoto-chan | (~anass@gateway/tor-sasl/mikoto-chan) (Ping timeout: 240 seconds) |
2021-04-06 22:13:35 +0200 | notzmv | (~zmv@unaffiliated/zmv) |
2021-04-06 22:14:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-04-06 22:15:49 +0200 | jess | j |
2021-04-06 22:19:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-04-06 22:19:45 +0200 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-04-06 22:22:27 +0200 | Guest29958 | (~amcrae@194.37.96.82) (Remote host closed the connection) |
2021-04-06 22:23:49 +0200 | sm2n | (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-62.dsl.bell.ca) (Read error: Connection reset by peer) |
2021-04-06 22:23:50 +0200 | sm2n_ | (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-62.dsl.bell.ca) |
2021-04-06 22:23:52 +0200 | sm2n_ | sm2n |
2021-04-06 22:28:55 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-04-06 22:32:49 +0200 | enoq | (~textual@194-208-146-143.lampert.tv) |
2021-04-06 22:35:13 +0200 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2021-04-06 22:38:21 +0200 | Forlorn_ | (~Forlorn@unaffiliated/forlorn) (Read error: Connection reset by peer) |
2021-04-06 22:41:21 +0200 | sudden | (~lax@unaffiliated/laxask) (Ping timeout: 265 seconds) |
2021-04-06 22:41:45 +0200 | geekosaur | (82650c7a@130.101.12.122) (Quit: Connection closed) |
2021-04-06 22:41:53 +0200 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) ("Leaving") |
2021-04-06 22:42:09 +0200 | sudden | (~lax@unaffiliated/laxask) |
2021-04-06 22:42:17 +0200 | awk | (~mnrmnaugh@unaffiliated/mnrmnaugh) |
2021-04-06 22:42:56 +0200 | awk | (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection) |
2021-04-06 22:42:59 +0200 | stree | (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
2021-04-06 22:43:27 +0200 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) |
2021-04-06 22:45:37 +0200 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.1) |
2021-04-06 22:47:36 +0200 | Eprom | (~Eprom@185.169.233.10) |
2021-04-06 22:49:16 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 260 seconds) |
2021-04-06 22:50:24 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) |
2021-04-06 22:50:46 +0200 | Pickchea | (~private@unaffiliated/pickchea) (Quit: Leaving) |
2021-04-06 22:53:54 +0200 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 246 seconds) |
2021-04-06 22:54:43 +0200 | lawt | (~lawt@c-73-151-3-92.hsd1.ca.comcast.net) |
2021-04-06 22:55:23 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-04-06 22:56:18 +0200 | stree | (~stree@68.36.8.116) |
2021-04-06 22:57:27 +0200 | nut | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-04-06 22:59:51 +0200 | gesties | (a7f8ae19@167.248.174.25) (Quit: Connection closed) |
2021-04-06 23:00:45 +0200 | xff0x | (~xff0x@2001:1a81:5274:b300:d2ad:1716:ab64:e445) (Ping timeout: 250 seconds) |
2021-04-06 23:01:46 +0200 | xff0x | (~xff0x@2001:1a81:5274:b300:8230:bebe:5967:a961) |
2021-04-06 23:02:51 +0200 | ADG1089 | (~aditya@122.163.139.43) |
2021-04-06 23:04:16 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 23:04:39 +0200 | <ADG1089> | does this (https://paste.tomsmeding.com/jngJObwO) mean I have to switch away form using HashMap, what are some other alternatives? |
2021-04-06 23:05:02 +0200 | vv8 | (~egp_@128-71-69-136.broadband.corbina.ru) (Ping timeout: 265 seconds) |
2021-04-06 23:05:36 +0200 | Varis | (~Tadas@unaffiliated/varis) (Ping timeout: 260 seconds) |
2021-04-06 23:05:44 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
2021-04-06 23:06:07 +0200 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) (Read error: Connection reset by peer) |
2021-04-06 23:06:59 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9510b1ed14260384c0cf.dip0.t-ipconnect.de) |
2021-04-06 23:08:16 +0200 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) |
2021-04-06 23:08:38 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2021-04-06 23:11:41 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 240 seconds) |
2021-04-06 23:12:00 +0200 | _d0t | (void@gateway/vpn/mullvad/d0t/x-89419360) (Quit: Konversation terminated!) |
2021-04-06 23:12:58 +0200 | dpl | (~dpl@77-121-78-163.chn.volia.net) |
2021-04-06 23:16:21 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-04-06 23:16:47 +0200 | Tops2 | (~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2021-04-06 23:17:31 +0200 | jj2021 | (~JJ@cpe-76-185-168-105.satx.res.rr.com) (Ping timeout: 260 seconds) |
2021-04-06 23:21:23 +0200 | <haskellstudent> | ADG1089: i am just a haskell noob, but my first thought is how could anyone answer that without any context? i can see that you have some haskell application that spends around 20% of its time in hashmap related functions. ok now what does that tell us? nothing. |
2021-04-06 23:23:16 +0200 | xff0x | (~xff0x@2001:1a81:5274:b300:8230:bebe:5967:a961) (Ping timeout: 258 seconds) |
2021-04-06 23:23:59 +0200 | xff0x | (~xff0x@2001:1a81:5274:b300:73fd:d48e:9253:e66b) |
2021-04-06 23:25:07 +0200 | deviantfero | (~deviantfe@190.150.27.58) |
2021-04-06 23:25:58 +0200 | rzmt | (~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 260 seconds) |
2021-04-06 23:28:10 +0200 | usr25 | (~usr25@unaffiliated/usr25) |
2021-04-06 23:28:49 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) (Remote host closed the connection) |
2021-04-06 23:29:12 +0200 | kristijonas | (~kristijon@78-56-32-39.static.zebra.lt) |
2021-04-06 23:31:23 +0200 | nut | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
2021-04-06 23:32:13 +0200 | heatsink | (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-04-06 23:32:27 +0200 | notzmv | (~zmv@unaffiliated/zmv) (Ping timeout: 260 seconds) |
2021-04-06 23:33:38 +0200 | Franciman | (~francesco@host-87-20-23-243.retail.telecomitalia.it) (Quit: Leaving) |
2021-04-06 23:34:00 +0200 | __minoru__shirae | (~shiraeesh@5.101.59.224) |
2021-04-06 23:34:17 +0200 | todda7 | (~torstein@athedsl-09242.home.otenet.gr) |
2021-04-06 23:36:42 +0200 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
2021-04-06 23:37:00 +0200 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2021-04-06 23:37:46 +0200 | oish | (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 268 seconds) |
2021-04-06 23:38:00 +0200 | <ADG1089> | yeah maybe that was a wrong question without context |
2021-04-06 23:43:30 +0200 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-47-67-70-101-46.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-04-06 23:44:10 +0200 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-47-67-70-101-46.dsl.bell.ca) |
2021-04-06 23:45:44 +0200 | chele | (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-04-06 23:46:41 +0200 | enoq | (~textual@194-208-146-143.lampert.tv) (Quit: Textual IRC Client: www.textualapp.com) |
2021-04-06 23:46:45 +0200 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
2021-04-06 23:48:00 +0200 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2021-04-06 23:53:06 +0200 | HannaM | (~quassel@p54849510.dip0.t-ipconnect.de) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-04-06 23:54:43 +0200 | rzmt | (~rzmt@87-92-180-112.rev.dnainternet.fi) |
2021-04-06 23:57:36 +0200 | NGravity | (csp@gateway/shell/xshellz/x-beigeckolcvbhubi) (Ping timeout: 246 seconds) |
2021-04-06 23:57:50 +0200 | fendor | (~fendor@178.165.131.170.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-04-06 23:58:26 +0200 | zebrag | (~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-04-06 23:58:41 +0200 | __minoru__shirae | (~shiraeesh@5.101.59.224) (Ping timeout: 265 seconds) |
2021-04-06 23:58:44 +0200 | LKoen | (~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |