Logs on 2024-08-15 (liberachat/#haskell)
| 00:04:12 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds) |
| 00:07:05 | × | acidjnk_new3 quits (~acidjnk@p200300d6e72cfb11a59a794fa2bafb8b.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 00:09:04 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 00:20:21 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds) |
| 00:20:56 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds) |
| 00:22:26 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 00:23:09 | → | wroathe joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 00:23:09 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 00:23:09 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:23:19 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 00:26:03 | → | marcelospe joins (~marcelosp@2804:1b3:a8c0:3bee:7232:17ff:fe19:2d5a) |
| 00:26:21 | × | marcelospe quits (~marcelosp@2804:1b3:a8c0:3bee:7232:17ff:fe19:2d5a) (Client Quit) |
| 00:33:49 | × | euleritian quits (~euleritia@dynamic-176-003-079-024.176.3.pool.telefonica.de) (Ping timeout: 260 seconds) |
| 00:33:50 | → | Mateon2 joins (~Thunderbi@user/meow/Mateon1) |
| 00:33:57 | → | euleritian joins (~euleritia@dynamic-176-003-012-207.176.3.pool.telefonica.de) |
| 00:35:30 | × | Mateon1 quits (~Thunderbi@user/meow/Mateon1) (Ping timeout: 252 seconds) |
| 00:35:31 | Mateon2 | is now known as Mateon1 |
| 00:40:18 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 00:52:39 | × | euleritian quits (~euleritia@dynamic-176-003-012-207.176.3.pool.telefonica.de) (Ping timeout: 244 seconds) |
| 00:55:23 | → | neuroevolutus joins (~neuroevol@206.217.206.75) |
| 00:58:37 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 258 seconds) |
| 01:00:11 | × | neuroevolutus quits (~neuroevol@206.217.206.75) (Ping timeout: 256 seconds) |
| 01:00:52 | → | euleritian joins (~euleritia@dynamic-176-003-077-029.176.3.pool.telefonica.de) |
| 01:05:05 | × | euleritian quits (~euleritia@dynamic-176-003-077-029.176.3.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 01:05:13 | → | euleritian joins (~euleritia@dynamic-176-002-064-016.176.2.pool.telefonica.de) |
| 01:12:06 | → | neuroevolutus joins (~neuroevol@206.217.206.35) |
| 01:13:50 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 01:18:02 | → | troojg joins (~troojg@user/troojg) |
| 01:22:20 | → | dysthesis joins (~dysthesis@user/dysthesis) |
| 01:25:15 | × | euleritian quits (~euleritia@dynamic-176-002-064-016.176.2.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 01:25:37 | → | euleritian joins (~euleritia@dynamic-176-000-144-091.176.0.pool.telefonica.de) |
| 01:25:47 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 01:26:21 | × | Square3 quits (~Square4@user/square) (Ping timeout: 252 seconds) |
| 01:28:18 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 01:29:48 | → | wroathe joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 01:29:48 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 01:29:48 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:38:09 | × | neuroevolutus quits (~neuroevol@206.217.206.35) (Ping timeout: 256 seconds) |
| 01:45:01 | → | rosco joins (~rosco@175.136.158.234) |
| 01:45:11 | × | ZharMeny quits (~user@185.248.130.75) (Quit: |) |
| 02:05:36 | × | euleritian quits (~euleritia@dynamic-176-000-144-091.176.0.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 02:06:25 | → | euleritian joins (~euleritia@dynamic-176-004-135-036.176.4.pool.telefonica.de) |
| 02:18:49 | × | troojg quits (~troojg@user/troojg) (Ping timeout: 260 seconds) |
| 02:21:44 | × | euleritian quits (~euleritia@dynamic-176-004-135-036.176.4.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 02:22:10 | → | euleritian joins (~euleritia@dynamic-176-004-141-015.176.4.pool.telefonica.de) |
| 02:22:19 | × | td_ quits (~td@i53870918.versanet.de) (Ping timeout: 260 seconds) |
| 02:23:49 | → | td_ joins (~td@i53870931.versanet.de) |
| 02:23:56 | → | pavonia joins (~user@user/siracusa) |
| 02:24:19 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 02:26:29 | × | euleritian quits (~euleritia@dynamic-176-004-141-015.176.4.pool.telefonica.de) (Ping timeout: 248 seconds) |
| 02:27:02 | → | euleritian joins (~euleritia@dynamic-176-000-145-124.176.0.pool.telefonica.de) |
| 02:28:04 | → | wroathe joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 02:28:04 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 02:28:04 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:29:04 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 02:30:48 | × | Chappie quits (~Chappie@71.247.18.66) (Ping timeout: 245 seconds) |
| 02:34:08 | × | xff0x quits (~xff0x@2405:6580:b080:900:493f:3f7e:59db:90fc) (Ping timeout: 245 seconds) |
| 02:40:07 | × | euleritian quits (~euleritia@dynamic-176-000-145-124.176.0.pool.telefonica.de) (Ping timeout: 244 seconds) |
| 02:40:28 | → | euleritian joins (~euleritia@dynamic-176-001-222-099.176.1.pool.telefonica.de) |
| 02:44:49 | × | euleritian quits (~euleritia@dynamic-176-001-222-099.176.1.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 02:45:22 | → | ddellacosta joins (~ddellacos@ool-44c73b99.dyn.optonline.net) |
| 02:46:00 | → | euleritian joins (~euleritia@dynamic-176-002-129-169.176.2.pool.telefonica.de) |
| 02:49:49 | × | wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal) |
| 02:52:00 | → | wroathe joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 02:52:00 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 02:52:00 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:57:04 | → | xff0x joins (~xff0x@2405:6580:b080:900:1d50:96ef:4cd0:fddc) |
| 03:13:48 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 03:16:21 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 03:17:46 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:29:53 | × | rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 03:34:13 | → | rosco joins (~rosco@175.136.158.234) |
| 03:52:31 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 03:54:21 | → | aforemny joins (~aforemny@i59F516CB.versanet.de) |
| 03:56:02 | × | aforemny_ quits (~aforemny@2001:9e8:6cf1:7e00:822:77ad:c8ef:d2e6) (Ping timeout: 272 seconds) |
| 03:56:13 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit) |
| 03:56:55 | → | neuroevolutus joins (~neuroevol@206.217.206.35) |
| 04:06:36 | × | arkeet quits (~arkeet@moriya.ca) (Ping timeout: 252 seconds) |
| 04:10:04 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 04:12:48 | → | arkeet joins (~arkeet@moriya.ca) |
| 04:23:33 | → | Guest87 joins (~Guest87@50.21.75.66) |
| 04:24:09 | ← | Guest87 parts (~Guest87@50.21.75.66) () |
| 04:34:44 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 04:43:52 | × | rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 04:52:31 | × | neuroevolutus quits (~neuroevol@206.217.206.35) (Ping timeout: 256 seconds) |
| 04:52:37 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 248 seconds) |
| 05:03:45 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 244 seconds) |
| 05:08:33 | × | ddellacosta quits (~ddellacos@ool-44c73b99.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 05:14:53 | × | euleritian quits (~euleritia@dynamic-176-002-129-169.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 05:15:11 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 05:16:06 | → | neuroevolutus joins (~neuroevol@206.217.206.35) |
| 05:16:38 | → | ddellacosta joins (~ddellacos@ool-44c73b99.dyn.optonline.net) |
| 05:17:02 | → | TMA joins (tma@twin.jikos.cz) |
| 05:22:42 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
| 05:23:27 | → | euleritian joins (~euleritia@dynamic-176-002-129-169.176.2.pool.telefonica.de) |
| 05:27:54 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 276 seconds) |
| 05:30:10 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:33:10 | × | euleritian quits (~euleritia@dynamic-176-002-129-169.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 05:33:28 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 05:34:39 | → | TMA joins (tma@twin.jikos.cz) |
| 05:44:36 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
| 05:46:21 | → | euleritian joins (~euleritia@dynamic-176-002-129-169.176.2.pool.telefonica.de) |
| 05:49:56 | × | dysthesis quits (~dysthesis@user/dysthesis) (Ping timeout: 260 seconds) |
| 05:54:57 | × | jle` quits (~jle`@2603:8001:3b02:84d4:ef66:1aba:fea9:c83b) (Ping timeout: 248 seconds) |
| 05:56:15 | → | jle` joins (~jle`@2603:8001:3b02:84d4:b870:ffa:630b:cc32) |
| 05:56:50 | → | dysthesis joins (~dysthesis@user/dysthesis) |
| 05:57:30 | → | Inst joins (~Inst@user/Inst) |
| 05:58:31 | → | julie_pilgrim joins (~julie_pil@user/julie-pilgrim/x-1240752) |
| 06:01:28 | × | dysthesis quits (~dysthesis@user/dysthesis) (Remote host closed the connection) |
| 06:04:38 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 06:05:38 | × | CrunchyFlakes_ quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
| 06:13:51 | → | ubert joins (~Thunderbi@91.141.68.38.wireless.dyn.drei.com) |
| 06:19:09 | → | rosco joins (~rosco@175.136.158.234) |
| 06:22:18 | × | rosco quits (~rosco@175.136.158.234) (Client Quit) |
| 06:29:17 | × | neuroevolutus quits (~neuroevol@206.217.206.35) (Quit: Client closed) |
| 06:42:36 | × | euleritian quits (~euleritia@dynamic-176-002-129-169.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 06:42:53 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 06:46:56 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 06:50:42 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Quit: ZNC 1.8.2 - https://znc.in) |
| 06:53:50 | → | CrunchyFlakes joins (~CrunchyFl@146.52.130.128) |
| 06:54:59 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:55:23 | × | ft quits (~ft@p4fc2aa15.dip0.t-ipconnect.de) (Quit: leaving) |
| 07:18:57 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:19:47 | → | acidjnk joins (~acidjnk@p200300d6e72cfb233897a37840cbfb18.dip0.t-ipconnect.de) |
| 07:30:30 | × | julie_pilgrim quits (~julie_pil@user/julie-pilgrim/x-1240752) (Remote host closed the connection) |
| 07:32:10 | <feetwind> | doing some work and have a big adt i need to make cases on. happens often enough i sometimes wonder: can haskell lsp expand a case-of for me? would be pretty handy |
| 07:32:26 | <feetwind> | hls rather |
| 07:39:43 | <probie> | It can tell you that patterns are non-exhaustive |
| 07:45:11 | → | chele joins (~chele@user/chele) |
| 07:47:56 | <feetwind> | so it looks like hls-tactics-plugin did used to accomplish it quite well, but it is now abandonware due to ghc changes from 8.x to 9.x being too much to keep up with :') |
| 08:03:42 | × | wagle quits (~wagle@quassel.wagle.io) (Quit: No Ping reply in 180 seconds.) |
| 08:05:23 | → | wagle joins (~wagle@quassel.wagle.io) |
| 08:08:26 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 08:12:49 | → | Digitteknohippie joins (~user@user/digit) |
| 08:13:22 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 08:14:43 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 08:15:35 | × | ThePenguin quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
| 08:16:07 | → | ThePenguin joins (~ThePengui@cust-95-80-24-166.csbnet.se) |
| 08:19:48 | Digitteknohippie | is now known as Digit |
| 08:24:36 | weechat2 | is now known as dminuoso |
| 08:27:56 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 08:27:59 | → | swamp_ joins (~zmt00@user/zmt00) |
| 08:30:57 | × | zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds) |
| 08:41:42 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 08:44:21 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: on the move) |
| 08:52:46 | → | sawilagar_ joins (~sawilagar@user/sawilagar) |
| 08:53:37 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 09:02:19 | → | dans69504 joins (~danse-nr3@user/danse-nr3) |
| 09:06:04 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Ping timeout: 244 seconds) |
| 09:17:56 | → | misterfish joins (~misterfis@87.215.131.102) |
| 09:29:34 | → | gmg joins (~user@user/gehmehgeh) |
| 09:44:56 | × | dans69504 quits (~danse-nr3@user/danse-nr3) (Remote host closed the connection) |
| 09:45:10 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 09:50:48 | × | _________ quits (~nobody@user/noodly) (Ping timeout: 245 seconds) |
| 09:55:17 | × | kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (Ping timeout: 265 seconds) |
| 09:58:05 | → | _________ joins (~nobody@user/noodly) |
| 10:06:24 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
| 10:07:09 | → | euleritian joins (~euleritia@dynamic-176-006-143-210.176.6.pool.telefonica.de) |
| 10:08:30 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed) |
| 10:09:07 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
| 10:11:10 | × | euleritian quits (~euleritia@dynamic-176-006-143-210.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 10:11:29 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 10:11:48 | → | talukara joins (~talukara@user/talukara) |
| 10:13:13 | × | talukara quits (~talukara@user/talukara) (Remote host closed the connection) |
| 10:30:42 | → | rosco joins (~rosco@175.136.158.234) |
| 10:42:49 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 10:43:26 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 10:45:32 | → | ZharMeny joins (~user@user/ZharMeny) |
| 10:56:32 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 10:57:50 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 10:58:34 | → | cfricke joins (~cfricke@user/cfricke) |
| 11:05:36 | → | wlhn joins (~wlhn@dl6-5j8gfh1n484fp87pt-3.rev.dnainternet.fi) |
| 11:10:06 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 11:13:21 | Hecate_ | is now known as Hecate |
| 11:25:09 | → | marcelospe joins (~marcelosp@user/marcelospe) |
| 11:38:44 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:39:53 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: meal) |
| 11:40:33 | × | marcelospe quits (~marcelosp@user/marcelospe) (Quit: Leaving) |
| 11:40:53 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 11:41:18 | × | marcelospe quits (~marcelosp@143.107.45.1) (Changing host) |
| 11:41:18 | → | marcelospe joins (~marcelosp@user/marcelospe) |
| 11:44:56 | → | euandreh1 joins (~Thunderbi@189.6.18.26) |
| 11:48:50 | → | billchenchina- joins (~billchenc@103.152.35.21) |
| 12:03:42 | × | marcelospe quits (~marcelosp@user/marcelospe) (Ping timeout: 272 seconds) |
| 12:29:45 | × | ddellacosta quits (~ddellacos@ool-44c73b99.dyn.optonline.net) (Ping timeout: 276 seconds) |
| 12:30:13 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 12:31:13 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 245 seconds) |
| 12:35:34 | × | euandreh1 quits (~Thunderbi@189.6.18.26) (Remote host closed the connection) |
| 12:36:22 | → | euandreh joins (~Thunderbi@189.6.18.26) |
| 12:39:09 | × | euandreh quits (~Thunderbi@189.6.18.26) (Remote host closed the connection) |
| 13:01:47 | × | ephilalethes quits (~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection) |
| 13:02:34 | → | ephilalethes joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 13:06:51 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
| 13:10:43 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 252 seconds) |
| 13:18:30 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:38:01 | → | Square3 joins (~Square4@user/square) |
| 13:49:12 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 13:56:23 | <fr33domlover> | Is mpsGeneric still supposed to work in persistent? Using stackage latest LTS (22.32), I'm getting these errors on this (quite trivial) code that used to work: http://paste.debian.net/1326476/ |
| 13:57:16 | <fr33domlover> | I'm considering to just drop the mpsGeneric since it's deprecated, but it would be nice to know if I can update my code to build without changing the semantics/types |
| 13:59:57 | × | YoungFrog quits (~youngfrog@2a02:a03f:c9db:fc00:b4ad:7d6f:2694:3c32) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 14:00:17 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 14:03:49 | <SrPx> | hey guys I'm considering porting the Kind2 project from Rust to Haskell today. main reason I used Rust instead of Haskell is due to trauma with Cabal/Stack/etc.; so for you using it today, how better are things when it comes to making and using Haskell packages? do we still suffer from problems where installing a lib breaks others etc.? do things just work now, or not really? |
| 14:04:27 | <Franciman> | no, it is quite ok |
| 14:04:48 | <Franciman> | i personally use cabal, and have had no such issue lately |
| 14:05:12 | <Franciman> | lib breaking other libs i think was solved a lot of time ago, with nix-style local builds |
| 14:05:16 | <Cale> | But also: don't install libs globally, just set up your project. |
| 14:05:16 | <Franciman> | if i understand what you mean |
| 14:05:46 | <EvanR> | libs don't break libs, people do |
| 14:05:52 | <Cale> | I bet you would still have issues if you tried to do things that way over any appreciable period of time |
| 14:06:15 | <EvanR> | but having multiple incompatible versions of the same package installed globally can't be good |
| 14:06:34 | → | Guest60 joins (~Guest60@2a01:11:420:5f20:c1d7:ca6f:df6a:24ef) |
| 14:07:18 | <Franciman> | but you don't need that if you are writing a package. Just declare your local dependencies, as Cale said |
| 14:08:33 | × | Guest60 quits (~Guest60@2a01:11:420:5f20:c1d7:ca6f:df6a:24ef) (Client Quit) |
| 14:08:54 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 14:12:22 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:13:34 | → | traxex joins (traxex@user/traxex) |
| 14:16:53 | <SrPx> | Cale: got it, ty |
| 14:17:02 | <SrPx> | so I have two options right? just cabal, and cabal+stack? |
| 14:17:27 | <SrPx> | can I completely disable any kind of global package installing? |
| 14:17:40 | <SrPx> | i just want it to work like npm/cargo, just install things locally |
| 14:22:44 | <Cale> | There is a third option of using nix along with those things which would really guarantee it. |
| 14:23:07 | <Cale> | But I believe the default is now to use "nix-style local builds" |
| 14:23:13 | <Cale> | https://cabal.readthedocs.io/en/3.4/nix-local-build-overview.html |
| 14:26:03 | <Cale> | The only global thing is a cache of build outputs, and that only gets used when it actually contains the exact build outputs that would have been produced for your project anyway (i.e. with the same transitive dependencies) |
| 14:29:59 | <haskellbridge> | <sm> SrPx: three options: cabal, stack, or some flavour of nix+haskell |
| 14:30:42 | <haskellbridge> | <sm> stack is the most reliable if you don't want to become expert in tooling |
| 14:30:55 | <haskellbridge> | <sm> * a tools expert |
| 14:33:40 | <EvanR> | cabal seems pretty reliable |
| 14:33:55 | <EvanR> | I had issues with stack! |
| 14:34:05 | <EvanR> | rumor rumor fear uncertainty and doubt |
| 14:37:19 | <SrPx> | omg |
| 14:38:30 | → | wroathe joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 14:38:30 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 14:38:30 | → | wroathe joins (~wroathe@user/wroathe) |
| 14:39:20 | <SrPx> | just how do I start a haskell project and start installing libraries in a way that is simple and will avoid headache in the future? |
| 14:39:28 | <EvanR> | cabal init |
| 14:39:38 | <EvanR> | and the cabal manual |
| 14:40:23 | <SrPx> | okay |
| 14:40:32 | <haskellbridge> | <bdub> Cabal is the way!!! |
| 14:40:35 | <SrPx> | also where do I browse haskell libs? |
| 14:40:41 | <EvanR> | hackage |
| 14:40:42 | <haskellbridge> | <bdub> hoogle |
| 14:40:55 | <SrPx> | got it |
| 14:41:17 | <haskellbridge> | <bdub> Gooooood morning Haskellers! How we doing today |
| 14:42:49 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 14:43:53 | → | spikhoff joins (~spikhoff@8ab7-fe8e-44ff-127b-4d80-8525-07d0-2001.dyn.estpak.ee) |
| 14:44:44 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 14:45:17 | <SrPx> | haskell2010 or GHC2021? |
| 14:45:48 | <haskellbridge> | <sm> your call, doesn't matter much |
| 14:46:21 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 14:46:29 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 14:47:07 | → | rvalue joins (~rvalue@user/rvalue) |
| 14:48:33 | × | Square3 quits (~Square4@user/square) (Ping timeout: 252 seconds) |
| 14:54:19 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 14:59:16 | × | misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 258 seconds) |
| 15:00:19 | × | metabulation quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 15:00:57 | → | metabulation joins (~wootehfoo@user/wootehfoot) |
| 15:01:54 | → | Square joins (~Square@user/square) |
| 15:03:02 | × | spikhoff quits (~spikhoff@8ab7-fe8e-44ff-127b-4d80-8525-07d0-2001.dyn.estpak.ee) (Remote host closed the connection) |
| 15:03:43 | <SrPx> | got it |
| 15:03:51 | <SrPx> | how is haskell->web nowadays? |
| 15:06:51 | <haskellbridge> | <thirdofmay18081814goya> what's the usecase for "Dynamic"? |
| 15:07:35 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:08:03 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 15:08:49 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 15:11:17 | <Cale> | thirdofmay18081814goya: you mean in Reflex? |
| 15:11:37 | <Cale> | Or Dynamic as in the thing involving Typeable? |
| 15:12:12 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 15:12:17 | <haskellbridge> | <thirdofmay18081814goya> "data Dynamic" from "base" |
| 15:12:22 | → | euleritian joins (~euleritia@dynamic-176-006-147-135.176.6.pool.telefonica.de) |
| 15:13:19 | <Cale> | Mostly I think of Data.Dynamic as an example of how it's possible to use Typeable to do dynamic typing, but not as something that I'd typically use. You usually get a better result using Typeable more directly. |
| 15:13:51 | <haskellbridge> | <sm> SrPx: the most-used web frameworks are yesod, servant, IHP, maybe miso, maybe this new wasp thing that generates js web apps |
| 15:13:52 | <Cale> | (If you need Typeable at all and not just something like a GADT) |
| 15:13:58 | × | euleritian quits (~euleritia@dynamic-176-006-147-135.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 15:14:08 | <haskellbridge> | <sm> they do the job |
| 15:14:09 | <SrPx> | sorry I mean generating a front-end HTML app with Haskell |
| 15:14:17 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 15:14:23 | <SrPx> | seems like ghcjs isn't maintained? |
| 15:14:49 | <haskellbridge> | <thirdofmay18081814goya> Cale: hm. and which problems are better tackled using Typeable? |
| 15:15:03 | <Cale> | ghcjs indeed is hanging on by a thread, but javascript support in GHC itself is getting there. |
| 15:15:31 | <haskellbridge> | <thirdofmay18081814goya> * handled |
| 15:15:31 | <Cale> | For now though, I would still recommend using ghcjs via something like reflex-platform. |
| 15:15:40 | <danse-nr3> | what's "this new wasp thing" sm? |
| 15:15:47 | <haskellbridge> | <sm> #haskell-wasm:matrix.terrorjack.com (https://matrix.to/#/#haskell-wasm:matrix.terrorjack.com) room may be helpful |
| 15:16:13 | <danse-nr3> | oh you probably meant "wasm" |
| 15:16:14 | <haskellbridge> | <sm> https://wasp-lang.dev, danse-nr3 |
| 15:16:22 | <danse-nr3> | nope you meant wasp |
| 15:16:24 | <danse-nr3> | cheers |
| 15:17:14 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 252 seconds) |
| 15:17:14 | <danse-nr3> | oh yeah i recall now, never bought the idea |
| 15:17:29 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 15:17:38 | <haskellbridge> | <sm> Looking at the github repo, I don't know how haskell is involved, but it was mentioned in a recent HN discussion as haskell based |
| 15:17:57 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 15:17:58 | <danse-nr3> | yeah but too rigid and opinionated for my taste |
| 15:19:19 | <SrPx> | hmm just wondering, I want to organize my project so that each file has only one definition. but it seems like every Haskell file needs a module declaration, and needs to be included inside .cabal. can I avoid that bureaucracy? |
| 15:19:24 | <Cale> | goya: It's somewhat rare, but basically cases where you want to be able to handle many types of data in your application (as in, in a user-facing way), and want to sort of hijack Haskell's type system for your own use. Typeable gives you runtime information about the types of things, and a way to take something of an unknown type t, such that there's an instance of Typeable t, and recover whether t was some particular type like |
| 15:19:24 | <Cale> | Integer, and if so, cast it, obtaining an Integer value. |
| 15:20:10 | × | itaipu quits (~itaipu@168.121.98.107) (Ping timeout: 252 seconds) |
| 15:20:17 | <Cale> | cast :: (Typeable a, Typeable b) => a -> Maybe b |
| 15:20:30 | <Cale> | This gives Nothing whenever a and b are not actually the same type |
| 15:20:34 | <haskellbridge> | <sm> ok there's the haskell in https://github.com/wasp-lang/wasp/tree/main/waspc . I guess in github's bar chart it is obscured by vast quantities of ts/js/css/tex/shel/... ? |
| 15:22:02 | <haskellbridge> | <sm> SrPx: I think there's a way to avoid declaring every file in a .cabal file these days, if you use newer cabal-install |
| 15:22:26 | <haskellbridge> | <sm> or you can use a package.yaml file, and generate the .cabal from that |
| 15:22:31 | <SrPx> | newer cabal-install? thought I was using the latest version (3.1) |
| 15:23:06 | <haskellbridge> | <sm> I meant "newish" |
| 15:25:09 | <SrPx> | I just don't know what you're talking about:( |
| 15:28:01 | <haskellbridge> | <sm> You want to avoid declaring every .hs file in your project - I believe recent versions of "cabal" allow that (but I can't find the doc) |
| 15:28:13 | <SrPx> | ah, got it |
| 15:28:18 | <SrPx> | misunderstood the question |
| 15:28:25 | <SrPx> | message* |
| 15:28:46 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 15:32:54 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 15:34:29 | → | itaipu joins (~itaipu@168.121.98.107) |
| 15:34:46 | <SrPx> | seems like I do need to declare it on cabal though, otherwise I get "Could not find module ‘Kind.Core’." |
| 15:35:53 | <haskellbridge> | <sm> I was trying to say you have to use some special syntax, it's not default |
| 15:37:28 | <haskellbridge> | <sm> with stack, it is the default |
| 15:37:43 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 15:37:46 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds) |
| 15:38:42 | → | euleritian joins (~euleritia@dynamic-176-006-147-135.176.6.pool.telefonica.de) |
| 15:40:59 | <haskellbridge> | <sm> well, here's a https://github.com/haskell/cabal/issues/5343 discussion of it, still open.. I really thought I'd seen it somewhere |
| 15:45:26 | <haskellbridge> | <sm> no, it's not supported yet |
| 15:46:41 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 15:47:17 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 15:47:30 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: on the move) |
| 15:49:28 | → | wroathe joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 15:49:28 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 15:49:28 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:50:57 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds) |
| 15:55:56 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 15:57:59 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 260 seconds) |
| 15:58:35 | <haskellbridge> | <thirdofmay18081814goya> "class Category a => Arrow (a :: Type -> Type -> Type) where", here "(a :: Type -> Type -> Type)" means the type constructor for "Arrow" takes two types, right? |
| 16:00:05 | <c_wraith> | it takes two fully-saturate types |
| 16:01:23 | <haskellbridge> | <thirdofmay18081814goya> c_wraith: I see ty! |
| 16:01:34 | <c_wraith> | Foo can be an instance of Arrow when (Foo Int Int) is well-kinded. Less so if (Foo Either Maybe) is required. |
| 16:04:08 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 16:04:30 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
| 16:09:49 | <SrPx> | sm: I see ty |
| 16:11:01 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Ping timeout: 248 seconds) |
| 16:12:53 | × | billchenchina- quits (~billchenc@103.152.35.21) (Ping timeout: 245 seconds) |
| 16:12:56 | → | cfricke joins (~cfricke@user/cfricke) |
| 16:13:05 | → | billchenchina- joins (~billchenc@103.118.42.229) |
| 16:14:47 | <haskellbridge> | <thirdofmay18081814goya> hm, then how do I read a type like: " Generic1 (Kleisli m a :: Type -> Type)"? I would have expected "Generic1 (Kleisli (x :: Type -> Type -> Type)" or "Generic1 (Kleisli x y)" |
| 16:15:57 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 16:16:17 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 16:17:07 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 16:17:54 | × | euleritian quits (~euleritia@dynamic-176-006-147-135.176.6.pool.telefonica.de) (Ping timeout: 276 seconds) |
| 16:21:21 | <ncf> | ? |
| 16:21:43 | <ncf> | Generic1 applied to (Kleisli m a), which has kind Type -> Type |
| 16:27:12 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 16:28:23 | → | califax joins (~califax@user/califx) |
| 16:29:10 | <haskellbridge> | <thirdofmay18081814goya> ncf: got it ty |
| 16:30:52 | <haskellbridge> | <thirdofmay18081814goya> so if the kind of "Kleisli m a" is "Type -> Type", that means "m a" is a single type right? |
| 16:31:39 | → | euleritian joins (~euleritia@dynamic-176-002-138-045.176.2.pool.telefonica.de) |
| 16:42:08 | → | kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host) |
| 16:42:48 | <ncf> | Kleisli m a means (Kleisli m) a |
| 16:42:55 | <ncf> | application is left-associative |
| 16:45:19 | <haskellbridge> | <thirdofmay18081814goya> ncf: thanks a lot for the help! |
| 16:50:03 | × | Me-me quits (~me-me@kc.randomserver.name) (Read error: Connection reset by peer) |
| 16:51:34 | → | Me-me joins (~me-me@kc.randomserver.name) |
| 16:57:18 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 16:59:44 | × | smalltalkman quits (uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 17:00:34 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 17:00:38 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
| 17:03:28 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer) |
| 17:03:56 | → | danse-nr3 joins (~danse-nr3@user/danse-nr3) |
| 17:08:20 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 17:10:36 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 17:13:01 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 17:14:28 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:18:42 | × | euleritian quits (~euleritia@dynamic-176-002-138-045.176.2.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 17:24:11 | → | euleritian joins (~euleritia@dynamic-176-006-147-189.176.6.pool.telefonica.de) |
| 17:34:21 | × | euleritian quits (~euleritia@dynamic-176-006-147-189.176.6.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 17:36:20 | → | euleritian joins (~euleritia@dynamic-176-006-147-189.176.6.pool.telefonica.de) |
| 17:36:25 | × | Pixi quits (~Pixi@user/pixi) (Quit: Leaving) |
| 17:37:10 | <absence> | I'm sure there are multiple problems with this first attempt at something HList-related, but can someone point me in the right direction? https://play.haskell.org/saved/dopna6xm |
| 17:38:42 | <absence> | I'm trying to take a type-level list of type-level strings, and a HList of values, and convert it into a HList of values Tagged with the respective type-level strings. |
| 17:40:36 | × | euleritian quits (~euleritia@dynamic-176-006-147-189.176.6.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 17:40:55 | → | euleritian joins (~euleritia@dynamic-176-002-081-241.176.2.pool.telefonica.de) |
| 17:48:07 | × | ubert quits (~Thunderbi@91.141.68.38.wireless.dyn.drei.com) (Quit: ubert) |
| 17:48:22 | → | ubert joins (~Thunderbi@91.141.68.38.wireless.dyn.drei.com) |
| 17:48:45 | ← | pkal parts (~pkal@2a01:4f8:1c1b:a321::1) (Killed buffer) |
| 17:56:31 | × | rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 17:59:01 | <haskellbridge> | <thirdofmay18081814goya> "newtype Term f = In {out :: f (Term f)}" what's the proper way to pattern match this type? "In ??" |
| 17:59:02 | <EvanR> | so you want to zip two HLists |
| 17:59:59 | <EvanR> | do you know what f is, if not, In x ? |
| 18:00:36 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 276 seconds) |
| 18:00:46 | × | danse-nr3 quits (~danse-nr3@user/danse-nr3) (Ping timeout: 252 seconds) |
| 18:01:01 | <absence> | EvanR: Not quite, but it's zip-like, just with one HList and one type-level list. |
| 18:01:09 | <haskellbridge> | <thirdofmay18081814goya> EvanR: ah it thought it should have a single answer, will play around with the compiler a bit more ty for input |
| 18:01:17 | <haskellbridge> | <thirdofmay18081814goya> * would |
| 18:01:33 | <int-e> | Both In f and In { out = f } work for pattern matching. |
| 18:01:50 | <haskellbridge> | <thirdofmay18081814goya> int-e: ah I see! ty |
| 18:02:26 | <int-e> | But most of the time I'd just apply `out` to a value in this specific case (a newtype) |
| 18:03:37 | × | ThePenguin quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
| 18:04:07 | <EvanR> | well an HList is a value at runtime and a type-level list doesn't exist at runtime |
| 18:04:11 | → | ThePenguin joins (~ThePengui@cust-95-80-24-166.csbnet.se) |
| 18:04:44 | <EvanR> | zipping will be tricky |
| 18:05:13 | <EvanR> | maybe you want to convert the type level list into a normal list of strings |
| 18:06:46 | <EvanR> | maybe write down the type signature of what you think you want |
| 18:08:38 | → | ft joins (~ft@p4fc2aa15.dip0.t-ipconnect.de) |
| 18:10:29 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 255 seconds) |
| 18:13:22 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 18:16:28 | <absence> | EvanR: I think I figured it out. This ZipTagged type family seems to calculate the correct type: https://play.haskell.org/saved/ewv9Yuer |
| 18:17:01 | <EvanR> | ok it zips at the type level |
| 18:17:48 | → | wroathe_ joins (~wroathe@mobile-166-175-60-99.mycingular.net) |
| 18:17:58 | × | wroathe quits (~wroathe@user/wroathe) (Killed (NickServ (GHOST command used by wroathe_!~wroathe@mobile-166-175-60-99.mycingular.net))) |
| 18:18:00 | wroathe_ | is now known as wroathe |
| 18:19:02 | <EvanR> | data family used for HList is interesting |
| 18:19:13 | <EvanR> | woulda thought it would be a GADT |
| 18:19:24 | <absence> | EvanR: Oops, I messed up the data family syntax there, but you got the idea. Map at the value-level and zip at the type-level. |
| 18:19:48 | <absence> | EvanR: I just copied it from the HList package. |
| 18:19:55 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 18:22:34 | × | wroathe quits (~wroathe@mobile-166-175-60-99.mycingular.net) (Changing host) |
| 18:22:34 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:23:27 | <absence> | EvanR: GADT works as well, I like it better: https://play.haskell.org/saved/N11PcFZS |
| 18:25:59 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:31:12 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 252 seconds) |
| 18:31:51 | × | CrunchyFlakes quits (~CrunchyFl@146.52.130.128) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:33:18 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 18:34:58 | → | CrunchyFlakes joins (~CrunchyFl@146.52.130.128) |
| 18:41:38 | × | euleritian quits (~euleritia@dynamic-176-002-081-241.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
| 18:41:56 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:42:14 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 18:46:17 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 18:49:19 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 18:52:26 | × | haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
| 18:53:24 | → | neuroevolutus joins (~neuroevol@206.217.206.35) |
| 18:54:18 | → | haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com) |
| 18:54:18 | ChanServ | sets mode +v haskellbridge |
| 19:06:42 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 19:16:58 | × | marcelospe quits (~marcelosp@143.107.45.1) (Remote host closed the connection) |
| 19:17:19 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 19:26:43 | × | john3 quits (~john@203.94.52.182) (Quit: WeeChat 4.0.5) |
| 19:30:58 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 252 seconds) |
| 19:35:54 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 272 seconds) |
| 19:37:41 | <haskellbridge> | <thirdofmay18081814goya> author defines a syntax where literals are given by ```haskell |
| 19:37:41 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_matrix/media/v3/download/kf8nh.com/aGtRMHzRbZuRhnklhVCXkPZZ (6 lines) |
| 19:37:55 | <haskellbridge> | <thirdofmay18081814goya> author defines a syntax where literals are given by |
| 19:37:55 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_matrix/media/v3/download/kf8nh.com/iVYpGxhMzIIqOFKovfwKlDIt (6 lines) |
| 19:38:01 | <haskellbridge> | <thirdofmay18081814goya> what might they mean by "Ident String"? |
| 19:39:09 | <EvanR> | define a type for literals of which there are 3 kinds: string literals, integer literals, or identifiers |
| 19:39:38 | <mauke> | variables have names |
| 19:39:40 | <EvanR> | though normally identifiers alone would be variables and not a literal |
| 19:39:58 | <haskellbridge> | <thirdofmay18081814goya> EvanR: ah, identifiers! ty |
| 19:40:52 | <EvanR> | in some languages you have keywords or symbols distinct from strings |
| 19:41:06 | <EvanR> | which have literal values |
| 19:42:29 | <zzz> | what would be the equivalent of a symbol in haskell? data SymbolX = SymbolX ? |
| 19:42:46 | <zzz> | just make a bunch of those |
| 19:43:28 | <zzz> | can't think of a situation where they would be useful though |
| 19:44:04 | <EvanR> | you could use any haskell type with an Enum instance to get the same effect |
| 19:44:46 | <EvanR> | not the same, since there is a runtime global optimization interning the integers for any chosen string |
| 19:44:56 | <EvanR> | so you'd have to cook something like that up |
| 19:45:20 | <EvanR> | the approximate it you could use ShortByteString |
| 19:45:38 | <zzz> | i guess there's Data.Unique in base also for that effect |
| 19:45:42 | <EvanR> | if the shortbytestring is short enough, it's smaller than the Int xD |
| 19:46:56 | <EvanR> | Unique requires IO... |
| 19:47:04 | <zzz> | and it uses Integer |
| 19:47:19 | <EvanR> | and doesn't have a way to assign a name to a value |
| 19:47:53 | <EvanR> | basically just use String |
| 19:48:10 | <zzz> | String? |
| 19:48:15 | <zzz> | as in [Char] ? |
| 19:50:33 | → | foul_owl_ joins (~kerry@185.219.141.164) |
| 19:50:33 | <EvanR> | it's basically how keywords/symbols/whatever are used in dynamically typed language of week |
| 19:50:44 | × | foul_owl quits (~kerry@185.216.231.180) (Ping timeout: 260 seconds) |
| 19:50:46 | <EvanR> | accelerated short strings |
| 19:51:11 | <EvanR> | you're not given access to the internal numeric codes |
| 19:51:48 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 19:52:12 | <EvanR> | when they are used to basically hack together a sum type, like {:just, 3} or {:nothing}... well that's better done with a sum type |
| 19:53:20 | × | ubert quits (~Thunderbi@91.141.68.38.wireless.dyn.drei.com) (Quit: ubert) |
| 19:53:50 | <zzz> | we could use newtype Symbol = Symbol Word |
| 19:53:55 | <zzz> | if we don't mind the limit |
| 19:54:47 | <EvanR> | smh |
| 19:54:53 | <zzz> | no? :p |
| 19:55:16 | → | neuroevolutus9 joins (~neuroevol@37.19.200.148) |
| 19:55:28 | × | neuroevolutus9 quits (~neuroevol@37.19.200.148) (Client Quit) |
| 19:56:13 | <EvanR> | apple :: Word, scissors :: Word, while frobnobdicate :: Word is a type error |
| 19:56:50 | <zzz> | you lost me there |
| 19:57:13 | <EvanR> | implementing keyword as words.... lol |
| 19:57:42 | <EvanR> | anyway if you want to use numbers... use Int |
| 19:57:53 | <EvanR> | if you want to use words... use String |
| 19:58:01 | <zzz> | what about retroencabulator :: Word? |
| 19:58:09 | <haskellbridge> | <thirdofmay18081814goya> data Lit |
| 19:58:10 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_matrix/media/v3/download/kf8nh.com/CnNKCHExacGlsViCKhDOYFta (12 lines) |
| 19:58:52 | <EvanR> | thirdofmay18081814goya, did you try it |
| 19:59:11 | × | neuroevolutus quits (~neuroevol@206.217.206.35) (Ping timeout: 256 seconds) |
| 19:59:18 | <haskellbridge> | <thirdofmay18081814goya> EvanR: definitely, have been stuck on this for the last hour or so |
| 19:59:26 | <EvanR> | and what was the result |
| 19:59:29 | <haskellbridge> | <thirdofmay18081814goya> I don't know how to make a final term |
| 19:59:40 | <haskellbridge> | <thirdofmay18081814goya> because the typechecking fails by requiring it to recurse again |
| 20:00:16 | <EvanR> | you didn't try In (Expr (StrLit "hello")) ? |
| 20:00:29 | <EvanR> | ok you did get an error |
| 20:01:04 | <haskellbridge> | <thirdofmay18081814goya> EvanR: "Expr" isn't an available data constructor in this case (i think) |
| 20:01:24 | <EvanR> | In (StrLet "hello") |
| 20:03:18 | <haskellbridge> | <thirdofmay18081814goya> EvanR: this fails on account of "StrLit "hello"" not being of type "f (Term f)" |
| 20:03:41 | <EvanR> | what type is it |
| 20:03:48 | <haskellbridge> | <thirdofmay18081814goya> "Lit" |
| 20:03:57 | <EvanR> | ok |
| 20:04:05 | <EvanR> | In (Literal (StrLit "hello")) |
| 20:04:18 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:06:10 | <haskellbridge> | <thirdofmay18081814goya> that typechecked |
| 20:06:16 | <haskellbridge> | <thirdofmay18081814goya> i don't understand how |
| 20:06:26 | <haskellbridge> | <thirdofmay18081814goya> will contemplate it, thanks a lot for the help |
| 20:06:35 | <EvanR> | meditation is required |
| 20:07:29 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 20:08:22 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
| 20:08:36 | <EvanR> | Literal :: forall a . Lit -> Expr a |
| 20:08:53 | <EvanR> | a is whatever type you want |
| 20:12:43 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
| 20:25:14 | <haskellbridge> | <thirdofmay18081814goya> hm |
| 20:26:29 | <haskellbridge> | <thirdofmay18081814goya> does this work because we first of all suppose "In (Literal (StrLit "hello"))" to be of type "Term Expr", which restricts "Literal" from "Lit -> Expr a" to "Lit -> Expr Term"? |
| 20:27:46 | <haskellbridge> | <thirdofmay18081814goya> i.e., the compiler supposes first that the expression is well-typed? |
| 20:30:03 | alethkit | is now known as kitaleth |
| 20:31:23 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:31:31 | mauke | writes down some types |
| 20:32:39 | <mauke> | StrLit :: String -> Lit; Literal :: Lit -> Expr a; In :: f (Term f) -> Term f |
| 20:33:08 | <mauke> | thus: Literal (StrLit "hello") :: Expr a |
| 20:33:22 | <mauke> | where 'a' is completely free, i.e. arbitrary |
| 20:34:44 | <mauke> | meanwhile, to typecheck `In (Literal (StrLit "hello"))` we have to match up f (Term f) (what In expects the argument type to be) with Expr a (the intrinsic type of the argument) |
| 20:35:00 | <mauke> | f (Term f) ~ Expr a |
| 20:36:00 | <mauke> | on both sides we have something of the shape SomeTypeConstructor SomeArgument, so on both sides the type constructors must match and the argument types must match |
| 20:36:12 | <mauke> | f ~ Expr, (Term f) ~ a |
| 20:37:05 | <mauke> | solving these equations, we get: f = Expr; a = Term Expr |
| 20:38:23 | <haskellbridge> | <thirdofmay18081814goya> mauke: perfectly clear now, thanks a lot! |
| 20:38:30 | <mauke> | thus we can assign `Literal (StrLit "hello") :: Expr (Term Expr)` and `In :: Expr (Term Expr) -> Term Expr` |
| 20:39:56 | → | Pixi joins (~Pixi@user/pixi) |
| 20:41:19 | Inst | is now known as wagahai |
| 20:42:50 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 252 seconds) |
| 20:47:52 | wagahai | is now known as Inst |
| 20:56:48 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 21:11:32 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 21:14:33 | × | marcelospe quits (~marcelosp@143.107.45.1) (Ping timeout: 258 seconds) |
| 21:15:26 | <haskellbridge> | <thirdofmay18081814goya> in neovim is there a way to hover over an expression and get its type? |
| 21:19:18 | <haskellbridge> | <thirdofmay18081814goya> yep default behaviour of the lsp |
| 21:19:25 | <haskellbridge> | <thirdofmay18081814goya> how did i not know this lol |
| 21:24:58 | × | wlhn quits (~wlhn@dl6-5j8gfh1n484fp87pt-3.rev.dnainternet.fi) (Remote host closed the connection) |
| 21:25:15 | → | wlhn joins (~wlhn@dl6-5j8gfh1n484fp87pt-3.rev.dnainternet.fi) |
| 21:28:53 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 21:33:36 | × | ephilalethes quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving) |
| 21:38:00 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 21:41:48 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 21:41:56 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 21:42:42 | → | gmg joins (~user@user/gehmehgeh) |
| 21:45:26 | × | nek0 quits (~nek0@user/nek0) (Quit: The Lounge - https://thelounge.chat) |
| 21:52:42 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 272 seconds) |
| 21:54:18 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:54:55 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 22:07:08 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:08:35 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 22:13:22 | → | Square3 joins (~Square4@user/square) |
| 22:16:15 | × | Square quits (~Square@user/square) (Ping timeout: 252 seconds) |
| 22:16:39 | × | Vajb quits (~Vajb@n4v0h48xv84fiqflept-1.v6.elisa-mobile.fi) (Remote host closed the connection) |
| 22:16:56 | → | Vajb joins (~Vajb@n4v0h48xv84fiqflept-1.v6.elisa-mobile.fi) |
| 22:17:26 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 22:26:51 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
| 22:29:36 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:36:32 | × | marcelospe quits (~marcelosp@143.107.45.1) (Remote host closed the connection) |
| 22:36:55 | → | marcelospe joins (~marcelosp@143.107.45.1) |
| 22:42:25 | → | AlexNoo_ joins (~AlexNoo@178.34.161.76) |
| 22:45:43 | × | AlexZenon quits (~alzenon@178.34.160.210) (Ping timeout: 264 seconds) |
| 22:46:19 | × | AlexNoo quits (~AlexNoo@178.34.160.210) (Ping timeout: 264 seconds) |
| 22:47:51 | × | metabulation quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 22:49:22 | → | AlexZenon joins (~alzenon@178.34.161.76) |
| 22:58:08 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:59:04 | × | marcelospe quits (~marcelosp@143.107.45.1) (Remote host closed the connection) |
| 23:03:18 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:10:19 | <haskellbridge> | <thirdofmay18081814goya> ":t x" returns "Expr a". Would it also be true if it instead returned "f (Term f)"? |
| 23:10:30 | <haskellbridge> | <thirdofmay18081814goya> (can this question be answered without context?) |
| 23:12:47 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 23:12:47 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Changing host) |
| 23:12:47 | → | nek0 joins (~nek0@user/nek0) |
| 23:13:50 | × | nek0 quits (~nek0@user/nek0) (Client Quit) |
| 23:14:08 | → | nek0 joins (~nek0@user/nek0) |
| 23:14:16 | × | billchenchina- quits (~billchenc@103.118.42.229) (Ping timeout: 252 seconds) |
| 23:14:31 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds) |
| 23:14:57 | × | sawilagar_ quits (~sawilagar@user/sawilagar) (Ping timeout: 244 seconds) |
| 23:16:07 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 23:28:18 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 23:37:27 | → | wroathe joins (~wroathe@mobile-166-175-56-137.mycingular.net) |
| 23:37:27 | × | wroathe quits (~wroathe@mobile-166-175-56-137.mycingular.net) (Changing host) |
| 23:37:27 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:46:48 | <EvanR> | no |
| 23:47:04 | <EvanR> | f (Term f) by itself means forall f . f (Term f) |
| 23:47:21 | <EvanR> | but it's not true f can be anything, f = Expr only |
| 23:47:39 | <EvanR> | and it is a which is quantified |
| 23:48:44 | <EvanR> | you can enabled explicit forall in ghci to help distinguish "foralled" type variables vs type variables sometimes seen referring to a fixed but perhaps unknown type |
| 23:48:47 | <haskellbridge> | <thirdofmay18081814goya> EvanR: ah this is a clear way of putting it, thanks! |
| 23:49:56 | <haskellbridge> | <thirdofmay18081814goya> EvanR: hm, when this is enabled, is there such a thing as a type "a -> a" as distinguished from "forall a . a -> a"? |
| 23:50:14 | <haskellbridge> | <thirdofmay18081814goya> * different |
| 23:51:27 | <EvanR> | it will correctly show id :: forall a . a -> a |
| 23:51:37 | <EvanR> | your Literal (StrLit "hello") is like [] |
| 23:51:39 | <EvanR> | :t [] |
| 23:51:40 | <lambdabot> | [a] |
| 23:51:47 | <EvanR> | nothing about the construction pins down the a |
| 23:52:09 | <EvanR> | :t Nothing |
| 23:52:10 | <lambdabot> | Maybe a |
| 23:53:10 | <EvanR> | :t Just 'z' |
| 23:53:11 | <lambdabot> | Maybe Char |
| 23:54:39 | <haskellbridge> | <thirdofmay18081814goya> EvanR: hm I see, but does there ever arise a case where "forall a . Maybe a" is distinct from "Maybe a", or are all places you can find "Maybe a" written actually implicitly mean "forall a . Maybe a"? |
| 23:56:22 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
All times are in UTC on 2024-08-15.