Logs on 2021-06-23 (liberachat/#haskell)
| 00:00:58 | <chisui> | Even if you assume that the function terminates, the domain of `forall x. x -> x` is infinitely large. |
| 00:02:54 | <janus> | right, but why even talk about forall if it is even undecidable to answer the question for "the general first-order theory of the natural numbers expressed in Peano's axioms". wouldn't that have better literature? |
| 00:03:05 | × | trufas quits (~trufas@177.240.218.218) (Ping timeout: 252 seconds) |
| 00:03:32 | <Axman6> | janus: thanks, I'll give that a go |
| 00:03:45 | → | trufas joins (~trufas@177.240.218.218) |
| 00:04:26 | × | lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds) |
| 00:04:29 | <eggplantade> | I think this paper explains the restriction. The paper is quite technical, though. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.142.4166 |
| 00:04:52 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 00:05:52 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 00:06:21 | × | BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 258 seconds) |
| 00:08:25 | × | peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 00:08:48 | <eggplantade> | safinaskar: https://ryanglscott.github.io/2019/05/26/on-the-arity-of-type-families/ |
| 00:09:11 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 00:09:30 | <safinaskar> | ok, thanks everybody |
| 00:09:34 | <safinaskar> | i will read links |
| 00:12:14 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 00:13:15 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 00:16:18 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 00:18:56 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds) |
| 00:19:18 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 00:20:57 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 00:21:07 | × | pottsy quits (~pottsy@2400:4050:b560:3700:d9ad:59b1:5f34:93cd) (Quit: Leaving) |
| 00:25:49 | × | Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa) |
| 00:26:52 | → | renzhi joins (~xp@2607:fa49:6501:9500:5589:4dab:9f77:1a6b) |
| 00:29:30 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 00:31:06 | × | henninb quits (~henninb@63.226.174.157) (Remote host closed the connection) |
| 00:32:05 | × | lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving) |
| 00:33:34 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:34:29 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 00:35:39 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 00:37:23 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 00:37:24 | × | dhil quits (~dhil@195.213.192.47) (Ping timeout: 258 seconds) |
| 00:40:08 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 00:40:56 | → | hmmmas joins (~chenqisu1@183.217.200.246) |
| 00:43:14 | → | shimin joins (~liushimin@2409:893c:d32:97:28d4:25fe:fcfb:1863) |
| 00:43:26 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving) |
| 00:45:45 | × | hmmmas quits (~chenqisu1@183.217.200.246) (Client Quit) |
| 00:46:44 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 00:49:06 | ← | safinaskar parts (~safinaska@109-252-90-89.nat.spd-mgts.ru) () |
| 00:52:06 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 00:53:07 | → | hmmmas joins (~chenqisu1@183.217.200.246) |
| 00:56:24 | → | stevenxl_ joins (~stevenlei@174.128.182.212) |
| 00:59:21 | <chisui> | Hey, why is this error occurring https://paste.debian.net/1202086/ ? As far as I can tell the quantified constraint doesn't imply that the instance is user provided. |
| 00:59:30 | × | stevenxl quits (~stevenlei@174.128.182.215) (Ping timeout: 268 seconds) |
| 01:01:44 | × | phma quits (phma@2001:5b0:210d:d028:dead:9920:575e:b71e) (Read error: Connection reset by peer) |
| 01:02:14 | <qrpnxz> | how do i turn a float into an integer? I've tried like fromInteger . fromIntegral . floor and stuff and gotten nowhere |
| 01:04:27 | <Clint> | qrpnxz: what's wrong with floor |
| 01:04:46 | <qrpnxz> | doesn't work idk let me get the error message |
| 01:05:02 | <Clint> | > floor 5.5 |
| 01:05:04 | <lambdabot> | 5 |
| 01:05:24 | <Clint> | > round 5.5 |
| 01:05:26 | <lambdabot> | 6 |
| 01:05:34 | <qrpnxz> | https://termbin.com/fyi2 |
| 01:06:11 | <Clint> | get rid of "fromIntegral ." |
| 01:06:36 | <qrpnxz> | wtf lmao |
| 01:06:41 | <Clint> | and what do you mean for take (floor 2.0) [1..] to do? |
| 01:06:58 | <qrpnxz> | i thought i tried that but guess not |
| 01:07:10 | <qrpnxz> | i mean it for it to take 2 ofc since the floor of 2.0 is 2 |
| 01:07:15 | <Clint> | ok, just checking |
| 01:07:17 | <geekosaur> | qrpnxz, you want to apply it not compose it, but it would be doing nothing |
| 01:07:38 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 01:08:46 | <qrpnxz> | oh, the real error in my code is that function will apply more tightly than multiplication rip |
| 01:11:03 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 01:11:44 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 01:13:09 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 01:13:49 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 01:14:01 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 01:15:05 | × | stevenxl_ quits (~stevenlei@174.128.182.212) (Quit: leaving) |
| 01:16:06 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 244 seconds) |
| 01:21:07 | × | chisui quits (~chisui@200116b866492700342cdc4d594c896c.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
| 01:21:44 | × | howdy` quits (~user@2001:8003:2432:d501:1ea:381d:5464:1a19) (Ping timeout: 252 seconds) |
| 01:21:46 | → | sheepduck joins (~sheepduck@user/sheepduck) |
| 01:22:26 | → | howdy` joins (~user@2001:8004:1d00:2409:685e:a149:f33:6c38) |
| 01:23:27 | → | haskl joins (~haskeller@user/haskl) |
| 01:25:09 | → | howdy`` joins (~user@2001:8003:2432:d501:7c9a:6d35:e5a2:fb9c) |
| 01:27:20 | × | howdy` quits (~user@2001:8004:1d00:2409:685e:a149:f33:6c38) (Ping timeout: 268 seconds) |
| 01:28:55 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 01:32:00 | → | pfurla_ joins (~pfurla@216.131.82.46) |
| 01:34:49 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 265 seconds) |
| 01:37:34 | × | hegstal quits (~hegstal@2a02:c7f:7604:8a00:7821:4ac6:7f63:f8) (Remote host closed the connection) |
| 01:40:04 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 01:44:43 | → | ukari joins (~ukari@user/ukari) |
| 01:47:37 | × | trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds) |
| 01:48:08 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
| 01:48:25 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 01:48:32 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 01:51:54 | × | shimin quits (~liushimin@2409:893c:d32:97:28d4:25fe:fcfb:1863) (Ping timeout: 264 seconds) |
| 01:51:55 | × | mikail_ quits (~mikail@90.212.77.3) (Ping timeout: 268 seconds) |
| 01:52:49 | <qrpnxz> | there a syntax to do like half open ranges on lists like `[0...l]` or smth like that? |
| 01:54:51 | <glguy> | qrpnxz, [0..l-1] |
| 01:54:52 | <geekosaur> | no, and in fact Haskell's story there is a bit strange for some types |
| 01:55:32 | <geekosaur> | notably Double can run past the end of the range under some circumstances |
| 01:56:57 | <boxscape> | > [1.1, 1.31..4] |
| 01:56:58 | <lambdabot> | [1.1,1.31,1.52,1.73,1.94,2.15,2.36,2.57,2.78,2.9899999999999998,3.1999999999... |
| 01:57:18 | <boxscape> | somewhat anticlimactic when lambdabot doesn't show the whole list |
| 01:58:08 | <qrpnxz> | glguy, 😭️ |
| 01:58:12 | <qrpnxz> | alright thanks guys |
| 01:58:38 | <c_wraith> | > [1, 2.5 .. 3.5] |
| 01:58:39 | <lambdabot> | [1.0,2.5,4.0] |
| 01:58:42 | <ChaiTRex> | > last [1.1, 1.31..4] |
| 01:58:44 | <lambdabot> | 4.039999999999999 |
| 01:59:14 | <glguy> | qrpnxz, I find the languages that do that just make a confusing mess with it |
| 01:59:41 | <glguy> | like Rust's .. and ..= |
| 01:59:43 | <qrpnxz> | i think one language does .. and ..=, which is perfectly legible |
| 01:59:54 | <qrpnxz> | lol |
| 02:00:09 | <geekosaur> | de gustibus… |
| 02:02:05 | × | xff0x quits (~xff0x@2001:1a81:5218:4800:ee:cf49:8e18:79e1) (Ping timeout: 244 seconds) |
| 02:03:50 | → | xff0x joins (~xff0x@2001:1a81:5256:f800:ed61:c578:88bf:885a) |
| 02:05:41 | <boxscape> | I think with syntax like [1,2...n] or anything similar it clearly seems to suggest that n is inside the list |
| 02:07:11 | <qrpnxz> | .. vs ... is kind of anybodies guess, but .. vs ..= is obvious |
| 02:08:13 | <glguy> | If you're going to have both, then ..< and ..= at least |
| 02:08:26 | <boxscape> | ^ |
| 02:10:11 | <boxscape> | it's strange that [n..m] gets desugared into enumFromTo but `if c then a else b` doesn't get desugared into ifThenElse without RebindableSyntax |
| 02:14:25 | → | GoodbyeVincent joins (~GoodbyeVi@55.15.95.92.rev.sfr.net) |
| 02:16:36 | <boxscape> | (It's also strange that RebindableSyntax/OverloadedLists doesn't let you supply your own enumFromTo, I suppose) |
| 02:17:06 | → | outoftime joins (~ruslan@46.227.138.42) |
| 02:19:35 | → | ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net) |
| 02:35:20 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:35:20 | FinnElija | is now known as Guest3314 |
| 02:35:20 | × | Guest3314 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (cadmium.libera.chat (Nickname regained by services))) |
| 02:35:20 | finn_elija | is now known as FinnElija |
| 02:36:54 | × | alx741 quits (~alx741@181.196.68.156) (Quit: alx741) |
| 02:41:07 | → | Topsi joins (~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de) |
| 02:43:06 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 02:43:11 | × | ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection) |
| 02:44:46 | <outoftime> | Does Haskell have an arbitrary precision fraction data type? I can not loose precision been working with values of +-10^128. |
| 02:45:09 | <glguy> | outoftime, it has Rational |
| 02:45:57 | <Axman6> | > 2^255 % 3^127 |
| 02:45:59 | <lambdabot> | 5789604461865809771178549250434395392663499233282028201972879200395656481996... |
| 02:46:14 | <Axman6> | :t 2^255 % 3^127 |
| 02:46:15 | <lambdabot> | Integral a => Ratio a |
| 02:48:06 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 02:52:55 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 02:53:50 | × | pieguy128 quits (~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:54:09 | → | pieguy128 joins (~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) |
| 02:54:54 | × | renzhi quits (~xp@2607:fa49:6501:9500:5589:4dab:9f77:1a6b) (Ping timeout: 268 seconds) |
| 02:55:48 | × | td_ quits (~td@94.134.91.59) (Ping timeout: 252 seconds) |
| 02:57:13 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 02:57:42 | → | td_ joins (~td@muedsl-82-207-238-055.citykom.de) |
| 03:00:52 | <Cale> | Axman6: Ah yes, the just interval between C and an F♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭ 53 octaves above it |
| 03:01:50 | → | phma joins (phma@2001:5b0:210d:d028:4f8f:d565:65bb:29c2) |
| 03:01:53 | <peddie> | outoftime: you can use a library like `hmpfr` or `qd` to get a higher precision floating-point type |
| 03:03:50 | <qrpnxz> | but why, it's built in |
| 03:04:10 | <qrpnxz> | hey, does type Name = Int actually create a new type or is this an alias? |
| 03:04:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:04:17 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 03:04:48 | <peddie> | qrpnxz: you mean Rational is built in? yes, but it represents exact rational numbers, and sometimes you want a floating-point approximate reals and/or IEEE754 semantics |
| 03:05:06 | <qrpnxz> | there is also bigfloat, i forget what it's called tho |
| 03:05:39 | <peddie> | qrpnxz: there are bindings to libbf, but they don't include many functions right now |
| 03:06:10 | → | trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 03:06:52 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 03:06:52 | <peddie> | qrpnxz: `type Name = Int` is an alias; you can use `newtype` to create a new type |
| 03:06:57 | <qrpnxz> | ty |
| 03:07:10 | × | pfurla_ quits (~pfurla@216.131.82.46) (Ping timeout: 252 seconds) |
| 03:07:53 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 252 seconds) |
| 03:09:47 | <qrpnxz> | ah, there's no bigfloat, ig you can just use Integer then |
| 03:11:29 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds) |
| 03:12:42 | × | juhp quits (~juhp@128.106.188.66) (Quit: juhp) |
| 03:12:51 | <monochrom> | Haha Cale you have abstract perfect pitch. |
| 03:12:56 | → | juhp joins (~juhp@128.106.188.66) |
| 03:13:35 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 03:13:57 | → | pottsy joins (~pottsy@2400:4050:b560:3700:f364:dfb7:d56f:99c4) |
| 03:14:06 | <outoftime> | I have never used Haskell before and I want to solve `Zn = Z_{n-1}^2 + C` wich gives cicle of length 6 for Z0 and C in range -100..100 (it has no solution in N) |
| 03:15:07 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 03:15:18 | × | Scotty_Trees quits (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving) |
| 03:15:31 | → | talismanick joins (~user@2601:644:8502:d700::94c9) |
| 03:15:57 | <outoftime> | I had idea to implement `Fraction a b` but I've read "Learn You a Haskell for Great Good!" to the point when I could do it. That is why asked, maybe there is some type I can start using right now. |
| 03:16:29 | <outoftime> | *Fraction (Integer a) (Integer b) |
| 03:16:39 | <ChaiTRex> | outoftime: Data.Ratio |
| 03:17:04 | <talismanick> | Cabal v3.* uses the new commands by default, right? |
| 03:17:12 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 03:17:30 | <talismanick> | e.g. "cabal install" is the same as "cabal v2-install" or "cabal new-install" in Cabal v2.* |
| 03:17:49 | → | bone-baboon joins (~bone-babo@37.19.198.11) |
| 03:18:09 | <talismanick> | Please tell me I haven't been priming my system for Cabal Hell |
| 03:21:12 | <peddie> | outoftime: that's the Rational type |
| 03:21:13 | <monochrom> | Yes, v2- is the default. |
| 03:22:12 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 03:22:55 | <outoftime> | ChaiTRex: thank you! |
| 03:25:50 | × | lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 03:26:27 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 03:26:39 | <ChaiTRex> | No problem. |
| 03:26:42 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds) |
| 03:26:50 | → | Morrow_ joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) |
| 03:27:33 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 03:30:24 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 03:30:33 | justBull | is now known as justK |
| 03:31:20 | × | hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.) |
| 03:32:14 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 03:33:12 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
| 03:33:12 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds) |
| 03:33:29 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 03:33:44 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds) |
| 03:33:51 | × | x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 03:34:17 | × | Morrow_ quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 268 seconds) |
| 03:35:44 | JSharp | is now known as JSharp_ |
| 03:35:48 | JSharp_ | is now known as JSharp__ |
| 03:35:51 | JSharp__ | is now known as jaesharp |
| 03:35:54 | jaesharp | is now known as jaesharp_ |
| 03:35:59 | jaesharp_ | is now known as jaesharp__ |
| 03:36:35 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 03:37:13 | jaesharp__ | is now known as JSharp |
| 03:38:18 | JSharp | is now known as Rachel |
| 03:38:33 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 03:38:38 | Rachel | is now known as Rachel_ |
| 03:38:40 | Rachel_ | is now known as Rachel__ |
| 03:38:43 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds) |
| 03:38:43 | Lord_of_Life_ | is now known as Lord_of_Life |
| 03:38:52 | Rachel__ | is now known as JSharp |
| 03:39:14 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 03:40:22 | <guest61> | JSharp please stop flooding |
| 03:43:21 | <bone-baboon> | Can lambdabot be used to help answer FAQ that repeatedly come up in a IRC channel? |
| 03:44:06 | <JSharp> | guest61: I thought I parted all of my channels :/ - sorry about that! |
| 03:45:48 | → | sekun joins (~sekun@180.190.208.125) |
| 03:46:17 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 03:48:47 | <boxscape> | @where TAPL |
| 03:48:47 | <lambdabot> | "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/> |
| 03:49:00 | <boxscape> | bone-baboon: you can have it remember things for arbitrary keywords ^ |
| 03:50:16 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 03:52:36 | → | Morrow joins (~MorrowM_@147.161.13.60) |
| 03:52:54 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 03:53:16 | → | MorrowM joins (~MorrowM_@147.161.13.60) |
| 03:53:48 | <qrpnxz> | there a way to derive the number typeclasses for things like newtype X a = X Float? |
| 03:54:30 | → | Morrow_ joins (~MorrowM_@147.161.13.60) |
| 03:54:50 | <bone-baboon> | boxscape: Thanks |
| 03:56:10 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 03:57:01 | → | v01d4lph4 joins (~v01d4lph4@122.160.65.250) |
| 03:57:01 | × | v01d4lph4 quits (~v01d4lph4@122.160.65.250) (Changing host) |
| 03:57:01 | → | v01d4lph4 joins (~v01d4lph4@user/v01d4lph4) |
| 03:57:02 | × | Morrow quits (~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds) |
| 03:58:57 | × | MorrowM quits (~MorrowM_@147.161.13.60) (Ping timeout: 268 seconds) |
| 03:59:27 | <boxscape> | % :set -XGeneralizedNewtypeDeriving |
| 03:59:27 | <yahb> | boxscape: |
| 03:59:34 | <boxscape> | % newtype X a = X Float deriving Num |
| 03:59:34 | <yahb> | boxscape: |
| 03:59:36 | <boxscape> | qrpnxz: ^ |
| 04:00:02 | <boxscape> | qrpnxz: these days it's good practice to also enable -XDerivingStrategies and write `deriving newtype Num` to make it clear that you're using newtype deriving to derive it |
| 04:00:53 | × | Topsi quits (~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 04:11:42 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 04:15:07 | <sekun> | thyriaen: Lazy evaluation means you don't have to specify how many times you want it to cycle. Just take `n` elements from the list, and GHC will only evaluate what you take. `take 3 $ cycle [1, 2]`. |
| 04:18:10 | <sm[m]> | why do some people dislike Data.Default (def) ? Is it because it's harder for IDEs to show the definition ? |
| 04:19:30 | <JSharp> | boxscape: I saw that yesterday on TweagIO's YouTube video - *very cool* - it's so easy to miss super useful extensions. |
| 04:19:37 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 04:23:49 | <glguy> | sm[m], it generally only makes code more complicated |
| 04:24:05 | <glguy> | for everyone put the person who got to save some keystrokes when writing that bit of code |
| 04:24:11 | <glguy> | but the* |
| 04:24:43 | <sm[m]> | glguy: I see |
| 04:24:53 | <sm[m]> | I'm getting the feeling it's the same with lenses, but the benefits are a bit more |
| 04:24:59 | <glguy> | To know what 'def' is in some code I have to de type inference to work out its type and then hunt down the instance that was used |
| 04:25:04 | × | TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8) |
| 04:25:17 | <sm[m]> | both these break IDE code navigation |
| 04:25:43 | <glguy> | You mean if you use TH to generate them? |
| 04:25:51 | <sm[m]> | yes |
| 04:25:59 | <sm[m]> | if we avoid TH I guess they are navigable then |
| 04:26:25 | <glguy> | the definition of lenses can be guessed correctly, at least |
| 04:26:36 | <glguy> | for the kinds of things TH can generate |
| 04:26:44 | <sm[m]> | I might be getting finally dragged into the world of lens... |
| 04:27:57 | <glguy> | What're you lensing? |
| 04:28:01 | <sm[m]> | it feels like they both giveth and taketh away. The code can be easier to understand superficially, but is harder to understand completely |
| 04:28:05 | <glguy> | which implementation are you using? |
| 04:28:14 | <sm[m]> | glguy: I'm reviewing a PR adding lenses to lots of hledger types |
| 04:28:32 | <sm[m]> | microlens, classy lenses made with TH |
| 04:30:43 | <sm[m]> | (https://github.com/simonmichael/hledger/pull/1545) |
| 04:30:55 | <boxscape> | JSharp: yeah, I spend some time a while ago just taking a quick look at every extension listed in https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts.html |
| 04:31:03 | <boxscape> | s/spend/spent |
| 04:31:30 | × | Morrow_ quits (~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds) |
| 04:31:40 | <boxscape> | JSharp: oh, better link: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/table.html |
| 04:32:05 | <JSharp> | boxscape: cheers! I tried doing that a while ago and one issue I had was just the lack of guidance around what using certain extensions does to the language itself - sometimes it's really quite subtle; and a number of extensions are completely broken/deprecated. |
| 04:33:05 | <boxscape> | yeah the docs could probably be better here and there |
| 04:35:30 | <glguy> | sm[m], that's sure a lot to review |
| 04:36:12 | <JSharp> | Well, the docs are pretty good - they just don't really include best practices (they're not constructed like, say, the docs for the APT package manager - where the documentation is almost entirely intertwined with Debian (the project which built and uses APT for package management) Project Policy on its use. |
| 04:36:47 | <JSharp> | and that's fine, of course - but it does present a challenge for onboarding, as it were. |
| 04:37:18 | <outoftime> | How to improve speed of https://pastebin.ubuntu.com/p/kdjHGFT3tG/ ? |
| 04:37:31 | <JSharp> | I doubt that I'm making any sort of a novel observation here |
| 04:38:59 | <JSharp> | outoftime: https://blog.jez.io/profiling-in-haskell/ |
| 04:39:41 | → | tusko joins (~yeurt@user/tusko) |
| 04:39:51 | <tusko> | how does one learn haskell? |
| 04:40:24 | <glguy> | mostly by writing programs in it |
| 04:40:30 | <siraben> | practice |
| 04:40:34 | <dsal> | tusko: depends on which one. I alternate between solving problems in haskell and reading about other people solving problems in haskell |
| 04:40:36 | <JSharp> | tusko: what's your experience with programming in general? |
| 04:41:04 | <tusko> | C, C++, Python, Java, Tcl, Lisp, some Scala |
| 04:41:13 | → | wei2912 joins (~wei2912@112.199.250.21) |
| 04:41:26 | <tusko> | I've done various things |
| 04:42:18 | <JSharp> | tsuko - ok - well, you might start with http://dev.stephendiehl.com/hask/ and use http://learnyouahaskell.com/chapters to fill in any gaps and for the exercises |
| 04:42:20 | <dsal> | I'm `foldM`ing over `some parser` -- is there a thing that's a sort of combination of `foldM` and `some` that would let me do these things together? |
| 04:42:37 | <dsal> | In my parser, it basically consumes all the stuff into a list and then folds it, which defers failures. |
| 04:43:22 | <boxscape> | JSharp tusko : I don't think LYAH has exercises. https://www.seas.upenn.edu/~cis194/spring13/lectures.html for example does, though |
| 04:44:15 | <JSharp> | boxscape tusko ... *chuckles* ... actually you may be right about that lack of exercises; I coded along with it, which is probably why I misremembered that. |
| 04:44:46 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 265 seconds) |
| 04:47:19 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
| 04:47:44 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 04:47:45 | × | lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
| 04:48:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:49:24 | <sm[m]> | glguy: is it ? I'm.. getting used to it. IntelliJ IDEA or VS Code helps (neither is perfect, alas) |
| 04:49:46 | <glguy> | I just mean that it touches a lot of files is all |
| 04:49:59 | <glguy> | Do either of those IDEs help you keep track of what you've reviewed so far? |
| 04:50:32 | <sm[m]> | it does indeed, the changes are mostly simple in this case fortunately. Yes, at least one of them lets you mark files as seen |
| 04:51:01 | <sm[m]> | VS Code |
| 04:51:32 | <sm[m]> | VS Code doesn't let you add code comments when reviewing by commit though; only if you review all file changes at once |
| 04:51:33 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 04:52:11 | <sm[m]> | also it doesn't let you collapse unchanged parts of files for a compact view of diffs. That's a nice feature in IDEA |
| 04:52:33 | <sm[m]> | but, Code can navigate your code with hls. I wish IDEA could |
| 04:52:51 | <glguy> | yeah, hls makes a big difference |
| 04:53:09 | <sm[m]> | IDEAs find is so good it almost doesn't matter, but.. |
| 04:54:00 | <boxscape> | can hls show you usage sites of names? |
| 04:54:29 | <sm[m]> | yes, I believe that's a normal feature now |
| 04:54:32 | <boxscape> | ah, nice |
| 04:55:00 | <sm[m]> | oh, maybe the thing that doesn't work yet is usage sites in other packages within your project. Not sure |
| 04:55:13 | <boxscape> | ah, well, understandable |
| 04:55:29 | <sm[m]> | bah :) |
| 05:02:31 | × | AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.) |
| 05:07:29 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 265 seconds) |
| 05:08:27 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 05:09:57 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
| 05:10:01 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:12:30 | → | Morrow_ joins (~MorrowM_@147.161.13.60) |
| 05:13:01 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds) |
| 05:13:32 | → | chaosite joins (~chaosite@user/chaosite) |
| 05:14:51 | ← | justsomeguy parts (~justsomeg@user/justsomeguy) (WeeChat 3.0.1) |
| 05:17:10 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 05:18:26 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 252 seconds) |
| 05:22:53 | → | jneira joins (~jneira@212.8.115.226) |
| 05:24:45 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
| 05:25:44 | <outoftime> | sm[m]: aren't you using emacs/vim? |
| 05:26:37 | → | gentauro_ joins (~gentauro@taa-cgn11.kviknet.dk) |
| 05:27:17 | <sm[m]> | outoftime: emacs too, yes |
| 05:27:56 | <sm[m]> | I fire up code or IDEA for some coding and especially for reviewing PRs |
| 05:28:28 | → | deshalb joins (~deshalb@user/deshalb) |
| 05:28:41 | → | gzj joins (~GZJ0X@96.45.188.88.16clouds.com) |
| 05:29:21 | <sm[m]> | is there a way to automatically generate the non-TH boilerplate code for lenses ? |
| 05:30:12 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 265 seconds) |
| 05:33:24 | → | chomwitt joins (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) |
| 05:34:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:36:33 | <outoftime> | `liftM2 (,) [0..12000] [0..12000]` can this be improved in terms of speed? |
| 05:37:12 | <Axman6> | not really |
| 05:40:26 | <jophish> | <outoftime "`liftM2 (,) [0..12000] [0..12000"> What are you trying to do with this though? |
| 05:45:18 | <outoftime> | jophish: https://pastebin.ubuntu.com/p/kdjHGFT3tG/ |
| 05:46:08 | × | Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in) |
| 05:46:22 | × | jneira_ quits (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 258 seconds) |
| 05:46:26 | → | Xnuk joins (~xnuk@45.76.202.58) |
| 05:46:27 | → | killsushi joins (~killsushi@user/killsushi) |
| 05:46:50 | <outoftime> | JSharp: I have no idea why, but executable made with stack take 12 seconds to finish with -O2 option passed, but when I'm building same code with GHC in my system, executable take 5 seconds to finnish |
| 05:48:29 | <Axman6> | outoftime: that's probably because you're sorting them. what you can do is, numerator each numerator, generate each in value in order by using [abs, abs-1 .. 1, and then writing a merge function which merged sorted lists |
| 05:48:37 | <outoftime> | Maybe it is because stack has separate lib module. Anyway, profiling didn't help. |
| 05:48:54 | <outoftime> | Axman6: genRange is like instant |
| 05:49:06 | × | TheCoffeMaker_ quits (~TheCoffeM@125-121-245-190.fibertel.com.ar) (Quit: So long and thanks for all the fish) |
| 05:49:19 | <Axman6> | is last genRange instance? |
| 05:49:27 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 05:50:11 | <Axman6> | I think you might actually get better performance if you use liftM2 (,) (genRange abs) (genRange abs) rather than forcing them to point ot the same value |
| 05:50:20 | <outoftime> | `where normalized = genRange abs` this should not be executed multiple times, am I wrong? |
| 05:50:47 | <Axman6> | it will cause the whole list to be retained in memory though |
| 05:51:26 | <jophish> | keeping that product in memory is also like 3GB, perhaps there's a way you can stream it to whatever's consuming it |
| 05:51:30 | <jophish> | (maybe you're doing that already) |
| 05:52:09 | <Axman6> | hmm, actually I think both ways will force it to be retained anyway |
| 05:52:16 | <outoftime> | jophish: right now I'm just taking length of that list, no processing done... |
| 05:52:31 | <jophish> | ah, k |
| 05:52:46 | <outoftime> | I mean it gets consumed |
| 05:53:00 | <jophish> | <Axman6 "hmm, actually I think both ways "> yeah, the little lists, but they're only 12001 elements long right? |
| 05:53:23 | <Axman6> | depends on abs |
| 05:53:29 | <outoftime> | 12500 or so |
| 05:53:49 | <outoftime> | total 146M elements |
| 05:56:36 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:57:19 | → | chaosite joins (~chaosite@user/chaosite) |
| 05:58:48 | <qrpnxz> | i was able to derive num, fractional, and floating, but not real |
| 06:01:37 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 06:02:28 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 258 seconds) |
| 06:04:36 | → | chaosite joins (~chaosite@user/chaosite) |
| 06:05:58 | × | Morrow_ quits (~MorrowM_@147.161.13.60) (Ping timeout: 265 seconds) |
| 06:06:48 | <outoftime> | Axman6: I'm confused. Does `normalized` get reevaluated on each iteration of `foldM2` or it is just clonned? Profiler says that `main` took 7% time, while `initials` 92%, doesn't looks like `getRage` have any noticable execution time. |
| 06:07:15 | <outoftime> | Do you know any way to make parallel execution? |
| 06:07:23 | <Axman6> | no, normalised basically gives a name for a single object in the heap that both uses reference |
| 06:08:40 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 06:10:18 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 268 seconds) |
| 06:10:19 | → | fef joins (~thedawn@user/thedawn) |
| 06:12:06 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 06:12:32 | → | aman joins (~aman@user/aman) |
| 06:12:46 | → | fef joins (~thedawn@user/thedawn) |
| 06:14:21 | → | CookE[] joins (~thedawn@user/thedawn) |
| 06:15:13 | <qrpnxz> | what is the purpose of the GHC hierarchy? |
| 06:17:42 | <Axman6> | it |
| 06:17:48 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 06:18:08 | <Axman6> | it's where definitions specific to GHC live, many of which are reexported in standard modules like Prelude, Data.List etc. |
| 06:18:09 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:23:10 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 06:23:29 | <Axman6> | they often contain functions which aren't part of what is required from a haskell compiler according to the report, for example things like powModSecInteger is something provided by integer-gmp, which provides timing safe exponentiation of integers modulo another integer https://hackage.haskell.org/package/integer-gmp-1.0.3.0/docs/GHC-Integer-GMP-Internals.html#v:powModSecInteger |
| 06:25:04 | × | mud quits (~mud@user/kadoban) (Ping timeout: 244 seconds) |
| 06:25:26 | → | awth13 joins (~user@user/awth13) |
| 06:26:53 | → | mud joins (~mud@user/kadoban) |
| 06:29:02 | → | michalz joins (~michalz@185.246.204.125) |
| 06:29:56 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 06:30:49 | → | leeb_ joins (~leeb@KD111239153068.au-net.ne.jp) |
| 06:31:18 | CookE[] | is now known as fef |
| 06:34:00 | × | leeb quits (~leeb@KD111239153143.au-net.ne.jp) (Ping timeout: 265 seconds) |
| 06:34:31 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 06:35:05 | × | harry quits (~harry@92.234.0.237) (Ping timeout: 272 seconds) |
| 06:35:27 | × | mud quits (~mud@user/kadoban) (Ping timeout: 265 seconds) |
| 06:36:27 | → | mud joins (~mud@user/kadoban) |
| 06:36:47 | → | berberman joins (~berberman@user/berberman) |
| 06:38:06 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 264 seconds) |
| 06:42:42 | × | mud quits (~mud@user/kadoban) (Ping timeout: 265 seconds) |
| 06:43:36 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 06:44:18 | × | tcard quits (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
| 06:45:42 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:d7c7:704e:32f2:af10) |
| 06:47:10 | × | michalz quits (~michalz@185.246.204.125) (Remote host closed the connection) |
| 06:49:40 | → | michalz joins (~michalz@185.246.204.114) |
| 06:50:46 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds) |
| 06:52:08 | → | chaosite joins (~chaosite@user/chaosite) |
| 06:53:06 | → | tcard joins (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) |
| 06:54:52 | <talismanick> | Is it worth using vabal nowadays? Ironically, I had to go back in versions with ghcup manually to install it. |
| 06:55:39 | <dminuoso> | talismanick: Perhaps there's some issue with ghcup or the way you use it. |
| 06:55:57 | <dminuoso> | cabal-install is not better or worse than the alternatives like stack |
| 06:56:21 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 06:56:28 | <dminuoso> | Id say the community is largely split 47/47/6 on cabal/stack/nix |
| 06:57:15 | <talismanick> | dminuoso: Nothing wrong here. It's just that vabal depends on base base > 4.11.0 and < 4.13.0 |
| 06:57:17 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 258 seconds) |
| 06:57:34 | <dminuoso> | Hold on, vabal? |
| 06:57:40 | <tomsmeding> | https://github.com/vabal/vabal |
| 06:57:42 | <talismanick> | so I used ghcup to fetch 4.12.0 and installed vabal |
| 06:57:42 | tomsmeding | thinks |
| 06:57:52 | × | charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 268 seconds) |
| 06:57:58 | <dminuoso> | Okay, I really thought that was just a typo and you meant cabal |
| 06:58:00 | → | mpt joins (~tom@2a02:908:1862:49e0::3) |
| 06:58:14 | → | charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 06:58:31 | <talismanick> | I have befuddled once again |
| 06:58:45 | <dminuoso> | tomsmeding: vabal hasnt been updated in close to 2 years it seems |
| 06:58:50 | <dminuoso> | Or talismanick. |
| 06:58:54 | <dminuoso> | Two nicks with t is hard. |
| 06:59:00 | <tomsmeding> | yes |
| 06:59:09 | <tomsmeding> | we befuddle once more |
| 06:59:26 | → | chaosite joins (~chaosite@user/chaosite) |
| 06:59:32 | <dminuoso> | vabal does indeed look like a nice thing. |
| 06:59:51 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:00:26 | <talismanick> | I came across it while trying to build clckwrks (which itself appears to have languished for a time and needs an older version of GHC) |
| 07:00:34 | <dminuoso> | So I guess vabal just does constraint solving, and then ghcup's me into the most recent ghc that works with the build plan? |
| 07:00:45 | <dminuoso> | (constraint solving by presumably calling into Cabal-lib) |
| 07:01:43 | <talismanick> | Speaking of which, are there maintained alternatives to LambdaCMS and clckwrks? Once I get it to compile, clckwrks looks promising. |
| 07:02:03 | <talismanick> | (It has recent commits, but it seems to be in "maintenance mode" AFAICT) |
| 07:03:23 | → | chele joins (~chele@user/chele) |
| 07:04:24 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 252 seconds) |
| 07:05:04 | <talismanick> | I could set the GHC version manually via ghcup and be on my way, but aren't we in the 21st century? |
| 07:06:47 | <dminuoso> | talismanick: Just remember that ghcup manipulates global state |
| 07:06:54 | → | Morrow joins (~MorrowM_@147.161.13.60) |
| 07:08:42 | <cdsmith> | 0 |
| 07:08:52 | <talismanick> | dminuoso: That's what I mean. I feel like a caveman, peeking into the cabalfile for this and setting the GHC version for each project, one at a time. |
| 07:09:00 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 07:10:51 | <dminuoso> | talismanick: I dont mean to sway you away from vabal, but you could also use nix-shell to do the same thing |
| 07:10:58 | <lortabac> | IIRC there was this idea of integrating vabal's functionality into ghcup, not sure if it's still the case |
| 07:11:04 | <dminuoso> | At least for that I could help you, as I have no experience with vabal |
| 07:11:05 | talismanick | summons his courage and tries "vabal configure" |
| 07:11:08 | <lortabac> | https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/99 |
| 07:11:19 | <talismanick> | already regretting this |
| 07:11:45 | <dminuoso> | talismanick: nix-shell has the unique benefit that this doesnt need any rely on global state management of "the active version" |
| 07:11:56 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:11:58 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:12:26 | <dminuoso> | It doesnt do the "figure out a matching GHC version" part, but it lets you easily keep different cabal/ghc/(any dependency) versions across different projects |
| 07:12:26 | <talismanick> | dminuoso: I once tried to configure Nix (atop Void Linux). Never again. No hard feelings, but "nope". |
| 07:12:40 | × | sekun quits (~sekun@180.190.208.125) (Ping timeout: 265 seconds) |
| 07:12:41 | <talismanick> | Seems cool, gave me a migraine |
| 07:12:50 | dminuoso | shrugs |
| 07:13:49 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds) |
| 07:15:54 | × | sheepduck quits (~sheepduck@user/sheepduck) (Remote host closed the connection) |
| 07:16:04 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:16:31 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:17:06 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 240 seconds) |
| 07:18:33 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan) |
| 07:20:52 | → | leah2 joins (~leah@vuxu.org) |
| 07:23:06 | → | vpan joins (~vilius@212.117.1.172) |
| 07:23:35 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 07:24:04 | → | trcc joins (~trcc@users-1190.st.net.au.dk) |
| 07:25:59 | × | fendor quits (~fendor@178.115.129.107.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 07:28:05 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 268 seconds) |
| 07:29:08 | × | trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds) |
| 07:30:07 | → | trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 07:30:29 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 07:31:14 | <talismanick> | Actually... |
| 07:32:11 | <talismanick> | nvm |
| 07:34:05 | × | mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 252 seconds) |
| 07:39:14 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 07:41:26 | × | tusko quits (~yeurt@user/tusko) (Remote host closed the connection) |
| 07:41:43 | → | tusko joins (~yeurt@user/tusko) |
| 07:45:09 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:46:55 | → | chaosite joins (~chaosite@user/chaosite) |
| 07:47:06 | × | euandreh_ quits (~euandreh@2804:14c:33:9fe5:3fd5:92e4:b3b4:44e0) (Ping timeout: 240 seconds) |
| 07:48:08 | → | euandreh_ joins (~euandreh@2804:14c:33:9fe5:a60:af0:9ad8:d1f7) |
| 07:52:04 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 252 seconds) |
| 07:52:04 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
| 07:53:01 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 07:54:30 | → | chaosite joins (~chaosite@user/chaosite) |
| 07:55:37 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection) |
| 07:58:37 | × | bone-baboon quits (~bone-babo@37.19.198.11) (Ping timeout: 258 seconds) |
| 07:59:33 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 265 seconds) |
| 08:11:07 | <outoftime> | How to move from [Maybe a] to Maybe [a], disgard Nothing and collect Just a values? `sequence` returns Nothing if some of elements is nothing. |
| 08:11:09 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:11:59 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:12:35 | → | BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com) |
| 08:14:03 | → | chaosite joins (~chaosite@user/chaosite) |
| 08:14:20 | × | trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 268 seconds) |
| 08:14:23 | <maerwald> | talismanick: I believe Franciman is vabal maintainer |
| 08:15:02 | <peddie> | outoftime: catMaybes |
| 08:15:31 | <peddie> | :t catMaybe |
| 08:15:32 | <lambdabot> | error: |
| 08:15:32 | <lambdabot> | • Variable not in scope: catMaybe |
| 08:15:32 | <lambdabot> | • Perhaps you meant one of these: |
| 08:15:41 | <merijn> | :t catMaybes |
| 08:15:42 | <lambdabot> | [Maybe a] -> [a] |
| 08:15:45 | <merijn> | Alternatively |
| 08:15:52 | <merijn> | Don't make a list of Maybe a to begin with |
| 08:15:54 | <merijn> | :t mapMaybe |
| 08:15:56 | <lambdabot> | (a -> Maybe b) -> [a] -> [b] |
| 08:16:59 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 252 seconds) |
| 08:16:59 | <maerwald> | talismanick: also, feel free to provide patches for https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/99 |
| 08:17:09 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 08:17:32 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:17:32 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:18:13 | × | xff0x quits (~xff0x@2001:1a81:5256:f800:ed61:c578:88bf:885a) (Ping timeout: 244 seconds) |
| 08:18:53 | × | chaosite quits (~chaosite@user/chaosite) (Ping timeout: 265 seconds) |
| 08:19:02 | → | xff0x joins (~xff0x@port-92-193-228-27.dynamic.as20676.net) |
| 08:19:56 | × | Morrow quits (~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds) |
| 08:28:56 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 08:33:30 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 08:37:51 | → | Nak50 joins (~Nak@2604:3d08:2678:cc00::4b6a) |
| 08:40:30 | × | gentauro_ quits (~gentauro@taa-cgn11.kviknet.dk) (Changing host) |
| 08:40:30 | → | gentauro_ joins (~gentauro@user/gentauro) |
| 08:42:08 | → | Guest25 joins (~Guest25@l37-195-240-36.novotelecom.ru) |
| 08:45:54 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
| 08:47:36 | → | __monty__ joins (~toonn@user/toonn) |
| 08:54:18 | → | johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
| 08:54:34 | <phaazon> | just wrote a bunch of linear functions… it felt good |
| 08:55:39 | × | Guest25 quits (~Guest25@l37-195-240-36.novotelecom.ru) (Quit: Client closed) |
| 08:56:01 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 08:57:13 | → | yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se) |
| 08:59:08 | → | hegstal joins (~hegstal@2a02:c7f:7604:8a00:5796:3b40:5569:c90) |
| 09:00:18 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 240 seconds) |
| 09:01:58 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:04:15 | → | bontaq joins (~user@ool-18e47f8d.dyn.optonline.net) |
| 09:08:43 | × | Nak50 quits (~Nak@2604:3d08:2678:cc00::4b6a) (Ping timeout: 246 seconds) |
| 09:10:00 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 09:10:47 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 09:11:23 | → | jneira joins (~jneira@212.8.115.226) |
| 09:12:32 | × | azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 265 seconds) |
| 09:14:03 | → | azeem joins (~azeem@176.201.6.138) |
| 09:17:47 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:23:56 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
| 09:29:51 | × | azeem quits (~azeem@176.201.6.138) (Ping timeout: 258 seconds) |
| 09:32:00 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 09:33:05 | → | azeem joins (~azeem@176.201.6.138) |
| 09:33:07 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 09:36:13 | <outoftime> | May I ask what you think about this code https://pastebin.ubuntu.com/p/Z9ZQs9k84s/ ? |
| 09:36:18 | → | Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) |
| 09:38:15 | × | killsushi quits (~killsushi@user/killsushi) (Quit: Leaving) |
| 09:43:54 | × | azeem quits (~azeem@176.201.6.138) (Ping timeout: 252 seconds) |
| 09:43:56 | × | curiousggay_ quits (~curiousgg@178.217.208.8) (Remote host closed the connection) |
| 09:48:42 | → | azeem joins (~azeem@176.201.6.138) |
| 09:49:08 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection) |
| 09:49:20 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) |
| 09:49:36 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 09:49:57 | → | Scotty_Trees joins (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) |
| 09:56:22 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 09:56:38 | → | xkuru joins (~xkuru@user/xkuru) |
| 09:57:24 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 09:58:28 | × | azeem quits (~azeem@176.201.6.138) (Ping timeout: 268 seconds) |
| 09:58:36 | × | BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Read error: Connection reset by peer) |
| 09:58:53 | → | BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com) |
| 09:59:14 | → | azeem joins (~azeem@176.201.6.138) |
| 10:00:38 | <dminuoso> | outoftime: A bunch of small typical mistakes |
| 10:00:46 | <dminuoso> | `[x] ++ ...` is better written as `x : ...` |
| 10:00:56 | <dminuoso> | `putStrLn . show` is better written as `print` |
| 10:01:12 | <dminuoso> | You seem to be overly using ($), consider using composition or parens perhaps |
| 10:01:55 | <merijn> | Looks mostly fine |
| 10:02:03 | <merijn> | some style differences from how I'd write it |
| 10:02:23 | <dminuoso> | Things like mapM_ or liftM2 are a bit odd, Id just use the applicative versions instead out of habit |
| 10:02:34 | <dminuoso> | (the monadic ones should be thrown out IMO) |
| 10:02:44 | <merijn> | last is probably a bad one too use |
| 10:02:47 | → | dhil joins (~dhil@195.213.192.47) |
| 10:03:08 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 252 seconds) |
| 10:03:27 | × | xkuru quits (~xkuru@user/xkuru) (Quit: Unvirtualizing) |
| 10:03:30 | <merijn> | partial and inefficient, but whether it can be easily replaced depends on the algorithm and I'm too lazy to understand that :p |
| 10:03:53 | → | xkuru joins (~xkuru@user/xkuru) |
| 10:04:08 | <merijn> | I feel 'f' can be rewritten into a helper + iterate too |
| 10:04:15 | <boxscape> | you can replace (head . group) by the versions from Data.List.NonEmpty if you want to avoid using head (which many people do since it's partial) |
| 10:04:20 | <merijn> | :t iterate |
| 10:04:21 | <lambdabot> | (a -> a) -> a -> [a] |
| 10:04:22 | <dminuoso> | The amount of group/sort suggests you might perhaps want to use a map instead. |
| 10:04:28 | → | qbt joins (~edun@user/edun) |
| 10:04:34 | <dminuoso> | From containers |
| 10:04:39 | <merijn> | boxscape: it's not partial there, since group never returns empty lists |
| 10:04:48 | <merijn> | > iterate (+1) 0 |
| 10:04:50 | <lambdabot> | [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,2... |
| 10:05:16 | <boxscape> | merijn: sure, but a mistake down the line could transform it into a partial use. Not sure how likely that is, I just like not having head in my code at all. |
| 10:05:35 | <boxscape> | (er, also I meant (map head . group)) |
| 10:06:53 | × | Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) (Quit: Leaving) |
| 10:07:02 | <boxscape> | personally I'd probably write `pair@(z, c)` instead of pattern matching on pair in the where block |
| 10:07:08 | → | Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) |
| 10:08:16 | × | talismanick quits (~user@2601:644:8502:d700::94c9) (Ping timeout: 244 seconds) |
| 10:10:01 | → | fendor joins (~fendor@178.115.129.107.wireless.dyn.drei.com) |
| 10:10:49 | <Ariakenom> | this head is cute |
| 10:10:49 | <Ariakenom> | allSame xs = all (head xs ==) xs |
| 10:10:55 | howdy`` | is now known as howdy |
| 10:11:08 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 10:11:44 | → | brandonh joins (~brandonh@151.34.105.205) |
| 10:11:57 | × | brandonh quits (~brandonh@151.34.105.205) (Client Quit) |
| 10:15:00 | <boxscape> | allSame = and . (zipWith (==) <*> tail) -- I might do this to avoid head but yeah yours reads nicer |
| 10:15:06 | <boxscape> | wait |
| 10:15:08 | <boxscape> | % tail [] |
| 10:15:08 | <yahb> | boxscape: *** Exception: Prelude.tail: empty list |
| 10:15:12 | <boxscape> | whoops |
| 10:15:30 | × | raoul quits (~raoul@nomnomnomnom.co.uk) (Remote host closed the connection) |
| 10:15:30 | → | f0c1s joins (~f0c1s@136.185.130.32) |
| 10:15:55 | <__monty__> | Tail is no better than head? |
| 10:16:06 | <boxscape> | yeah that's what I just realized |
| 10:16:08 | <boxscape> | I guess I would use drop 1 |
| 10:16:09 | <__monty__> | You seem kinda obsessed with head for no reason. |
| 10:16:13 | <boxscape> | wait that doesn't help |
| 10:16:18 | <boxscape> | oh no it does |
| 10:16:29 | <__monty__> | > drop 1 [] |
| 10:16:29 | <boxscape> | __monty__: I just like to not have any partial functions, period |
| 10:16:31 | <lambdabot> | [] |
| 10:16:43 | <__monty__> | It does not help. |
| 10:16:48 | <boxscape> | why not? |
| 10:16:51 | <__monty__> | tail [] |
| 10:16:56 | <__monty__> | > tail [] |
| 10:16:57 | <lambdabot> | *Exception: Prelude.tail: empty list |
| 10:17:13 | <__monty__> | Oh, nvm, I'm wrong this time. |
| 10:20:12 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 10:21:00 | → | f0c1s_ joins (~f0c1s@106.197.230.212) |
| 10:22:44 | → | Morrow joins (~MorrowM_@147.161.13.60) |
| 10:23:35 | × | f0c1s quits (~f0c1s@136.185.130.32) (Ping timeout: 265 seconds) |
| 10:24:33 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 265 seconds) |
| 10:24:52 | → | DNH joins (~textual@8.44.0.30) |
| 10:27:42 | → | dunkeln joins (~dunkeln@188.71.193.140) |
| 10:28:41 | × | dunkeln quits (~dunkeln@188.71.193.140) (Client Quit) |
| 10:28:57 | → | dunkeln joins (~dunkeln@188.71.193.140) |
| 10:29:52 | × | qbt quits (~edun@user/edun) (Ping timeout: 265 seconds) |
| 10:35:47 | × | azeem quits (~azeem@176.201.6.138) (Ping timeout: 258 seconds) |
| 10:36:26 | → | azeem joins (~azeem@176.201.6.138) |
| 10:37:19 | × | dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 258 seconds) |
| 10:37:47 | pie__bnc | is now known as pie_ |
| 10:38:04 | pie_ | is now known as __ |
| 10:38:06 | __ | is now known as pie_ |
| 10:38:22 | pie_ | is now known as pie__ |
| 10:38:23 | pie__ | is now known as pie_ |
| 10:38:32 | → | MorrowM joins (~MorrowM_@147.161.9.12) |
| 10:39:02 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:39:09 | pie_ | is now known as the |
| 10:39:12 | the | is now known as pie_ |
| 10:41:38 | × | Morrow quits (~MorrowM_@147.161.13.60) (Ping timeout: 268 seconds) |
| 10:42:06 | → | mpt joins (~tom@2a02:908:1862:49e0::3) |
| 10:42:16 | → | dunkeln joins (~dunkeln@188.71.193.140) |
| 10:45:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 10:46:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:47:41 | → | chisui joins (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) |
| 10:49:02 | × | DNH quits (~textual@8.44.0.30) (Ping timeout: 268 seconds) |
| 10:50:07 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 10:50:42 | → | kuribas joins (~user@ptr-25vy0ia3kl0vdl4qmg0.18120a2.ip6.access.telenet.be) |
| 10:51:44 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 10:52:01 | × | GIANTWORLDKEEPER quits (~pjetcetal@2.95.227.207) (Remote host closed the connection) |
| 10:52:23 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:56:14 | → | DNH joins (~DNH@8.43.122.6) |
| 10:56:26 | × | MorrowM quits (~MorrowM_@147.161.9.12) (Ping timeout: 268 seconds) |
| 10:56:31 | → | raoul joins (~raoul@nomnomnomnom.co.uk) |
| 10:57:38 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:57:50 | → | hseg joins (~gesh@195.192.229.14) |
| 10:57:56 | <chisui> | Hey, has someone any clue why ghc produces this error? https://gist.github.com/chisui/7b558c2d63e3a7fcffc67ae714b69714 |
| 10:57:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:58:56 | <chisui> | The QuantifiedConstraint shouldn't imply that the instance of Typeable is user defined or am I missing something? This looks like a bug to me. |
| 10:59:55 | → | mekeor joins (~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4) |
| 11:02:04 | × | mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 268 seconds) |
| 11:03:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 11:03:21 | × | juhp quits (~juhp@128.106.188.66) (Remote host closed the connection) |
| 11:03:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:03:50 | × | pbrisbin quits (~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 252 seconds) |
| 11:05:50 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:05:54 | <boxscape> | chisui: that does look weird, from a quick look at the GHC source code I can only find that error message used in relation to checking instance heads |
| 11:06:42 | <int-e> | chisui: https://paste.debian.net/1202126/ may be a viable workaround |
| 11:07:06 | → | MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) |
| 11:07:25 | <int-e> | but yeah, it does look like a bug |
| 11:07:53 | <chisui> | Thanks. |
| 11:08:04 | × | mekeor quits (~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4) (Remote host closed the connection) |
| 11:10:25 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 11:13:28 | <boxscape> | chisui: FWIW unless there really is a reason to not allow this it looks like `not quantified_constraint` is missing in this guard https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Tc/Validity.hs#L1539-1542 |
| 11:14:47 | <chisui> | boxscape: I'll mention that in the issue. |
| 11:15:05 | <boxscape> | 👍️ |
| 11:15:18 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds) |
| 11:16:59 | <merijn> | Achievement unlocked: GHC bug ;) |
| 11:18:58 | → | hmmmas joins (~chenqisu1@183.217.200.246) |
| 11:21:35 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 11:25:07 | → | warnz joins (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) |
| 11:27:23 | × | hseg quits (~gesh@195.192.229.14) (Ping timeout: 265 seconds) |
| 11:27:52 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 11:29:27 | × | warnz quits (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Ping timeout: 258 seconds) |
| 11:30:00 | <chisui> | If someones interested: https://gitlab.haskell.org/ghc/ghc/-/issues/20033 |
| 11:31:54 | × | hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.) |
| 11:31:54 | → | Franciman joins (~francesco@openglass.it) |
| 11:32:06 | <Franciman> | maerwald: you available? |
| 11:32:33 | <maerwald> | barely |
| 11:32:49 | <Franciman> | ok np I wanted to talk to you about ghcup satisfy |
| 11:32:56 | <Franciman> | it can wait |
| 11:33:43 | × | danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.2) |
| 11:33:59 | → | fef joins (~thedawn@user/thedawn) |
| 11:34:19 | × | wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal) |
| 11:34:40 | <maerwald> | there is #haskell-ghcup |
| 11:35:01 | <Franciman> | great |
| 11:36:43 | → | danso joins (~danso@23-233-111-52.cpe.pppoe.ca) |
| 11:36:49 | × | f0c1s_ quits (~f0c1s@106.197.230.212) (Quit: Leaving) |
| 11:37:47 | → | f0c1s joins (~f0c1s@136.185.130.32) |
| 11:37:51 | → | f0c1s_ joins (~f0c1s@136.185.130.32) |
| 11:37:55 | × | f0c1s_ quits (~f0c1s@136.185.130.32) (Remote host closed the connection) |
| 11:38:29 | × | finsternis quits (~X@23.226.237.192) (Remote host closed the connection) |
| 11:41:22 | × | Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection) |
| 11:42:00 | → | Axman6 joins (~Axman6@user/axman6) |
| 11:43:16 | → | jakzale joins (uid499518@id-499518.charlton.irccloud.com) |
| 11:46:17 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
| 11:46:22 | × | BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds) |
| 11:46:28 | → | xff0x_ joins (~xff0x@2001:1a81:5270:f300:fe1c:5171:b5b6:4cc4) |
| 11:48:37 | × | xff0x quits (~xff0x@port-92-193-228-27.dynamic.as20676.net) (Ping timeout: 258 seconds) |
| 11:51:23 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 11:51:31 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 11:52:41 | → | BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com) |
| 11:59:57 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 12:00:30 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 12:00:54 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 12:01:46 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 12:03:58 | <shane> | I'm looking for a thing, but I don't know what it's called. I guess I'm looking for a "category", that's kind of like (->), except the output is always solely a "subproduct" of the input? |
| 12:04:31 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 244 seconds) |
| 12:05:42 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Ping timeout: 264 seconds) |
| 12:07:52 | <shane> | So like, if we were to call this thing ~>, the only two valid implementations of `(a, a) -> a` would be `fst` and `snd` |
| 12:08:35 | <shane> | I suppose that's true by parametricity if `a` is polymorphic |
| 12:08:46 | <dminuoso> | shane: Mmm, Lens definitely fits that description. |
| 12:08:47 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 12:08:54 | → | Axman6 joins (~Axman6@user/axman6) |
| 12:09:18 | <dminuoso> | i.e. `Lens' S T` gives you T as a sub-part of S |
| 12:09:35 | <shane> | I suppose, if it's a law abiding lens |
| 12:09:54 | <shane> | Actually it doesn't even have to be law breaking |
| 12:10:16 | <dminuoso> | Well I guess its not entirely true |
| 12:10:30 | <dminuoso> | Try and find a precise way of saying what "subproduct" exactly means |
| 12:10:36 | <shane> | Yes, I'm trying :) |
| 12:10:40 | <dminuoso> | Because one could argue that: |
| 12:10:44 | <dminuoso> | split :: a -> (a, a) |
| 12:10:48 | <chisui> | shane: do you mean a cartesian category? |
| 12:10:53 | <dminuoso> | gives you a subproduct |
| 12:11:03 | <dminuoso> | this gets a bit more interesting with impredicativity in the mix |
| 12:11:12 | <shane> | chisui: Maybe, that sounds promising |
| 12:12:01 | <dminuoso> | Mmm, come to think of it I think chisui is right. This is just a cartesian category |
| 12:12:22 | <shane> | Let's forget about the `(a, a) ~> a` example, because that's true by parametricity. If you specialise it to `(Int, Int) ~> Int`, I want it to be such that the output `Int` has to be one of the two given ones. It can never just be `1` or `2` etc. Or even `negate a` or `a + 1` |
| 12:12:37 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 12:12:42 | <shane> | Okay, I will look up cartesian category |
| 12:12:50 | <shane> | Are there any Haskell libraries that implement something like that? |
| 12:12:55 | <dminuoso> | Or actually a precartesian category |
| 12:12:57 | <dminuoso> | Yes |
| 12:12:59 | <dminuoso> | https://hackage.haskell.org/package/category-extras-0.52.0/docs/Control-Category-Cartesian.html#t:PreCartesian |
| 12:13:05 | → | fef joins (~thedawn@user/thedawn) |
| 12:13:36 | <shane> | Okay, thanks! |
| 12:16:00 | → | hseg joins (~gesh@195.192.229.14) |
| 12:16:24 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 12:16:31 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 12:16:50 | → | lavaman joins (~lavaman@98.38.249.169) |
| 12:17:13 | <chisui> | shane: what do you mean by "can never just be `1` or `2` etc. Or even `negate a` or `a + 1`"? wouldn't `fst (1, 2)` give you `1` in your example? |
| 12:17:41 | → | dunkeln_1 joins (~dunkeln@94.129.65.28) |
| 12:17:49 | <dminuoso> | Well I guess he just wants a categorical product |
| 12:18:07 | <dminuoso> | Such that this commutes https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/CategoricalProduct-03.svg/560px-CategoricalProduct-03.svg.png |
| 12:18:08 | × | dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 265 seconds) |
| 12:18:31 | <dminuoso> | maybe cartesian category was too strong, even |
| 12:19:28 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 12:19:30 | <chisui> | what throws me off a little is that he wants `(a, a)` a categoriacal product would be `(a, b)` |
| 12:19:31 | <shane> | chisui: I suppose I mean `const 1` or `const 2`. |
| 12:19:54 | → | shapr joins (~user@2601:7c0:8180:89d0:e21a:92b8:d08a:508f) |
| 12:20:16 | <dminuoso> | shane: Look into what a product is in category theory. |
| 12:20:33 | <dminuoso> | I suspect you're chasing the commuting diagram I linked above |
| 12:20:56 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 12:21:12 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Ping timeout: 252 seconds) |
| 12:26:09 | euandreh_ | is now known as euandreh |
| 12:31:10 | × | hueso quits (~root@user/hueso) (Ping timeout: 258 seconds) |
| 12:32:33 | → | GIANTWORLDKEEPER joins (~pjetcetal@2.95.227.207) |
| 12:33:36 | × | dunkeln_1 quits (~dunkeln@94.129.65.28) (Ping timeout: 265 seconds) |
| 12:36:42 | → | egoist joins (~egoist@186.235.85.100) |
| 12:38:34 | → | hueso joins (~root@user/hueso) |
| 12:40:03 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 12:40:17 | → | TranquilEcho joins (~grom@user/tranquilecho) |
| 12:40:22 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 265 seconds) |
| 12:40:53 | × | azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer) |
| 12:42:17 | → | azeem joins (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) |
| 12:44:26 | → | pbrisbin joins (~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) |
| 12:44:43 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:45:03 | × | xff0x_ quits (~xff0x@2001:1a81:5270:f300:fe1c:5171:b5b6:4cc4) (Ping timeout: 268 seconds) |
| 12:46:40 | → | xff0x_ joins (~xff0x@2001:1a81:5271:d900:c621:6547:99a4:fbb5) |
| 12:47:23 | → | fef joins (~thedawn@user/thedawn) |
| 12:49:30 | → | cfricke joins (~cfricke@user/cfricke) |
| 12:50:54 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 252 seconds) |
| 12:54:15 | → | dunkeln_ joins (~dunkeln@94.129.65.28) |
| 12:54:56 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 258 seconds) |
| 12:55:49 | → | juhp joins (~juhp@128.106.188.66) |
| 12:55:59 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 12:56:01 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 12:56:02 | × | xff0x_ quits (~xff0x@2001:1a81:5271:d900:c621:6547:99a4:fbb5) (Ping timeout: 250 seconds) |
| 12:56:48 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:57:44 | → | turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it) |
| 12:57:44 | × | turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
| 12:57:44 | → | turlando joins (~turlando@user/turlando) |
| 12:58:40 | → | xff0x_ joins (~xff0x@port-92-193-138-158.dynamic.as20676.net) |
| 13:00:02 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
| 13:00:58 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 13:01:09 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 13:01:13 | → | alx741 joins (~alx741@181.196.68.156) |
| 13:03:49 | × | hueso quits (~root@user/hueso) (Read error: Connection reset by peer) |
| 13:04:34 | → | hueso joins (~root@user/hueso) |
| 13:04:50 | → | sekun joins (~sekun@180.190.208.125) |
| 13:05:11 | → | xff0x joins (~xff0x@2001:1a81:5272:1d00:a8b6:9f02:264b:fce) |
| 13:06:52 | × | xff0x_ quits (~xff0x@port-92-193-138-158.dynamic.as20676.net) (Ping timeout: 250 seconds) |
| 13:07:26 | × | hseg quits (~gesh@195.192.229.14) (Ping timeout: 265 seconds) |
| 13:08:21 | × | dunkeln_ quits (~dunkeln@94.129.65.28) (Ping timeout: 258 seconds) |
| 13:08:50 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 13:09:14 | → | zebrag joins (~chris@user/zebrag) |
| 13:10:20 | × | xff0x quits (~xff0x@2001:1a81:5272:1d00:a8b6:9f02:264b:fce) (Ping timeout: 250 seconds) |
| 13:10:56 | × | f0c1s quits (~f0c1s@136.185.130.32) (Remote host closed the connection) |
| 13:12:00 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 13:12:33 | → | kayprish joins (~kayprish@46.240.143.86) |
| 13:12:54 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Read error: Connection reset by peer) |
| 13:13:02 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 13:13:02 | → | xff0x joins (~xff0x@2001:1a81:5272:4100:c2fe:5e6:247e:dd00) |
| 13:13:29 | → | CookE[] joins (~thedawn@user/thedawn) |
| 13:13:42 | → | f0c1s joins (~f0c1s@136.185.130.32) |
| 13:13:43 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 265 seconds) |
| 13:14:06 | → | Nahra` joins (~user@static.161.95.99.88.clients.your-server.de) |
| 13:14:21 | → | lambdap6 joins (~lambdap@static.167.190.119.168.clients.your-server.de) |
| 13:15:06 | × | kmein quits (~weechat@user/kmein) (Ping timeout: 252 seconds) |
| 13:15:06 | × | Nahra quits (~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 252 seconds) |
| 13:15:16 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 13:15:28 | × | lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Ping timeout: 252 seconds) |
| 13:15:28 | lambdap6 | is now known as lambdap |
| 13:15:37 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 13:15:49 | × | Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 246 seconds) |
| 13:17:34 | × | chisui quits (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
| 13:18:30 | → | kmein joins (~weechat@user/kmein) |
| 13:22:22 | × | zebrag quits (~chris@user/zebrag) (Remote host closed the connection) |
| 13:22:27 | → | fluffyballoon joins (~fluffybal@199.204.58.62) |
| 13:23:58 | × | azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 13:24:08 | → | azeem joins (~azeem@176.201.6.138) |
| 13:24:09 | → | chisui joins (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) |
| 13:24:19 | → | cfricke joins (~cfricke@user/cfricke) |
| 13:24:29 | × | azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer) |
| 13:24:42 | → | azeem joins (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) |
| 13:24:57 | → | AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) |
| 13:24:57 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 13:26:58 | → | zebrag joins (~chris@user/zebrag) |
| 13:27:13 | allbery_b | is now known as geekosaur |
| 13:29:55 | × | DNH quits (~DNH@8.43.122.6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:30:07 | × | zebrag quits (~chris@user/zebrag) (Read error: Connection reset by peer) |
| 13:34:41 | → | zebrag joins (~chris@user/zebrag) |
| 13:34:44 | → | dunkeln_ joins (~dunkeln@188.71.193.140) |
| 13:41:42 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection) |
| 13:41:54 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 13:42:50 | × | dunkeln_ quits (~dunkeln@188.71.193.140) (Ping timeout: 250 seconds) |
| 13:43:14 | → | DNH joins (~DNH@8.43.122.6) |
| 13:44:51 | → | ystael joins (~ystael@user/ystael) |
| 13:44:53 | × | DNH quits (~DNH@8.43.122.6) (Read error: Connection reset by peer) |
| 13:48:18 | × | f0c1s quits (~f0c1s@136.185.130.32) (Quit: Leaving) |
| 13:54:00 | × | nerdypepper quits (~nerdypepp@user/nerdypepper) (Quit: bye) |
| 13:54:53 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 13:58:10 | → | nerdypepper joins (~nerdypepp@user/nerdypepper) |
| 13:58:44 | × | remexre quits (~nathan@user/remexre) (Read error: Connection reset by peer) |
| 13:59:52 | × | smarton quits (~smarton@2a01:4f9:c010:4e92::1) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
| 14:00:39 | → | DNH joins (~DNH@2a09:bac0:48::82b:7a06) |
| 14:01:33 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 14:02:29 | → | remexre joins (~nathan@user/remexre) |
| 14:02:41 | → | smarton joins (~smarton@121407.xyz) |
| 14:03:00 | × | jakzale quits (uid499518@id-499518.charlton.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:04:23 | → | sayola joins (~vekto@dslb-088-078-152-192.088.078.pools.vodafone-ip.de) |
| 14:05:32 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 14:06:18 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds) |
| 14:07:02 | → | safinaskar joins (~safinaska@109-252-90-89.nat.spd-mgts.ru) |
| 14:07:06 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 250 seconds) |
| 14:07:17 | <safinaskar> | is it true that "forall a." always means "forall a :: Type."? |
| 14:07:21 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 14:08:50 | × | trcc quits (~trcc@users-1190.st.net.au.dk) (Ping timeout: 268 seconds) |
| 14:10:03 | <lortabac> | safinaskar: no, sometimes a different kind can be infered |
| 14:10:15 | <dminuoso> | % :set -XPolyKinds |
| 14:10:15 | <yahb> | dminuoso: |
| 14:10:16 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Ping timeout: 265 seconds) |
| 14:10:30 | <safinaskar> | lortabac: thanks |
| 14:11:42 | → | fendor_ joins (~fendor@178.165.189.179.wireless.dyn.drei.com) |
| 14:12:14 | <dminuoso> | % f :: forall a b. a -> Const a b; f = Const |
| 14:12:14 | <yahb> | dminuoso: |
| 14:12:16 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 14:12:18 | <dminuoso> | % :t f -- safinaskar |
| 14:12:18 | <yahb> | dminuoso: forall {k} {a} {b :: k}. a -> Const a b |
| 14:13:49 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:14:17 | × | fendor quits (~fendor@178.115.129.107.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 14:14:50 | fendor_ | is now known as fendor |
| 14:15:03 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 258 seconds) |
| 14:15:05 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 14:15:21 | ← | safinaskar parts (~safinaska@109-252-90-89.nat.spd-mgts.ru) () |
| 14:19:05 | → | safinaskar joins (~safinaska@109-252-90-89.nat.spd-mgts.ru) |
| 14:20:38 | <safinaskar> | is it true that "singletons" library is limited compared to hypothetical future dependent haskell (dh), because with singletons (as opposed to true dh) you cannot have types depending on runtime values? |
| 14:21:57 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds) |
| 14:22:18 | → | jao joins (jao@gateway/vpn/protonvpn/jao) |
| 14:22:18 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 14:22:18 | → | jneira_ joins (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) |
| 14:22:32 | → | hounded joins (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
| 14:22:39 | → | hounded_woodstoc joins (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
| 14:22:39 | × | hounded_woodstoc quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Client Quit) |
| 14:23:42 | <merijn> | "probably"? |
| 14:23:52 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 14:24:12 | <merijn> | It's also probably true that Dependent Haskell will always suck, even in the future |
| 14:24:15 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds) |
| 14:24:18 | × | shapr quits (~user@2601:7c0:8180:89d0:e21a:92b8:d08a:508f) (Ping timeout: 264 seconds) |
| 14:24:28 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 14:26:24 | <safinaskar> | merijn: i didn't say "probably" |
| 14:29:03 | <dminuoso> | To be fair, singletons gives you a good approximating for lightweight dependently typed programming. |
| 14:29:12 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 250 seconds) |
| 14:29:22 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 14:30:16 | <merijn> | safinaskar: Probably was my answer |
| 14:30:28 | <merijn> | "is this true?" probably, yes |
| 14:31:26 | <safinaskar> | well, my question is about current state |
| 14:31:44 | × | BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds) |
| 14:31:46 | <safinaskar> | is it true that currently you cannot pass runtime values as arguments to types? |
| 14:32:14 | <chisui> | What's the status of the Unsaturated Type Families proposal anyways? |
| 14:32:32 | <merijn> | That depends on what you're opinion on "faking something that looks like passing runtime values to types" is |
| 14:32:41 | <merijn> | Can you do it? No. |
| 14:32:52 | <merijn> | Does singletons let you fake the ability to do it? Yes. |
| 14:34:12 | <safinaskar> | ok, thanks |
| 14:34:14 | ← | safinaskar parts (~safinaska@109-252-90-89.nat.spd-mgts.ru) () |
| 14:34:30 | <dminuoso> | What an odd fella. |
| 14:35:05 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 14:35:59 | <davean> | There was so much left unsaid in their question I struggled to come up with a question that would narrow down what they were asking enough to make it worth asking to try to get to an answer |
| 14:37:23 | <maerwald[m]> | Maybe this is an assignment and they just needed *any* answer |
| 14:37:32 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 14:37:38 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 14:38:09 | × | egoist quits (~egoist@186.235.85.100) (Quit: WeeChat 3.1) |
| 14:38:40 | <chisui> | ... or win an argument :D |
| 14:39:02 | <maerwald> | Yeah, that's even more important and requires our support |
| 14:39:23 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:39:57 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 14:40:08 | → | BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com) |
| 14:43:39 | <davean> | I mean, I guess core to the problem is types don't exist along side runtime values in any sense |
| 14:43:52 | <davean> | so the question is, on the face of it, nonsensicle |
| 14:44:09 | <davean> | but many type-looking things do exist |
| 14:45:10 | × | CookE[] quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 14:45:58 | <dminuoso> | Snarky opinion: Python is dependently typed: x if (type(o) is str) else y |
| 14:46:40 | <dminuoso> | Type checking your program amounts to running it and see if its well behaved. |
| 14:47:25 | × | ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer) |
| 14:48:12 | → | ystael joins (~ystael@user/ystael) |
| 14:49:04 | → | hammock joins (~Hammock@2600:1700:19a1:3330::625) |
| 14:49:29 | <maerwald> | It's well behaved by definition no? |
| 14:49:30 | × | chomwitt quits (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 264 seconds) |
| 14:49:49 | <davean> | yah the thing maerwald said |
| 14:51:19 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 14:54:09 | <nshepperd> | it passes type checking if it does what you want |
| 14:54:18 | <nshepperd> | The most powerful type system on earth! |
| 14:55:44 | <maerwald> | We just need a confogurable type system |
| 14:56:05 | <maerwald> | confoguration... |
| 14:56:24 | maerwald | signs off lol |
| 14:58:38 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 14:59:40 | <gentauro_> | maerwald: sign off? Is that a certificate? :P |
| 14:59:46 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 15:00:05 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 15:00:12 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:01:10 | → | teaSlurper joins (~chris@81.96.113.213) |
| 15:01:48 | gentauro_ | is now known as gentauro |
| 15:03:02 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:04:35 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:04:38 | <carbolymer> | is there a function `PersistEntity r => r -> Key r` in "persistent" library? I'm trying to get key of my entity |
| 15:06:37 | <merijn> | carbolymer: I *think* I'm using one somewhere in my code |
| 15:06:42 | <merijn> | So I think so |
| 15:06:58 | <merijn> | but, eh, it can be hard to dig up the right stuff :p |
| 15:07:21 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:08:25 | <sekun> | do people actually use the haskell packages from nixpkgs? |
| 15:08:35 | <sekun> | for projects |
| 15:08:54 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:08:57 | <Taneb> | sekun: yes |
| 15:09:10 | <dminuoso> | sekun: Yes. |
| 15:10:54 | <sekun> | alright cool. does it improve compile times at all compared to just cabal/stack? or there's no difference? |
| 15:11:24 | <sekun> | i'm not sure if the packages on there are also binaries |
| 15:11:38 | <davean> | sekun: hahaha, people try |
| 15:11:44 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:11:54 | <davean> | sekun: there are some binary, sure, but cabal already caches in the same way |
| 15:12:07 | <davean> | sekun: so, "marginal" at best and the nixos stuff is very limited in what it can handle |
| 15:12:14 | <Taneb> | sekun: nixpkgs has a binary cache |
| 15:12:51 | <davean> | sekun: it only helps at all the first compile |
| 15:12:59 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection) |
| 15:13:03 | × | tv quits (~tv@user/tv) (Ping timeout: 268 seconds) |
| 15:13:04 | <sekun> | davean: limited in what way? sorry i'm just trying to get an idea |
| 15:13:04 | <davean> | and it will have issues |
| 15:13:18 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:13:23 | <dminuoso> | sekun: The primary motivation for nix is getting deterministic output. |
| 15:13:24 | <sekun> | Taneb: I see |
| 15:13:51 | → | tv joins (~tv@user/tv) |
| 15:14:06 | <davean> | sekun: well it only supports a single version of a package at all, which falls flat on its face immedately, if you compile with flags for debugging and such, you're in a worse place than just using cabal, its always behind, historically nixos broke packages silently. .. |
| 15:14:29 | <dminuoso> | sekun: In haskell+nix for actual building, it's generally a bit slower for various reasons. |
| 15:14:30 | × | ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer) |
| 15:15:02 | <dminuoso> | And the problems davean points out are addressed in haskell.nix |
| 15:15:10 | → | ystael joins (~ystael@user/ystael) |
| 15:15:13 | <davean> | dminuoso: Yah, haskell.nix is WAY better |
| 15:15:33 | <davean> | Ok, haskell.nix isn't actively detremental |
| 15:15:37 | <davean> | which I'd claim nix is |
| 15:15:46 | <dminuoso> | davean: To be fair, I think of nix a bit more like stackage wrt to versions. |
| 15:15:53 | <dminuoso> | But in a way that you can transitively switch out dependencies easily |
| 15:15:57 | <dminuoso> | Or modify their flags |
| 15:16:01 | <davean> | dminuoso: stackage never ripped out dependency requirements |
| 15:16:06 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 15:16:08 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:16:11 | <dminuoso> | Of course not, neither has nix |
| 15:16:16 | <davean> | dminuoso: YES YES nix HAS |
| 15:16:19 | <davean> | Seriously |
| 15:16:26 | <davean> | they actively jail broke packages as THE STANDARD |
| 15:16:32 | <davean> | It lead me to SERIOUS issues |
| 15:16:44 | <davean> | No, absolutely seriously this is a nix thing historically |
| 15:16:52 | <Taneb> | dminuoso: yeah, that was (is?) a comman thing in nixpkgs' haskell package set |
| 15:17:01 | <davean> | they had a set of packages they directly removed depencency requirements on |
| 15:17:14 | <dminuoso> | Maybe I misunderstand what you mean by "ripping out dependency requirements" then |
| 15:17:15 | <davean> | dminuoso: Seriously, this is a huge fucking deal |
| 15:17:35 | <dminuoso> | Ah |
| 15:17:37 | <davean> | dminuoso: ok,. so if I have a package that says "directory >= 1.4.1 && < 1.5" nix would rewrite it to "directory" |
| 15:17:42 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:17:50 | <davean> | and build it against 1.4 |
| 15:17:57 | <Taneb> | Ctrl-F in https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-common.nix for "doJailbreak" |
| 15:17:58 | <davean> | I lost data in production because of this shit |
| 15:18:09 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:d7c7:704e:32f2:af10) (Quit: WeeChat 2.8) |
| 15:18:30 | <dminuoso> | Mmm, what happened here? I recall that jailbreak was a really rare thing to do |
| 15:18:32 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 15:18:50 | <davean> | dminuoso: they at least at one point *always* jailbroke for what they considered the "base" package set |
| 15:18:56 | <davean> | Universally |
| 15:19:32 | <davean> | which things like directory were in that set |
| 15:20:14 | <dminuoso> | This is strange, so the first 10ish examples I went through are all jailbroken just to get the right quickcheck and run tests.. |
| 15:20:20 | <dminuoso> | Shouldn't that be a case of dontCheck? |
| 15:20:22 | dminuoso | stares |
| 15:20:33 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:20:43 | <davean> | dminuoso: and this is the "less scary" future |
| 15:20:56 | <nshepperd> | i thought the point of nix was to not need to do those things... |
| 15:21:05 | <davean> | dminuoso: they seriously use to UNIVERSALLY do it for some packages, and jailbreaking was something more |
| 15:21:12 | <davean> | nshepperd: yah well |
| 15:21:19 | <davean> | nshepperd: its SPECIFICLY the *haskell* stuff in nix |
| 15:21:31 | <dminuoso> | davean: From what I can tell, its definitely not universal behavior. It seems to be the sledgehammer to massage bounds. |
| 15:21:40 | <dminuoso> | For the odd package that wouldnt otherwise build |
| 15:21:45 | <davean> | dminuoso: no, as I keep tell you, this is the "future" where they tried to back off it |
| 15:21:54 | <dminuoso> | I find that hard to believe |
| 15:21:57 | <davean> | dminuoso: but they did it to *every* package for certain dependencies |
| 15:22:03 | <davean> | dminuoso: well its true so uh? |
| 15:22:05 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:22:31 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) |
| 15:22:49 | <davean> | directory was one of them |
| 15:22:59 | <davean> | it would NEVER enforce a dependency requirement on directory, AT ALL |
| 15:24:51 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:25:46 | <maerwald> | Nix bashing? Lemme get popcorn first |
| 15:26:24 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:27:07 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 15:28:42 | <sekun> | Ah I checked haskell.nix and found this https://input-output-hk.github.io/haskell.nix/motivation/. I think I'll start from here and see how it goes. |
| 15:29:12 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:29:37 | × | azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 268 seconds) |
| 15:30:05 | → | azeem joins (~azeem@176.201.6.138) |
| 15:30:43 | <sekun> | davean: is the issue you mentioned also present in haskell.nix? or is it only an issue if you just use nix + nixpkgs |
| 15:30:45 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:31:17 | <davean> | sekun: no, haskell.nix at least tries to address all the above issues and make a more honest compilation of Haskell code |
| 15:31:35 | <davean> | sekun: It still won't really help your build times other than the first time, but |
| 15:31:43 | <davean> | it doesn't cause you active issues :) |
| 15:31:55 | <davean> | and it might even solve some problems! |
| 15:32:36 | <sekun> | davean: i see that's good to hear. i guess there's really no temporary workaround for haskell's build times :( |
| 15:33:33 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:33:33 | → | CookE[] joins (~thedawn@user/thedawn) |
| 15:33:46 | <davean> | sekun: I mean there is directly addressing the issue |
| 15:33:58 | <davean> | why are your build times long? |
| 15:34:31 | <davean> | if what you care about is that clean build's build time, haskell.nix does help |
| 15:34:56 | <davean> | But you only build dependencies once per configuration of said dependency with cabal |
| 15:35:03 | <davean> | so you probably care about YOUR code's compile time in practice |
| 15:35:08 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:35:10 | <davean> | So why is your code not compiling fast? |
| 15:35:20 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:36:19 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.1) |
| 15:38:00 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:38:43 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 15:39:33 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:39:35 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 15:40:10 | → | mikail_ joins (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) |
| 15:40:12 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 15:42:25 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:42:59 | × | chisui quits (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) (Quit: Client closed) |
| 15:43:36 | × | MorrowM quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds) |
| 15:44:01 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:44:20 | → | chisui joins (~chisui@200116b866efc30078bec775310a636c.dip.versatel-1u1.de) |
| 15:45:04 | × | sekun quits (~sekun@180.190.208.125) (Ping timeout: 252 seconds) |
| 15:45:25 | → | chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr) |
| 15:46:51 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:48:25 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:50:01 | → | opv joins (~opv@methodsofcontrol.com) |
| 15:50:15 | → | Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5) |
| 15:51:12 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:52:45 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:53:13 | → | arjun_ joins (~arjun@160.202.37.101) |
| 15:53:27 | <chisui> | I came across a library that redefined some categorical typeclasses in a more categorical way, like `Functor (c0 :: k0 -> k0 -> Type) (c1 :: k1 -> k1 -> Type) (f :: k0 -> k1)` , but I forgot the name. Does anyone know how that package is called? |
| 15:54:45 | × | azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer) |
| 15:55:06 | → | azeem joins (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) |
| 15:55:28 | <c_wraith> | I think there are actually several packages that explore that direction |
| 15:55:32 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 15:55:50 | → | zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) |
| 15:56:57 | <chisui> | do you have the name of some? they don't seem to be indexed by hoggle |
| 15:57:02 | → | pfurla_ joins (~pfurla@216.131.82.16) |
| 15:57:07 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 15:57:59 | <chisui> | *hoogle |
| 15:58:30 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Client Quit) |
| 15:59:23 | <c_wraith> | https://hackage.haskell.org/package/hask is one, though I don't think it's the one you saw |
| 15:59:44 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 16:00:32 | → | finsternis joins (~X@23.226.237.192) |
| 16:01:21 | CookE[] | is now known as fef |
| 16:01:21 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 16:01:50 | <c_wraith> | https://hackage.haskell.org/package/data-category is another, though probably still not the one you're looking for |
| 16:02:58 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 16:03:54 | <chisui> | Thank you c_wraith but none of those are what I was looking for |
| 16:04:23 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 16:05:02 | → | trcc joins (~trcc@eduroam09.au.dk) |
| 16:05:03 | × | trcc quits (~trcc@eduroam09.au.dk) (Remote host closed the connection) |
| 16:05:38 | → | trcc joins (~trcc@users-1190.st.net.au.dk) |
| 16:05:59 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection) |
| 16:06:16 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Ping timeout: 250 seconds) |
| 16:07:56 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 268 seconds) |
| 16:08:57 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 16:09:02 | <chisui> | The package is called "category" *facepalm* |
| 16:09:18 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 16:11:03 | <carbolymer> | davean: wait how did you lost your data? Your package incorporated version with a bug, outside of cabal bounds , or what happened? |
| 16:14:20 | → | dunkeln joins (~dunkeln@188.71.193.140) |
| 16:14:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:15:25 | × | dhil quits (~dhil@195.213.192.47) (Ping timeout: 258 seconds) |
| 16:17:49 | <c_wraith> | chisui: well, if I helped you at least figure out what to search for, I'm calling that a win. :) |
| 16:18:04 | × | hgolden quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Remote host closed the connection) |
| 16:19:32 | × | BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds) |
| 16:19:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 16:20:59 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 16:21:03 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection) |
| 16:23:05 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 16:23:10 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 16:23:17 | → | Guest3175 joins (~Guest31@176.41.31.219) |
| 16:23:45 | <davean> | carbolymer: yah, I specificly said "I require directory that has a bug fixed because that bug affects me", and the nixpkg approach said "haha, we don't believe you" |
| 16:26:21 | × | pfurla_ quits (~pfurla@216.131.82.16) (Ping timeout: 268 seconds) |
| 16:28:23 | ← | zyklotomic parts (~ethan@2604:a880:800:10::79f:8001) (WeeChat 2.8) |
| 16:29:01 | → | dhil joins (~dhil@80.208.56.181) |
| 16:29:08 | <c_wraith> | yikes. Overriding version bounds without explicit instructions to do so is scary. |
| 16:32:42 | × | vpan quits (~vilius@212.117.1.172) (Quit: Leaving.) |
| 16:33:17 | → | derelict joins (~derelict@user/derelict) |
| 16:33:32 | <maerwald> | That's why I usually avoid 'directory' and reimplemented everything myself, lol. But I'm missing windows support. AFPP etc... grml |
| 16:34:23 | × | mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .) |
| 16:34:32 | → | mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
| 16:35:26 | <maerwald> | Cross platform functions are the worst. Purely functional and "local reasoning" goes out the window and laughs at you |
| 16:37:15 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:38:24 | <c_wraith> | "purely functional" goes out the window when working with filesystems anyway |
| 16:39:04 | <maerwald> | How would a functionsl filesystem look like? |
| 16:40:43 | → | jumper149 joins (~jumper149@80.240.31.34) |
| 16:43:10 | <monochrom> | It would support undo. |
| 16:43:47 | <monochrom> | Imagine you're back to the 2000's and you got yourself into cabal hell. Don't you wish you could undo? |
| 16:43:56 | <c_wraith> | it would look like a log-based filesystem |
| 16:44:41 | → | mikail__ joins (~mikail@90.212.77.3) |
| 16:45:35 | → | BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com) |
| 16:45:38 | <sclv> | If in imagining im in the 2000s im not thinking about cabal i’m remembering when britney was on the radio, the housing market was good, and i could still buy a large coke for 1.25 |
| 16:45:41 | → | peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 16:45:47 | × | ystael quits (~ystael@user/ystael) (Quit: Lost terminal) |
| 16:46:23 | <monochrom> | That would be "how would a functional society look like?" >:) |
| 16:46:29 | → | ubert joins (~Thunderbi@p200300ecdf259deac0d59fca0b69df22.dip0.t-ipconnect.de) |
| 16:46:43 | <c_wraith> | oh no, we've switched meanings of "functional"! |
| 16:47:30 | × | mikail_ quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 240 seconds) |
| 16:47:30 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 16:47:58 | <monochrom> | I'm great at puns. That "functional" could still mean you have undo. |
| 16:49:36 | <monochrom> | I just gave out an assignment to students yesterday, it's coding up iterative deepening in Haskell, taking advantage of lazy lists and lazy evaluation. I began with "this assignment deepens (pun intended, just you wait) your experience with lazy evaluation" |
| 16:49:52 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection) |
| 16:51:21 | <c_wraith> | Laziness and iterative deepening seem like a weird mix. the big benefit to iterative deepening it (usually) uses way less memory than a breadth-first search. |
| 16:51:35 | <c_wraith> | +is |
| 16:53:28 | <monochrom> | Breadth-first search still takes up much memory under lazy evaluation. |
| 16:54:52 | <c_wraith> | I suppose you could apply laziness to things like generating a list of all paths examined by iterative deepening without blowing up its memory use |
| 16:55:05 | × | dhil quits (~dhil@80.208.56.181) (Ping timeout: 265 seconds) |
| 16:56:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:57:32 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 16:58:21 | → | fef joins (~thedawn@user/thedawn) |
| 16:58:23 | × | peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Quit: Must not waste too much time here...) |
| 16:58:34 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 17:03:03 | × | Guest3175 quits (~Guest31@176.41.31.219) (Quit: Client closed) |
| 17:03:04 | → | ystael joins (~ystael@user/ystael) |
| 17:03:10 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 17:03:38 | × | kuribas quits (~user@ptr-25vy0ia3kl0vdl4qmg0.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 17:04:25 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 17:04:35 | <norias> | yeah, to be honest, coming from imperative programming |
| 17:04:41 | <norias> | i'm 1 day in to haskell |
| 17:04:56 | <norias> | and i can't imagine how programs that do things happen in functional programming |
| 17:05:07 | <norias> | not saying it can't / doesn't happen |
| 17:05:20 | <norias> | just my brain hasn't reached comprehension, yet |
| 17:05:29 | <norias> | but it looks cool as hell |
| 17:07:44 | <ski> | you compute a series of intput/output interactions with the external world (everything outside of the process running the Haskell program) |
| 17:08:14 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:08:38 | <ski> | the simplest possible model of this is to view a program as a function that, given input text (standard input), computes output text (standard output) |
| 17:08:45 | → | dhil joins (~dhil@195.213.192.47) |
| 17:08:53 | <ski> | @type interact |
| 17:08:54 | <lambdabot> | (String -> String) -> IO () |
| 17:09:18 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds) |
| 17:09:40 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 17:09:50 | <ski> | can be used, to play with this idea. e.g. passing a function that divides up the input `String' into lives, reversing each line, then concatenating them together into a `String' again |
| 17:10:24 | <ski> | @type interact (unlines . map reverse . lines) |
| 17:10:25 | <lambdabot> | IO () |
| 17:10:57 | <ski> | > (unlines . map reverse . lines) "foo\nbar\nbaz\n" |
| 17:10:58 | <lambdabot> | "oof\nrab\nzab\n" |
| 17:11:55 | <ski> | however, when you want to do more sophisticated (text-based) interactions, or when you start to want to do other things (open files, network connections, spawn other processes, &c.), this simplistic model shows its limitations |
| 17:13:17 | <ski> | and so we have a richer ((embedded) domain-specific) language for specifying exactly what I/O interactions to do, in which order. which is the `IO' (abstract data) type |
| 17:13:22 | <ski> | @type getLine |
| 17:13:23 | <lambdabot> | IO String |
| 17:15:41 | × | aman quits (~aman@user/aman) (Ping timeout: 268 seconds) |
| 17:16:41 | <ski> | a value of type `IO String' describes interactions to perform, so as to (hopefully) compute a `String' in the end, as result |
| 17:18:08 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) |
| 17:18:37 | <ski> | (in any case, the `IO String' does not (in general) "contain" any `String'. the `String' will be computed, as a result of actually performing the series of instructions specified by the value of type `IO String' (the "action"). performing/running it again, will quite possibly result in a different `String' being produced. but it's still the same action, the same value of type `IO String', that's being run) |
| 17:20:42 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 17:20:45 | <ski> | norias : so, by using basic "action" building blocks, like `getLine', one can combine them into larger, more complicated actions, using `(>>)' or `(>>=)', which constructs an action from two smaller ones, that, when later executed, will first execute the first "su-action", then the second one |
| 17:20:56 | <ski> | (>>) :: IO a -> IO b -> IO b |
| 17:21:09 | <ski> | (>>=) :: IO a -> (a -> IO b) -> IO b |
| 17:21:26 | × | ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection) |
| 17:22:02 | → | MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) |
| 17:22:11 | <ski> | `actA >> actB' will, when executed, first execute `actA' (throwing away its result value), then execute `actB' (whose result value will be the result value of the execution of the whole `actA >> actB') |
| 17:22:43 | → | ixlun joins (~ixlun@2001:470:69fc:105::41b3) |
| 17:23:43 | → | ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
| 17:23:52 | <ski> | the second combinator is to not throw away the intermediate result, but rather allow the second action to depend on which value resulted from executing the first action. so the second one is actually a function that is fed the intermediate result, and (possibly) uses that to construct the second action to perform |
| 17:24:02 | × | involans quits (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 258 seconds) |
| 17:25:35 | <ski> | so, `act >>= cont' will, when executed, first execute `act', getting its result back (call it `res'); then execute `cont res' (passing the intermediate result to the function ("continuation") that then computes the second action to execute). as before, the result of the second action is the result of the whole |
| 17:26:19 | <ski> | so, one very simple program now is `getLine >>= putStrLn'. a slightly more complicated one is `getLine >>= (putStrLn . reverse)' |
| 17:26:23 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 17:26:25 | <ski> | @type putStrLn |
| 17:26:26 | <lambdabot> | String -> IO () |
| 17:27:01 | → | thyriaen joins (~thyriaen@45.178.75.13) |
| 17:27:12 | <ski> | `putStrLn str' is action that, when executed, will output `str' (on standard output) (and then give back an uninteresting result (of type `()') from the execution) |
| 17:28:36 | × | DNH quits (~DNH@2a09:bac0:48::82b:7a06) (Ping timeout: 250 seconds) |
| 17:28:38 | <ski> | next step up in complexity is to start to put conditionals, or `case' distinctions, into the second action (after `>>='), so that you decide to respond in different ways, depending on the intermediate result from the first action |
| 17:28:40 | → | safinaskar joins (~safinaska@109-252-90-89.nat.spd-mgts.ru) |
| 17:29:35 | <ski> | norias : that's a very quick sketch of the very basics of Haskell I/O .. to get a better feel for this, you'd have to play around with it, and try to build larger things |
| 17:29:37 | <safinaskar> | is it possible to pass runtime values as arguments to types? i asked this question today, and got answer that this is possible to fake somehow. please, give me some examples |
| 17:30:22 | × | thyriaen quits (~thyriaen@45.178.75.13) (Client Quit) |
| 17:30:33 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 17:30:39 | <carbolymer> | davean: that's fucked up. It's the opposite what's nix promises |
| 17:31:11 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 17:31:15 | <safinaskar> | for example, I want "head" with this prototype: head :: forall a. foreach (x :: [a]). (null x ~ False) -> a |
| 17:31:17 | <ski> | safinaskar : that's dependent types |
| 17:31:27 | <safinaskar> | is it possible to fake this "head" using singletons? |
| 17:31:56 | <ixlun> | Hi all. I've got this code: https://termbin.com/r17ge . I'm reading in a binary file that's approx 700Mb of floats. It takes a long time to run (in the order of minutes). I would have thought with lazy bytestrings this would have been pretty quick. |
| 17:32:43 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 17:34:20 | <monochrom> | "(runGet $ many getFloatle)" kills laziness. |
| 17:35:00 | <monochrom> | Building a long list also takes up much memory therefore time. |
| 17:35:37 | <ski> | safinaskar : singletons allow you to associate a value with a corresponding type, "of the same shape". but the value is of a new type, specifically made for this. e.g. `data Nat = Zero | Succ Nat', then `data NatIs :: Nat -> * where IsZero :: NatIs Zero; IsSucc :: NatIs n -> NatIs (Succ n)'. so, given an input of type `NatIs n', you automatically get a corresponding type `n' |
| 17:36:33 | <ski> | safinaskar : but i'm not aware of a way to do this generically (for your arbitrary element type `a', say) |
| 17:36:48 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 17:37:18 | <ixlun> | monochrom: Right, I presume it's the runGet function that's killing laziness? If so, is there a way around it? |
| 17:37:51 | → | MoC joins (~moc@user/moc) |
| 17:38:19 | <monochrom> | "many" kills laziness. |
| 17:38:34 | × | mikail__ quits (~mikail@90.212.77.3) (Ping timeout: 250 seconds) |
| 17:38:57 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:43:17 | <safinaskar> | ski: it seems i understand. and this means that we can have, say, list of such naturals using existential types, right? i. e. we can define "data Foo = forall (n :: Nat). Foo (NatIs n)", and then we can have "someList :: [Foo]". right? |
| 17:44:32 | <ixlun> | monochrom: Right. Do you think I need to do some kind of incremental reads? |
| 17:44:58 | <monochrom> | Use runGetOrFail on one single getFloatle. Or use conduit or pipes. |
| 17:45:38 | × | MorrowM quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection) |
| 17:45:56 | → | MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) |
| 17:45:56 | → | Guest33 joins (~Guest33@104.246.145.85) |
| 17:46:41 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 17:47:54 | × | kayprish quits (~kayprish@46.240.143.86) (Remote host closed the connection) |
| 17:48:59 | × | sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 268 seconds) |
| 17:50:36 | <qrpnxz> | is there a way to just import everything in the std lib in one go? |
| 17:51:50 | <ski> | safinaskar : yes, but that seems fairly useless, since `exists n. NatIs n' would simply be isomorphic to a plain (value-level) `Nat' |
| 17:52:06 | <ixlun> | monochrom: okay I'll take a look at that. Thanks! |
| 17:52:19 | <ski> | the sole point of `NatIs n' would be to mention `n' elsewhere |
| 17:52:55 | × | Guest33 quits (~Guest33@104.246.145.85) (Quit: Client closed) |
| 17:53:00 | <safinaskar> | ski: i think i will able to somehow extract "n" from this "exists n. NatIs n" and pass it somewhere |
| 17:57:17 | <ski> | consider something like `zipWith :: forall a b c n. (a -> b -> c) -> (Vec a n -> Vec b n -> Vec c n)'. the point of using the `n' index here is to mention it multiple times in the type, linking the lengths of the three vectors together. if you instead go `zipWith :: forall a b c. (a -> b -> c) -> ((exists n. Vec a n) -> (exists n. Vec b n) -> (exists n. Vec c n))', you can do that, but that's not really any |
| 17:57:23 | <ski> | better than `zipWith :: forall a b c. (a -> b -> c) -> ([a] -> [b] -> [c])' in the first place |
| 17:58:35 | → | mikail__ joins (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) |
| 17:58:46 | <ski> | similarly, someList :: [exists n. NatIs n]' isn't really any better than `someList :: [Nat]'. if you ever want to perform such a conversion, you can always use a function `toSingNat :: Nat -> exists n. NatIs n' |
| 17:59:51 | × | arjun_ quits (~arjun@160.202.37.101) (Ping timeout: 265 seconds) |
| 18:00:06 | <jumper149> | I am currently trying to fix my usage of MonadBaseControl, because I was missing some `restoreM`s. So instead I came up with this: https://github.com/jumper149/blucontrol/blob/fix-control/src/Blucontrol/Main/Control.hs#L54 |
| 18:00:58 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 18:01:02 | <jumper149> | The problem is, that I need to call `unsafeCoerce` right here. But when HLS tells me the type of `unsafeCoerce` is just like `id` here. |
| 18:01:11 | <safinaskar> | ski: i will show example |
| 18:01:17 | <jumper149> | When trying to run the program everything works fine. |
| 18:01:28 | ski | will have to leave rather soon |
| 18:01:38 | <jumper149> | So why can't GHC just infer type equality here. I guess it has to do with type families somehow. |
| 18:02:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:03:02 | <jumper149> | This is the error without `unsafeCoerce`: http://ix.io/3qU1 |
| 18:03:53 | → | warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) |
| 18:07:03 | × | v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection) |
| 18:08:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 18:09:15 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 18:09:20 | <safinaskar> | ski: here is example: https://paste.debian.net/1202170/ |
| 18:09:50 | <safinaskar> | ski: as you can see, i was able to actually use existential "Foo". and as you can see, Foo is better than just Nat |
| 18:09:54 | × | xkuru quits (~xkuru@user/xkuru) (Ping timeout: 252 seconds) |
| 18:10:30 | <safinaskar> | ski: i was able to pattern match on Foo value and then (if it greater than zero) pass it as second argument to division |
| 18:10:54 | <safinaskar> | thus, compiler proved that at calling point of "divide" its second argument is not zero |
| 18:11:22 | <safinaskar> | this way we can finally remove partial functions, such as division, "head", etc |
| 18:14:06 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:15:17 | × | chisui quits (~chisui@200116b866efc30078bec775310a636c.dip.versatel-1u1.de) (Quit: Client closed) |
| 18:16:10 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds) |
| 18:17:33 | × | mikail__ quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Quit: Leaving) |
| 18:22:04 | → | involans joins (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) |
| 18:25:53 | ← | tusko parts (~yeurt@user/tusko) (Farewell) |
| 18:26:07 | → | chisui joins (~chisui@200116b866efc300e1478aa720ae1876.dip.versatel-1u1.de) |
| 18:27:07 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:27:46 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Quit: Leaving.) |
| 18:31:09 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:32:30 | → | safinaskar97 joins (~safinaska@109.252.90.89) |
| 18:35:10 | → | econo joins (uid147250@user/econo) |
| 18:35:43 | × | safinaskar quits (~safinaska@109-252-90-89.nat.spd-mgts.ru) (Ping timeout: 246 seconds) |
| 18:38:01 | × | yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Quit: ERC (IRC client for Emacs 28.0.50)) |
| 18:40:19 | × | xsperry quits (~as@user/xsperry) (Ping timeout: 258 seconds) |
| 18:42:20 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 18:43:30 | × | mcglk quits (~mcglk@131.191.49.120) (Quit: (seeya)) |
| 18:43:54 | → | mcglk joins (~mcglk@131.191.49.120) |
| 18:44:19 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 18:45:53 | × | johnw quits (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Read error: Connection reset by peer) |
| 18:46:27 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds) |
| 18:47:18 | → | johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
| 18:48:48 | → | fef joins (~thedawn@user/thedawn) |
| 18:52:26 | × | jespada quits (~jespada@90.254.247.46) (Ping timeout: 252 seconds) |
| 18:53:35 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 18:53:35 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 18:54:38 | × | dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 252 seconds) |
| 18:55:31 | × | fef quits (~thedawn@user/thedawn) (Quit: Leaving) |
| 18:55:31 | → | jespada joins (~jespada@90.254.247.46) |
| 19:00:25 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:01:44 | allbery_b | is now known as geekosaur |
| 19:04:18 | → | fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) |
| 19:04:50 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:04:51 | → | dunkeln_ joins (~dunkeln@188.71.193.140) |
| 19:05:14 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 19:05:35 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 265 seconds) |
| 19:06:37 | → | myShoggoth joins (~myShoggot@75.164.29.44) |
| 19:07:05 | ← | safinaskar97 parts (~safinaska@109.252.90.89) () |
| 19:08:49 | → | turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it) |
| 19:08:49 | × | turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
| 19:08:49 | → | turlando joins (~turlando@user/turlando) |
| 19:11:44 | × | ubert quits (~Thunderbi@p200300ecdf259deac0d59fca0b69df22.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 19:12:03 | → | ubert joins (~Thunderbi@p200300ecdf259dc2c0d59fca0b69df22.dip0.t-ipconnect.de) |
| 19:18:40 | × | ubert quits (~Thunderbi@p200300ecdf259dc2c0d59fca0b69df22.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 19:22:58 | → | Deide joins (~Deide@wire.desu.ga) |
| 19:22:58 | × | Deide quits (~Deide@wire.desu.ga) (Changing host) |
| 19:22:58 | → | Deide joins (~Deide@user/deide) |
| 19:25:27 | × | turlando quits (~turlando@user/turlando) (Read error: Connection reset by peer) |
| 19:27:05 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 19:28:14 | → | Guest9 joins (~Guest9@43.241.144.49) |
| 19:32:02 | <Guest9> | i like a book called pragmatic programmer , which books do you like/recommend? |
| 19:32:05 | <Guest9> | in general/specific |
| 19:32:34 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:34:06 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 19:37:34 | <opv> | Hi all. I am trying to build elm bc I need it on aarch64, and am failing miserably. I am very confused. Is this the right place to ask about cabal? |
| 19:38:54 | → | peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 19:39:44 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 258 seconds) |
| 19:43:11 | → | tzar_bomba joins (~tzar_bomb@78-56-41-78.static.zebra.lt) |
| 19:45:56 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 19:46:24 | <monochrom> | Yes. |
| 19:47:05 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 19:54:52 | <maerwald> | Great question. |
| 19:55:11 | → | turlando joins (~turlando@user/turlando) |
| 19:56:43 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:59:08 | × | Guest9 quits (~Guest9@43.241.144.49) (Quit: Connection closed) |
| 20:00:08 | → | hseg joins (~gesh@195.192.229.14) |
| 20:01:08 | × | dunkeln_ quits (~dunkeln@188.71.193.140) (Ping timeout: 250 seconds) |
| 20:01:46 | <dminuoso> | davean: Okay, so in hindsight, I was aware doJailbreak did exist. I did some research, it's possible you're perhaps thinking of a relatively recent idea to automatically jailbreak on hackage2nix, but from everything I gather not unconditionally, only if it leads to buildable plans. But it is indeed a very sorrow thing if nix breaks cabal bound induced boundaries. |
| 20:02:13 | <davean> | Its not recent, this happened to me in 2016 |
| 20:02:30 | <dminuoso> | Yeah, and I can already see how this on directory can cause really issues |
| 20:02:39 | <dminuoso> | Even when its a transitive dependency |
| 20:02:45 | <dminuoso> | This starts breaking other packages promises as well |
| 20:02:49 | <davean> | Yep |
| 20:02:55 | <davean> | It was a pretty deep big problem |
| 20:03:03 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 20:03:14 | <davean> | and it was hard to debug because it wasn't on the package - they do it in like the base package stuff |
| 20:03:24 | <davean> | so it was in code *refered* to, didn't show up in the nix derivation its self at all :/ |
| 20:03:35 | <davean> | they broke it in the base infastructure |
| 20:03:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:03:42 | <davean> | so you really had to dig in to find it |
| 20:03:59 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 244 seconds) |
| 20:04:24 | <dminuoso> | Judging from the sample I looked at, perhaps the deeper problem is the heavy reliance of "its only marked buildable if tests pass" |
| 20:04:30 | <dminuoso> | Which I think is an expensive threshold |
| 20:04:41 | <dminuoso> | Mostly, things should be buildable as its roughly aligned with stackage |
| 20:05:02 | × | juhp quits (~juhp@128.106.188.66) (Ping timeout: 250 seconds) |
| 20:05:20 | <dminuoso> | If the reality is that a good portion of hackage has broken tests, then propagating lose dependencies is a super dangerous thing because they can affect unrelated libraries |
| 20:05:26 | <maerwald> | Good reasons to avoid nix: bad ecosystem, low QA, too many chefs |
| 20:05:36 | <davean> | well, the core of *this* particular problem is they never believed you'd need an upgrade of the GHC distributed packages |
| 20:06:12 | <davean> | And they didn't want to consider multiple versions of those via if a nix derivation for them was used or GHC's derivation |
| 20:06:39 | → | chaosite joins (~chaosite@user/chaosite) |
| 20:06:55 | → | juhp joins (~juhp@128.106.188.66) |
| 20:06:55 | <dminuoso> | Well, multiple concurrent haskellPackage versions is horrid UX in nix at the moment. |
| 20:07:02 | <dminuoso> | Ideally I just want to callCabal2nix my package and be done with it |
| 20:07:06 | <dminuoso> | This should improve things, not worsen then |
| 20:07:20 | <dminuoso> | In light of all of this, I think I should really look into haskell.nix now |
| 20:07:27 | <davean> | yah ... |
| 20:08:14 | <maerwald> | haskell.nix shows that you need 10 nix engineers in a company to get anything done ;) |
| 20:09:06 | <dminuoso> | I dont think its that extreme, but having followed quite a bit of rabbit holes recently I am convinced you do need 2 experts at least. |
| 20:09:20 | <dminuoso> | Whether its worth it, you have to decidef |
| 20:09:43 | <dminuoso> | We are going to use nix for configuring servers now, simply because the UX and advantages are simply uncontested |
| 20:09:48 | <dminuoso> | But that's sort of orthogonal to the above problems |
| 20:10:03 | <davean> | Yah, nix is a good idea, but there are deep problems. I don't think they're with nix specificly. |
| 20:10:08 | <dminuoso> | Maybe, I might even think about switching back to cabal for haskell packages, and then patchelf'ing them into nix derivations |
| 20:10:13 | <davean> | But the ecosystem built? |
| 20:10:18 | <davean> | It uh, yah, has problems |
| 20:10:21 | <maerwald> | Yeah, easy: no. The reason IOHK went down this rabbit hole is because daedalus is installed on the users machine via nix. IMO, that's crazy. |
| 20:11:05 | <dminuoso> | davean: To be fair, every package distribution methods has its deep issues. I dont even want to start to discuss everything that's wrong with say rpm.. |
| 20:11:18 | <davean> | Yah |
| 20:11:36 | <maerwald> | That's not a fair comparison |
| 20:11:48 | <maerwald> | It's not about the format or the PM |
| 20:11:50 | → | shiraeeshi joins (~shiraeesh@109.166.57.36) |
| 20:12:01 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:12:06 | <maerwald> | It's about the core developers, policies, QA |
| 20:12:10 | <dminuoso> | Sure |
| 20:12:28 | <davean> | In this case its about the philosophy of the people who are using the tool, but there are edges on the tools too, and what people do is a consiquence of the tools ergonomics too |
| 20:12:42 | <davean> | Its not safe to use an ecosystem you don't invest in |
| 20:12:48 | <davean> | sadly |
| 20:13:41 | <davean> | <InsertHFShillhere> |
| 20:13:46 | <dminuoso> | Some interesting things I recently learned, is that apparently in the go-world its super common to depend on package directly via github *tags* |
| 20:14:20 | <dminuoso> | When you start translating those go dependencies into nix using the common tools, that means over time your dependencies suddenly experience sha mismatches, because in the go community its normal to just move tags around too.. |
| 20:14:50 | <dminuoso> | and apparently the same developers that came up with the go2nix (or whatevver they are called) didnt think it was a good idea to translate git refs into commit.. |
| 20:14:51 | <maerwald> | don't remind me that I did Go professionally once... ugh |
| 20:15:11 | → | pavonia joins (~user@user/siracusa) |
| 20:15:22 | <maerwald> | The only good thing about Go is that APIs are usually stable |
| 20:15:35 | <dminuoso> | maerwald: Correct me if Im wrong, but this all appears to stem out of this "there should be minimal effort involved in writing software or making packages" |
| 20:15:42 | <dminuoso> | for whatever good or bad this does |
| 20:16:02 | <maerwald> | It's the lack of tooling that forces people to keep their API stable |
| 20:16:04 | <dminuoso> | Is there some sort of hackage equivalent in go? |
| 20:16:13 | <dminuoso> | or Cabal-the-spec? |
| 20:16:38 | <maerwald> | you can import directly from github |
| 20:17:02 | <maerwald> | They have some vendoring tools too |
| 20:17:08 | <davean> | Look, we're lucky we have ok tools. They should get better - they're being made better. As a community we should value that and invest in them |
| 20:17:09 | <maerwald> | they're broken as well |
| 20:17:14 | <dminuoso> | So if github ever goes down or loses data because of stupid admins, then if your business relies on go suddenly breaks apart? |
| 20:17:24 | <maerwald> | yes |
| 20:17:25 | <davean> | just because people have a little pain with them doesn't mean they aren't good |
| 20:17:34 | × | MoC quits (~moc@user/moc) (Quit: Konversation terminated!) |
| 20:17:36 | × | jneira_ quits (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 250 seconds) |
| 20:17:39 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 20:17:51 | <dminuoso> | Oh haha, regarding github.. a really funny and sad story from a friend.. |
| 20:18:08 | <dminuoso> | He tried to GPDR gitlab to inquire about all data they have on him. |
| 20:18:13 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 268 seconds) |
| 20:18:26 | <maerwald> | Well, my opinion is that PVP and semver are the reasons for API anarchy |
| 20:18:28 | <dminuoso> | In the jungle of Gitlab this request turned from "GPDR inquiry" to "GPDR delete" |
| 20:18:45 | <dminuoso> | And his account and all projects, commits, messages... *everything* was irrecoverably deleted. |
| 20:19:20 | <davean> | Holy, why? |
| 20:19:29 | <dminuoso> | Ask gitlab |
| 20:19:33 | <davean> | well, i backup stuff |
| 20:19:41 | <maerwald> | They have incompetent admins |
| 20:19:46 | <JSharp> | that's painful. :/ |
| 20:19:47 | <maerwald> | Not the first incident |
| 20:20:36 | <dolio> | Because that's the easiest way to comply? |
| 20:20:51 | <dminuoso> | "we dont have anything on you" |
| 20:21:04 | × | peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 250 seconds) |
| 20:22:41 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 20:24:29 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:24:53 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 20:25:04 | → | DNH joins (~DNH@8.43.122.6) |
| 20:25:50 | × | mc47 quits (~mc47@xmonad/TheMC47) (Client Quit) |
| 20:25:57 | <dminuoso> | maerwald: At any rate, its a bad sad that go is in that state. Overall go seems like a cute language for making minimal tools. This discussion immediately reminded me of https://gnu.support/gnu-emacs/What-is-wrong-with-MELPA-on-Microsoft-Github.html |
| 20:26:17 | <dminuoso> | All of this fully applies to the go-ecosystem as well, it seems. |
| 20:26:30 | <dolio> | Also javascript, probably. |
| 20:26:40 | <maerwald> | Go is good for microservices, nothing more |
| 20:27:15 | <dminuoso> | Ive seen a bunch of CLI tools written in go as well, it seems fairly suitable for such tasks too |
| 20:27:37 | <dminuoso> | Most recent thing is `morph`, which is how we're going to deploy nixos machines with. :) |
| 20:27:47 | <maerwald> | python is better at cli tools imo |
| 20:28:40 | <dminuoso> | perhaps yeah, guess it depends what you have in your toolkit |
| 20:28:52 | <dminuoso> | I dont have any python or go experience, so my cli tools are written in Haskell |
| 20:29:21 | <dminuoso> | But with Haskell some common tasks do require 5 lines of code, that should really just take 1. |
| 20:30:31 | <maerwald> | I'm not a huge fan of optparse-applicative. Too many details to deal wits |
| 20:30:42 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 20:30:42 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 20:30:51 | allbery_b | is now known as geekosaur |
| 20:31:01 | <maerwald> | With TH you could build something better, but then you need TH... ugh |
| 20:31:09 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:31:15 | <davean> | maerwald: I've wanted improvements also. In some ways I want MORE complications tohugh. |
| 20:31:45 | <maerwald> | I'm a fan of https://click.palletsprojects.com/en/8.0.x/ |
| 20:32:08 | <davean> | maerwald: thats so limited though, isn'tit? |
| 20:32:28 | → | jneira_ joins (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) |
| 20:32:30 | <maerwald> | You can escape easily and do more complex things |
| 20:33:09 | <dminuoso> | maerwald: optparse-applicative is really odd. it's very a great powertool, but for minimal cli tool it's easily overkill. :( |
| 20:33:23 | <dminuoso> | Wouldnt want to give it up regardless |
| 20:33:33 | <maerwald> | My optparse code atm is 500 LOC or so |
| 20:33:38 | <davean> | I think part of optparse's problem is it tries to look too friendly while being powerful and falls short of both |
| 20:33:51 | <dminuoso> | maerwald: btw, for minimal code, one could also consider optparse-generic |
| 20:34:16 | <dminuoso> | I did take some initial looks, it could be a suitable replacement for "I want to carve out a 0 effort cli tool" |
| 20:34:47 | <dminuoso> | It's easily composable with optparse-applicative, so you can break out and write manual parsers at any point |
| 20:35:29 | → | shapr joins (~user@2601:7c0:8180:89d0:ed87:906a:cd61:bb34) |
| 20:36:31 | <davean> | maerwald: does https://click.palletsprojects.com/en/8.0.x/ support implementing something like "find"? |
| 20:37:21 | <maerwald> | Not sure, been a while since I used python (or rather coconut) |
| 20:37:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 20:38:16 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection) |
| 20:40:10 | <davean> | maerwald: I don't see how it could be - but I only skimmed |
| 20:40:32 | <davean> | It doesn't look like a comparable tool - but thats good, its not possible to do both things at once |
| 20:42:03 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 20:43:10 | × | Deide quits (~Deide@user/deide) (Read error: Connection reset by peer) |
| 20:43:28 | → | Deide joins (~Deide@wire.desu.ga) |
| 20:43:28 | × | Deide quits (~Deide@wire.desu.ga) (Changing host) |
| 20:43:28 | → | Deide joins (~Deide@user/deide) |
| 20:44:24 | <maerwald> | I remember there are escape hatches though |
| 20:44:25 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 20:44:28 | × | chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 250 seconds) |
| 20:45:11 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 20:45:18 | <davean> | maerwald: I'd be interested in how their approach could have a capible escape hatch |
| 20:45:24 | <davean> | they're using decorators and such |
| 20:45:32 | → | derelict joins (~derelict@user/derelict) |
| 20:45:37 | × | derelict quits (~derelict@user/derelict) (Client Quit) |
| 20:45:38 | → | dunkeln_ joins (~dunkeln@188.71.193.140) |
| 20:45:43 | <davean> | I'd think any escape hatch would have to be entirely different and break what they're doing |
| 20:45:54 | <davean> | So I guess i'll look at it ore |
| 20:46:15 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 20:46:47 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 20:48:22 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:49:00 | × | remexre quits (~nathan@user/remexre) (Quit: WeeChat 3.0.1) |
| 20:49:01 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.1) |
| 20:49:03 | <dminuoso> | davean: which part of `find` are you looking for exactly? |
| 20:49:18 | <davean> | dminuoso: How it handles arguments |
| 20:49:19 | <davean> | its a style |
| 20:49:37 | <davean> | Its just a good example of actually parsing vs. the simpler base-posix style |
| 20:49:41 | <dminuoso> | Mmm, what style is that? |
| 20:49:52 | <davean> | have you not used find? |
| 20:50:05 | <davean> | Its order dependent, and meaning changes based on the prefix |
| 20:50:18 | <davean> | you can read the man page |
| 20:50:28 | <dminuoso> | find is one of those tools I very poorly use Im afraid |
| 20:50:35 | <davean> | its entirely context sensitive |
| 20:51:25 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 246 seconds) |
| 20:51:45 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 20:51:59 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection) |
| 20:52:46 | → | AWizzArd joins (~code@user/awizzard) |
| 20:53:31 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 20:54:05 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 20:58:29 | <maerwald> | Wouldn't that need optparse-monad? |
| 20:58:29 | → | remexre joins (~nathan@user/remexre) |
| 20:59:00 | <dminuoso> | optparse-selective would suffice |
| 20:59:16 | <davean> | maerwald: depends - is the applicative on an infinite tree? ;) |
| 20:59:43 | × | AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.) |
| 20:59:56 | <maerwald> | I'm a fan of selective. ..would like to see more applications |
| 20:59:59 | <dminuoso> | I did try looking into pulling out an optparse-selective, and then I stared at the implementation of optparse-applicative and said no, Im not getting paid for this. |
| 21:00:18 | <dminuoso> | It's doable, but you need rewrite a lot of optparse for it :( |
| 21:01:46 | × | deshalb quits (~deshalb@user/deshalb) (Quit: leaving) |
| 21:01:58 | <davean> | dminuoso: How not interested in that are you? |
| 21:02:14 | <maerwald> | While at it, fix bytestring input |
| 21:02:21 | <davean> | maerwald: optparse-applicative has a bit more than applicative |
| 21:02:28 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 21:02:46 | → | safinaskar joins (~safinaska@109.252.90.89) |
| 21:03:52 | <safinaskar> | look here: https://paste.debian.net/1202170/ . i was able to pass runtime values as arguments to types! |
| 21:04:14 | <safinaskar> | i. e. i can essentially use full power of dependent haskell now. and prove things! |
| 21:04:33 | × | hammock quits (~Hammock@2600:1700:19a1:3330::625) (Ping timeout: 268 seconds) |
| 21:04:35 | <safinaskar> | i was able to pattern match on Foo value and then (if it greater than zero) pass it as second argument to division |
| 21:04:47 | <safinaskar> | thus, compiler proved that at calling point of "divide" its second argument is not zero |
| 21:04:52 | <safinaskar> | this way we can finally remove partial functions, such as division, "head", etc |
| 21:06:11 | <dminuoso> | davean: Not much. Im looking into fixing a bunch of cabal stuff first since these actually annoy me. :-) |
| 21:06:27 | <dminuoso> | optparse-selective is just wishful thinking, Im lacking a genuine use for it |
| 21:06:58 | × | gzj quits (~GZJ0X@96.45.188.88.16clouds.com) (Remote host closed the connection) |
| 21:09:44 | <maerwald> | I've been thinking about forking cabal and create a more radical unix style interface with several tools, more low level than current cabal-install |
| 21:10:01 | <maerwald> | But no capacity and no demand |
| 21:11:28 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 21:14:01 | <maerwald> | I think stack and cabal are converging to the point that the choice will become irrelevant even for power users at some point |
| 21:14:23 | → | vicentius joins (~vicentius@user/vicentius) |
| 21:18:00 | × | warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection) |
| 21:18:02 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds) |
| 21:18:12 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:19:53 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds) |
| 21:21:19 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 21:21:27 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
| 21:24:29 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 21:25:10 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 21:26:13 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:26:42 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:28:37 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 21:29:07 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:29:26 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 21:29:51 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 21:30:22 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 21:30:41 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 21:30:58 | ← | safinaskar parts (~safinaska@109.252.90.89) () |
| 21:30:59 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:31:31 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 21:32:23 | → | derelict joins (~derelict@user/derelict) |
| 21:33:05 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 21:33:48 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 21:35:22 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:36:02 | × | trcc quits (~trcc@users-1190.st.net.au.dk) (Ping timeout: 250 seconds) |
| 21:37:20 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Ping timeout: 250 seconds) |
| 21:38:29 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 21:38:40 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) |
| 21:39:21 | → | hammock joins (~Hammock@2600:1700:19a1:3330::625) |
| 21:40:02 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:40:12 | × | chisui quits (~chisui@200116b866efc300e1478aa720ae1876.dip.versatel-1u1.de) (Quit: Client closed) |
| 21:40:19 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
| 21:42:12 | → | waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
| 21:42:32 | × | dunkeln_ quits (~dunkeln@188.71.193.140) (Ping timeout: 250 seconds) |
| 21:42:57 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 21:42:58 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) (Ping timeout: 250 seconds) |
| 21:44:30 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:44:54 | × | michalz quits (~michalz@185.246.204.114) (Remote host closed the connection) |
| 21:47:17 | <pavonia> | I'm trying to map a replacement function over a list that replaces elements from a list with corresponding elements from another list, e.g. map (replace [1,3] [10,30]) [1,2,3,4] => [10,2,30,4]. Is there a way to make the lookup for each element take constant time? Both Map and HashMap seem to have logarithmic lookup time |
| 21:47:18 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds) |
| 21:47:20 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 21:48:45 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 21:48:52 | → | betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be) |
| 21:49:42 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 21:50:24 | × | jao quits (jao@gateway/vpn/protonvpn/jao) (Ping timeout: 265 seconds) |
| 21:51:52 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 21:52:06 | <dminuoso> | pavonia: how would that work, exactly? |
| 21:52:25 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) |
| 21:53:32 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1) |
| 21:54:20 | <pavonia> | I was thinking about a "real" hash map. Is the no Haskell implementation? |
| 21:54:43 | <dminuoso> | a "real" hash map? constant time lookup? :-) |
| 21:55:28 | × | betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 246 seconds) |
| 21:55:33 | <dminuoso> | That would requie perfect hashing |
| 21:55:49 | <pavonia> | When you have a large case expression, what is the lookup time for this structure internally? |
| 21:56:17 | <dminuoso> | Im not sure if GHC can translate this into a jump table |
| 21:57:23 | <dminuoso> | It seems so |
| 21:58:06 | <pavonia> | So which concrete data type would you suggest for fastest lookup? |
| 21:58:29 | <dminuoso> | Id start by profiling and ensuring this is even worth the trouble.. |
| 21:58:46 | <dminuoso> | Do you have actual prof data? Or is this just a case of premature optimization |
| 21:59:22 | <pavonia> | It's more a theoretical question |
| 21:59:59 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 22:00:09 | <dminuoso> | Hard to answer a theoretical question. Improving performance usually depends on what you're doing exactly |
| 22:00:13 | <pavonia> | That is performance doesn't matter in my case but I'm curious what would be the fastest lookup type |
| 22:00:51 | <dminuoso> | From what I can gather case-of is constant time and fast if GHC can translate it into a jump table |
| 22:01:54 | <dminuoso> | And then it depends on the scrutinee and the pattern clauses |
| 22:02:07 | <pavonia> | But you can't build such a case-expression dynamically, can you? |
| 22:02:35 | <dminuoso> | From what exactly? |
| 22:03:11 | <dminuoso> | generally, Id probably just use HashMap from unordered-containers as a first step if I want quick access |
| 22:03:30 | <dminuoso> | If that's not enough, then Id look into the specific issue at hand |
| 22:03:57 | <pavonia> | For two lists as in the example above |
| 22:04:12 | <pavonia> | So HashMap is generally faster than Map? |
| 22:06:53 | <dminuoso> | Generally yes |
| 22:07:12 | <dminuoso> | If the key is Int, then IntMap might (?) perform better, Im not sure |
| 22:07:22 | <dminuoso> | Also, Id throw in bytestring-tries into the mix |
| 22:07:37 | <dminuoso> | https://hackage.haskell.org/package/bytestring-trie |
| 22:07:47 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 22:08:10 | <dminuoso> | pavonia: but keep in mind that HashMap is unordered |
| 22:08:36 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 22:08:37 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) (Remote host closed the connection) |
| 22:09:28 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 246 seconds) |
| 22:09:28 | <monochrom> | Premature generalization is the root of premature optimization. |
| 22:10:58 | <monochrom> | Ultimately it may come down to just telling you about -ddump-simpl -ddump-stg -ddump-opt-cmm -ddump-asm so you can see what happens to your specific case. |
| 22:11:30 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Client Quit) |
| 22:11:47 | <monochrom> | Because the other correct answer is "it depends". |
| 22:12:02 | × | fendor quits (~fendor@178.165.189.179.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:15:06 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:15:27 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 22:16:01 | <pavonia> | dminuoso: Okay, thanks |
| 22:18:02 | → | killsushi joins (~killsushi@user/killsushi) |
| 22:21:54 | × | brian_da_mage quits (~Neuromanc@user/briandamag) (Ping timeout: 264 seconds) |
| 22:25:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal) |
| 22:27:40 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 22:27:42 | → | peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 22:28:43 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 22:31:34 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:31:34 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 22:31:51 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 22:32:00 | × | tzar_bomba quits (~tzar_bomb@78-56-41-78.static.zebra.lt) (Quit: Client closed) |
| 22:33:25 | × | azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 265 seconds) |
| 22:33:32 | × | vicentius quits (~vicentius@user/vicentius) (Ping timeout: 252 seconds) |
| 22:34:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:35:05 | <hseg> | are newtype family instances not representationally equal to what they wrap? |
| 22:35:11 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 22:35:19 | × | ephemient quits (uid407513@id-407513.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 22:36:00 | <hseg> | so given e.g. data family Sorted f; newtype instance Sorted [a] = SortedList {getSorted :: [a]} |
| 22:36:14 | <hseg> | coerce :: Sorted [a] -> [a] is forbidden? |
| 22:36:47 | → | azeem joins (~azeem@176.201.6.138) |
| 22:38:14 | <hseg> | hrm... experimenting more shows this isn't what's going wrong, getting more data |
| 22:42:57 | <hseg> | oh ffs. is there a reason the (unordered-)containers haddocks don't show role annotations? |
| 22:44:22 | × | azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer) |
| 22:44:42 | × | Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) (Quit: Leaving) |
| 22:45:18 | → | azeem joins (~azeem@dynamic-adsl-94-34-50-190.clienti.tiscali.it) |
| 22:45:50 | × | jlamothe quits (~jlamothe@198.251.57.81) (Quit: leaving) |
| 22:47:32 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:48:33 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 22:50:38 | × | BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 258 seconds) |
| 22:51:02 | → | derelict joins (~derelict@user/derelict) |
| 22:51:46 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!) |
| 22:53:01 | → | lavaman joins (~lavaman@98.38.249.169) |
| 22:55:39 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) |
| 23:00:21 | → | sekun joins (~sekun@180.190.208.125) |
| 23:02:08 | × | hseg quits (~gesh@195.192.229.14) (Quit: WeeChat 3.2) |
| 23:08:01 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3-dev) |
| 23:08:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 23:13:14 | → | trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 23:17:08 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:17:19 | × | DNH quits (~DNH@8.43.122.6) (Quit: Textual IRC Client: www.textualapp.com) |
| 23:19:49 | × | shiraeeshi quits (~shiraeesh@109.166.57.36) (Ping timeout: 265 seconds) |
| 23:21:12 | × | involans quits (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 252 seconds) |
| 23:26:49 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds) |
| 23:29:32 | → | xsperry joins (~as@user/xsperry) |
| 23:29:33 | × | xsperry quits (~as@user/xsperry) (Excess Flood) |
| 23:31:33 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 23:34:27 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 23:34:47 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 23:36:04 | × | waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 250 seconds) |
| 23:36:43 | <justsomeguy> | In lambda calculus, is there a name for something that is the opposite of a combinator? (By "opposite of a combinator" I mean a function that does not use any of its bound arguments, or parameters, but only uses free variables, instead.) |
| 23:36:47 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 23:37:13 | × | TheRAt quits (~TheRAt@user/therat) (Read error: Connection reset by peer) |
| 23:38:17 | <hpc> | a constant function? |
| 23:38:41 | <dolio> | That doesn't sound like the opposite of a combinator. |
| 23:40:07 | <justsomeguy> | Do you mean that my description doesn't sound like the opposite of a combinator, or that a constant function doesn't sound like the opposite of a combinator? |
| 23:41:11 | <monochrom> | I propose the name "dependency hell". :) |
| 23:41:12 | <dolio> | The description. |
| 23:41:42 | → | TheRAt joins (~TheRAt@user/therat) |
| 23:42:51 | <dolio> | The things usable in the body of a combinator are the parameters, application, and previously defined combinators, in the usual formal definition I'm familiar with. |
| 23:43:07 | <dolio> | So, if it only uses application and previously defined combinators, it's a combinator. |
| 23:44:38 | <justsomeguy> | In functions that aren't combinators, there is also the possibility of using a variable that is defined in an enclosing scope, which is known as a free variable. So, you can use a variable that isn't in the head of a lambda within a function body. |
| 23:44:40 | <dolio> | And in combinator calculi, there aren't any other constants that could go in the body of a combinator. |
| 23:45:41 | <dminuoso> | justsomeguy: So for example the inner lambda in: \x -> \y -> x y ? |
| 23:46:13 | <dminuoso> | Or rather just: \y -> x y |
| 23:46:17 | <dminuoso> | This is simpler to talk about |
| 23:46:45 | <dminuoso> | justsomeguy: Id say its a free expression. |
| 23:47:12 | <justsomeguy> | No, something like (\x -> a x), is an example of what I'm talking about. The x comes from an enclosing scope, and is not a formal parameter in the lambda head of the function, but is still valid in the (untyped) lambda calculus. |
| 23:47:47 | <dminuoso> | justsomeguy: Yeah, Id say the opposite of `combinator` is `free expression` |
| 23:47:56 | <dminuoso> | (where free expression means its some expression with free variables) |
| 23:48:02 | <justsomeguy> | Free expression sounds about right :^) |
| 23:49:00 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:49:19 | <justsomeguy> | (There is another name for this thing, though, and I wish I could remember it. Oh well.) |
| 23:49:26 | → | UpstreamSalmon joins (uid12077@id-12077.stonehaven.irccloud.com) |
| 23:50:16 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 23:53:21 | <c_wraith> | I'm looking at the Applicative laws, and a lot of them seem unusual. Like, Identity, Homomorphism, and Interchange all basically are different forms of "pure is a unit of <*>" |
| 23:53:43 | → | lavaman joins (~lavaman@98.38.249.169) |
| 23:54:14 | <monochrom> | Yes, but formally it is very difficult to express that because <*> is annoyingly assymetric. |
| 23:54:28 | <c_wraith> | the only law describing how multiple uses of <*> must interact is the composition law, and it's a really indirect way of essentially saying "<*> is associative" |
| 23:54:28 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 246 seconds) |
| 23:54:43 | <monochrom> | A version of those laws written in liftA2(,) has a much better chance at looking much nicer. |
| 23:54:53 | <monochrom> | Yes, that too. |
| 23:56:03 | <c_wraith> | I suppose it does all come down to the type asymmetry between the arguments of <*> |
| 23:57:11 | <shachaf> | his paper gives that version too: https://www.staff.city.ac.uk/~ross/papers/Applicative.pdf |
| 23:57:24 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:57:49 | <shachaf> | T |
| 23:58:15 | <monochrom> | Ah, I should have taught that to my students. |
| 23:58:50 | <monochrom> | I have inflicted the madness of the <*> laws on my students. I feel bad for them. |
| 23:58:51 | <shachaf> | Page 10, I should have said. |
| 23:59:16 | <shachaf> | Certainly symmetric versions are much nicer. |
| 23:59:34 | <shachaf> | Whether liftA2/pure or liftA2 (,)/pure () |
All times are in UTC on 2021-06-23.