Logs on 2023-02-02 (liberachat/#haskell)
| 00:08:53 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
| 00:12:56 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:15:01 | → | mechap1 joins (~mechap@user/mechap) |
| 00:16:31 | → | cheater_ joins (~Username@user/cheater) |
| 00:18:03 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 252 seconds) |
| 00:19:35 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 00:19:36 | cheater_ | is now known as cheater |
| 00:24:13 | → | acidjnk_new3 joins (~acidjnk@p200300d6e715c41534a27522b62d030b.dip0.t-ipconnect.de) |
| 00:24:39 | × | acidjnk_new quits (~acidjnk@p200300d6e715c483583a1c499a1e309c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:29:47 | → | cheater_ joins (~Username@user/cheater) |
| 00:31:03 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 00:31:40 | → | oldfashionedcow joins (~Rahul_San@user/oldfashionedcow) |
| 00:32:21 | × | telser quits (~quassel@user/telser) (Ping timeout: 252 seconds) |
| 00:32:45 | → | telser joins (~quassel@user/telser) |
| 00:33:05 | × | cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds) |
| 00:33:13 | cheater_ | is now known as cheater |
| 00:36:41 | → | Joao003 joins (~Joao003@2804:840:8302:200:2c92:7dbe:5cc4:8e08) |
| 00:38:12 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:38:12 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:38:12 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:45:33 | × | gurkenglas quits (~gurkengla@dynamic-046-114-182-217.46.114.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 00:48:28 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 00:50:41 | × | acidjnk_new3 quits (~acidjnk@p200300d6e715c41534a27522b62d030b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:51:05 | → | landonf joins (landonf@mac68k.info) |
| 00:53:04 | → | thongpv joins (~thongpv87@14.179.159.25) |
| 00:53:05 | → | Cale joins (~cale@cpebc4dfb3052b3-cmbc4dfb3052b0.cpe.net.cable.rogers.com) |
| 00:55:05 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 00:55:55 | → | falafel joins (~falafel@2607:fb91:1449:aea0:14d8:1ad5:a3d2:34a) |
| 00:56:58 | <Joao003> | nothing happens on this channel |
| 00:57:07 | <Joao003> | except a few long conversations |
| 00:57:20 | <geekosaur> | it was busy earlier |
| 00:57:43 | <Joao003> | irc is underrated and old but excellent |
| 00:58:14 | <Joao003> | probably almost everyone has moved to discord but i don't like discord |
| 00:58:21 | <Joao003> | discord has too many features |
| 00:59:07 | <geekosaur> | there's a separate matrix room but it's even quieter |
| 00:59:54 | <geekosaur> | then again some of the reason this channel is "except a few long conversations" is that we redirect most off topic stuff to #haskell-offtopic (then again that channel's been quiet today as well) |
| 01:00:04 | <Joao003> | lol |
| 01:00:53 | <geekosaur> | both channels are kinda variable in how busy they are |
| 01:01:05 | <geekosaur> | today's been relatively quiet. some days it's really busy |
| 01:01:13 | <jackdk> | It comes in waves, depending on which side of the earth faces the sun right now |
| 01:01:23 | <Joao003> | mine is facing the moon |
| 01:01:34 | <Joao003> | i mean not facing the sun |
| 01:01:47 | <Joao003> | lol it's pretty late in the night already for me' |
| 01:02:08 | <Joao003> | also anyone knows of a good apl room? |
| 01:03:35 | <jackdk> | No, but I imagine it's not typeable on a regular keyboard ;-) |
| 01:03:42 | <jackdk> | s/No/Not I/ |
| 01:04:14 | <Joao003> | lol there's apl ime |
| 01:04:19 | <geekosaur> | agda input mode, anyone? 🙂 |
| 01:05:34 | <Joao003> | also i found the apl channel its named #apl |
| 01:07:44 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
| 01:11:32 | → | danza joins (~francesco@151.35.37.215) |
| 01:14:57 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:20:08 | → | cheater_ joins (~Username@user/cheater) |
| 01:22:38 | → | slack1256 joins (~slack1256@186.11.59.217) |
| 01:23:29 | × | cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds) |
| 01:23:33 | cheater_ | is now known as cheater |
| 01:23:36 | × | Joao003 quits (~Joao003@2804:840:8302:200:2c92:7dbe:5cc4:8e08) (Quit: Leaving) |
| 01:30:43 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds) |
| 01:38:21 | × | xff0x quits (~xff0x@2405:6580:b080:900:eb1:bbe6:622a:f170) (Ping timeout: 252 seconds) |
| 01:40:24 | × | telser quits (~quassel@user/telser) (Ping timeout: 260 seconds) |
| 01:41:11 | → | telser joins (~quassel@user/telser) |
| 01:41:24 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 01:43:07 | × | bhall quits (~brunohall@195.147.207.136) (Ping timeout: 252 seconds) |
| 01:43:27 | <sm> | dangit, my google sheet csv getter has bitrotted. Depends on gogol which is unmaintained and requires aeson < 2, which is in stackage lts-18/ghc-8.10 which doesn't run easily on a modern mac (needs older llvm). Building it with cabal on the other hand requires me to solve a stiff cleverness test (dependency puzzle). |
| 01:43:40 | → | bhall joins (~brunohall@85.255.237.177) |
| 01:46:10 | <sm> | current cabal script header: build-depends: aeson<1.6, bytestring, cassava, gogol, gogol-core, gogol-sheets, lens, pretty-show, text |
| 01:46:10 | <sm> | result: https://termbin.com/phxi8 |
| 01:46:10 | <sm> | getting too old for this sh*t :) |
| 01:47:26 | <sm> | I guess it's because.. cabal scripts use the user's package db, and I already have a wrong bytestring version installed there ? |
| 01:52:17 | × | bhall quits (~brunohall@85.255.237.177) (Ping timeout: 252 seconds) |
| 01:52:52 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 252 seconds) |
| 01:52:54 | → | bhall joins (~brunohall@195.147.207.136) |
| 01:55:17 | <ddellacosta> | jean-paul[m]: I am at a loss...that is bizarre behavior |
| 01:57:40 | × | telser quits (~quassel@user/telser) (Ping timeout: 260 seconds) |
| 02:15:23 | <sm> | I came close, building most deps, with this horror: |
| 02:15:23 | <sm> | ghcup set ghc 9.0.2 && PATH=/opt/homebrew/opt/llvm@12/bin:$PATH CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/usr/include/ffi cabal build ./gsheet-csv.hs |
| 02:15:26 | <sm> | but failed due to "error: instruction requires: sha3", some bug with this required llvm version on arm |
| 02:15:52 | <sm> | and I chose Haskell for software longevity... |
| 02:16:08 | → | barzo joins (~hd@31.223.42.197) |
| 02:19:00 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
| 02:20:42 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 02:25:37 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:32:29 | → | razetime joins (~Thunderbi@117.193.6.240) |
| 02:39:06 | → | Guest75 joins (~Guest75@178.141.149.12) |
| 02:44:16 | × | bhall quits (~brunohall@195.147.207.136) (Ping timeout: 248 seconds) |
| 02:45:55 | <sm> | but anyway - any recommendations for an alternative to gogol for accessing google sheets ? |
| 02:45:56 | → | bhall joins (~brunohall@85.255.237.168) |
| 02:50:54 | × | bhall quits (~brunohall@85.255.237.168) (Ping timeout: 268 seconds) |
| 02:54:11 | × | jero98772 quits (~jero98772@2800:484:1d80:d8ce:9815:cfda:3661:17bb) (Remote host closed the connection) |
| 02:55:21 | × | barzo quits (~hd@31.223.42.197) (Ping timeout: 252 seconds) |
| 02:56:18 | <sm> | found one: go install github.com/cristoper/gsheet/cmd/gsheet@latest |
| 02:58:08 | × | oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Ping timeout: 248 seconds) |
| 02:58:16 | → | bhall joins (~brunohall@195.147.207.136) |
| 03:01:19 | → | oldfashionedcow joins (Rahul_Sand@user/oldfashionedcow) |
| 03:02:24 | × | slack1256 quits (~slack1256@186.11.59.217) (Ping timeout: 248 seconds) |
| 03:05:06 | <EvanR> | I feel your pain sm |
| 03:11:07 | × | td_ quits (~td@i5387093B.versanet.de) (Ping timeout: 252 seconds) |
| 03:12:07 | × | hounded quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving) |
| 03:12:07 | × | hounded_woodstoc quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving) |
| 03:13:09 | → | td_ joins (~td@i53870916.versanet.de) |
| 03:23:30 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 03:29:25 | → | opticblast joins (~Thunderbi@172.58.80.152) |
| 03:31:25 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 03:31:50 | → | cheater_ joins (~Username@user/cheater) |
| 03:34:55 | × | cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds) |
| 03:35:05 | cheater_ | is now known as cheater |
| 03:38:22 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:38:22 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:38:22 | finn_elija | is now known as FinnElija |
| 03:43:13 | <sayola> | how come i have never seen example code using FooT |
| 03:43:36 | <dsal> | You'll shoot your eye out. |
| 03:43:55 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:4e8c::) (Quit: The Lounge - https://thelounge.chat) |
| 03:44:07 | <sayola> | always |
| 03:45:19 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:4e8c::) |
| 04:05:18 | × | danza quits (~francesco@151.35.37.215) (Read error: Connection reset by peer) |
| 04:10:32 | sm | wonders if go will outlast the rest |
| 04:14:17 | <dsal> | sm: is gogol not working? I've barely used it before and it seemed OKish. |
| 04:14:54 | <sm> | it's unmaintained and requires aeson < 2, dsal |
| 04:15:05 | <dsal> | Ah, similar problems to amazonka, I guess. |
| 04:15:20 | <sm> | I didn't bother trying allow-newer |
| 04:15:26 | <dsal> | (not that amazonka is not maintained, but, you know) |
| 04:18:57 | × | varoo quits (~varoo@117.203.246.41) (Ping timeout: 252 seconds) |
| 04:19:26 | → | varoo joins (~varoo@117.203.246.41) |
| 04:19:50 | → | Sciencentistguy6 joins (~sciencent@hacksoc/ordinary-member) |
| 04:20:32 | → | danza joins (~francesco@151.47.100.24) |
| 04:21:55 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds) |
| 04:21:55 | Sciencentistguy6 | is now known as Sciencentistguy |
| 04:22:05 | <jackdk> | amazonka is very close to 2.0 RC 2, but I have to rethink some stuff about how hooks are gonna work |
| 04:23:01 | <dsal> | Is gogol actually getting any work done? |
| 04:23:21 | <dsal> | I can't even remember what I did with it once… |
| 04:23:27 | <jackdk> | not as far as I know. I don't do anything with GCP |
| 04:23:43 | × | varoo quits (~varoo@117.203.246.41) (Ping timeout: 252 seconds) |
| 04:26:08 | × | falafel quits (~falafel@2607:fb91:1449:aea0:14d8:1ad5:a3d2:34a) (Ping timeout: 248 seconds) |
| 04:29:04 | × | freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds) |
| 04:30:49 | → | freeside joins (~mengwong@103.252.202.170) |
| 04:31:00 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 04:32:13 | sm | had been using it for a few years to fetch google sheets |
| 04:34:51 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:35:29 | <jackdk> | I read the question as "is gogol actually getting any work done [on it]?" |
| 04:36:02 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 04:36:02 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 04:36:02 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:36:59 | <sm> | I wasn't sure |
| 04:37:16 | <sm> | but to that I can answer no based on github commit dates |
| 04:37:34 | <sm> | and issue tracker activity |
| 04:38:00 | <dsal> | Well, like, amazonka's got a bunch of behind the scenes stuff going on. |
| 04:38:35 | <sm> | oh.. gogol's public face might be very out of date ? |
| 04:38:45 | × | freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds) |
| 04:38:59 | <sm> | it looked like the maintainer certainly wasn't getting 20% time to maintain it |
| 04:40:08 | → | freeside joins (~mengwong@103.252.202.170) |
| 04:40:42 | <sm> | well I correct myself.. github is only 10 months old. It's the hackage release that's old, 2019 |
| 04:44:48 | <sm> | I guess my sad experience of software fragility with haskell, which felt related to ghc, could equally well be blamed on limited library support |
| 04:44:58 | × | freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds) |
| 04:46:43 | <sm> | it seems a combination of both actually. If ghc versions were more reliable, running old libs would be more feasible. If up to date libs were always available, using latest ghc versions would be feasible. |
| 04:51:37 | × | razetime quits (~Thunderbi@117.193.6.240) (Ping timeout: 252 seconds) |
| 04:53:26 | → | freeside joins (~mengwong@103.252.202.170) |
| 04:55:59 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
| 04:58:40 | × | Vajb quits (~Vajb@2001:999:404:9516:d621:6cbe:c71e:5686) (Read error: Connection reset by peer) |
| 04:59:21 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 05:00:47 | × | opticblast quits (~Thunderbi@172.58.80.152) (Ping timeout: 248 seconds) |
| 05:07:00 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 05:10:00 | <Inst_> | does anyone like to use Writer.CPS here? |
| 05:10:51 | <Inst_> | as far as I understand, writer is more specialized than State, and I got a tolaly weird result wherein State combined with strict data types outperformed significantly a manual loop |
| 05:13:42 | → | bilegeek joins (~bilegeek@2600:1008:b092:167b:403a:f9f:bd0e:c295) |
| 05:18:21 | × | bhall quits (~brunohall@195.147.207.136) (Ping timeout: 252 seconds) |
| 05:18:55 | → | bhall joins (~brunohall@195.147.207.136) |
| 05:21:57 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:23:30 | → | Vajb joins (~Vajb@2001:999:404:9516:d621:6cbe:c71e:5686) |
| 05:33:27 | × | bilegeek quits (~bilegeek@2600:1008:b092:167b:403a:f9f:bd0e:c295) (Quit: Leaving) |
| 05:36:32 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 05:37:46 | → | razetime joins (~Thunderbi@117.193.6.240) |
| 05:38:47 | × | Inst_ quits (~Inst@2601:6c4:4081:54f0:6ca9:ab81:4dc0:f885) (Ping timeout: 255 seconds) |
| 05:41:22 | → | hammond_ joins (proscan@user/hammond2) |
| 05:53:13 | × | zmt01 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
| 05:53:59 | → | zmt01 joins (~zmt00@user/zmt00) |
| 05:54:58 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:6ca9:ab81:4dc0:f885) |
| 05:55:49 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 05:58:03 | → | trev joins (~trev@user/trev) |
| 06:07:16 | → | varoo joins (~varoo@2401:4900:5d37:b684:a86:fa31:6cc6:f11d) |
| 06:08:10 | → | Inst__ joins (~Inst@2601:6c4:4081:54f0:6ca9:ab81:4dc0:f885) |
| 06:09:52 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 06:11:17 | × | Inst_ quits (~Inst@2601:6c4:4081:54f0:6ca9:ab81:4dc0:f885) (Ping timeout: 246 seconds) |
| 06:11:39 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
| 06:12:00 | × | varoo quits (~varoo@2401:4900:5d37:b684:a86:fa31:6cc6:f11d) (Ping timeout: 260 seconds) |
| 06:13:55 | → | varoo joins (~varoo@2401:4900:5d39:c4c7:192:23bd:ee78:ec0c) |
| 06:15:02 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 06:18:07 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: WeeChat 3.8) |
| 06:18:45 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 06:24:00 | × | phma quits (~phma@host-67-44-208-195.hnremote.net) (Read error: Connection reset by peer) |
| 06:25:04 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:26:15 | <danso> | can i get any resources on the origin/motivation for -XNoPatternGuards? i am very interested in why somebody would want guards removed from haskell |
| 06:27:01 | <int-e> | Inst__: Hmm, so that CPS version of writer ensures that the monoid operation is used in a left-associative fashion. Use with care; don't use it with lists. |
| 06:27:18 | <Inst__> | thanks for the warning |
| 06:27:53 | <Inst__> | you could also define custom instances for your record types |
| 06:28:00 | <Inst__> | to overwrite the default <> implementation for lists |
| 06:31:12 | <int-e> | danso: Haskell98 didn't have pattern guards. So historically, PatternGuards is an extension, and GHC has a No* pragma for every extension. |
| 06:32:13 | <int-e> | I, too, would be surprised to see NoPatternGuards actually used anywhere. |
| 06:37:55 | <Inst__> | what is pattern guards again? |
| 06:38:02 | <Inst__> | is it the ability to interleave case with guards? |
| 06:38:16 | <Inst__> | or is it the ability to use let and <- bindings in guards? |
| 06:38:17 | <jackdk> | https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/table.html |
| 06:38:23 | <danso> | thanks, i just learned that pattern guards is not what i believed it was |
| 06:38:31 | <int-e> | > let foo x | (a,b) <- x = a + b in foo (1,2) |
| 06:38:33 | <lambdabot> | 3 |
| 06:38:46 | <int-e> | (silly example) |
| 06:39:20 | <Inst__> | oh, so mix of pattern matching and guards is still supported by haskell 98 |
| 06:39:26 | → | falafel joins (~falafel@2607:fb91:1449:aea0:14d8:1ad5:a3d2:34a) |
| 06:39:35 | <int-e> | it acts like a guard if the pattern match can actually fail. |
| 06:39:35 | <Inst__> | alternative to view patterns, basically |
| 06:40:31 | <int-e> | my favorite abuse of pattern guards is "assignments": foo x | x <- x+2, x <- x*2 = x |
| 06:41:27 | → | kassouni joins (~textual@2601:646:400:68b0:f5a4:b4c5:300f:d7b8) |
| 06:41:32 | <Inst__> | cute |
| 06:41:42 | Inst__ | is now known as Inst |
| 06:46:35 | <danso> | is that multiple bindings for x which shadow each other? |
| 06:46:55 | → | phma joins (~phma@host-67-44-208-225.hnremote.net) |
| 06:46:56 | <int-e> | yes |
| 06:47:35 | <danso> | if anybody actually does that, their compiler should go on strike |
| 06:47:55 | <int-e> | Well, that would make me very sad. |
| 06:48:37 | → | michalz joins (~michalz@185.246.207.201) |
| 06:49:40 | × | phma quits (~phma@host-67-44-208-225.hnremote.net) (Read error: Connection reset by peer) |
| 06:50:22 | → | phma joins (~phma@2001:5b0:2144:35b8:9ff2:a892:c3ba:7249) |
| 06:52:41 | <int-e> | (There's a tangible benefit to shadowing: you can't accidentally mix up the new (modified) and old values.) |
| 06:55:01 | <int-e> | Though Haskell doesn't make this fool-proof because of `where` clauses. |
| 06:57:52 | × | kassouni quits (~textual@2601:646:400:68b0:f5a4:b4c5:300f:d7b8) (Quit: Textual IRC Client: www.textualapp.com) |
| 06:58:16 | → | kassouni joins (~kassouni@2601:646:400:68b0:f5a4:b4c5:300f:d7b8) |
| 06:59:23 | → | kenran joins (~user@user/kenran) |
| 07:09:27 | × | danza quits (~francesco@151.47.100.24) (Ping timeout: 252 seconds) |
| 07:15:03 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 07:16:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 07:16:05 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 07:16:05 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 07:16:52 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 07:17:25 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 07:17:32 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 07:20:01 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: Textual IRC Client: www.textualapp.com) |
| 07:23:17 | → | CiaoSen joins (~Jura@p200300c9573284002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 07:25:27 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 07:29:19 | × | CiaoSen quits (~Jura@p200300c9573284002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen) |
| 07:29:39 | <jackdk> | We have linearity now, not that I've used it for anything seriosu |
| 07:29:42 | <jackdk> | serious* |
| 07:32:47 | × | falafel quits (~falafel@2607:fb91:1449:aea0:14d8:1ad5:a3d2:34a) (Ping timeout: 248 seconds) |
| 07:33:02 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:39:38 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:44:30 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 07:48:47 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 07:51:38 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 07:52:48 | → | chele joins (~chele@user/chele) |
| 07:54:34 | → | sidk joins (~sidk@102.70.0.138) |
| 07:57:01 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 07:59:55 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 08:00:22 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 08:01:37 | <sidk> | Anyone has any experience concurrency testing a servant server? I found https://github.com/barrucadu/dejafu and https://github.com/input-output-hk/io-sim but not sure if they'd work well with Servant |
| 08:06:46 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 08:09:43 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 08:12:20 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 08:28:24 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 08:29:07 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 08:29:41 | × | ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:33:58 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:34:43 | → | epolanski joins (uid312403@2a03:5180:f:1::4:c453) |
| 08:36:19 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:36:33 | × | sidk quits (~sidk@102.70.0.138) (Ping timeout: 260 seconds) |
| 08:36:33 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 08:41:48 | → | zeenk joins (~zeenk@2a02:2f04:a214:1e00::7fe) |
| 08:50:52 | → | acidjnk_new3 joins (~acidjnk@p200300d6e715c415c5e18632e1ef72b2.dip0.t-ipconnect.de) |
| 08:55:25 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:56:48 | × | varoo quits (~varoo@2401:4900:5d39:c4c7:192:23bd:ee78:ec0c) (Read error: Connection reset by peer) |
| 08:58:58 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 08:59:03 | → | varoo joins (~varoo@117.203.246.41) |
| 09:00:13 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 252 seconds) |
| 09:05:39 | → | sidk joins (~sidk@102.70.0.138) |
| 09:07:18 | → | akegalj joins (~akegalj@78-0-123-122.adsl.net.t-com.hr) |
| 09:08:03 | × | varoo quits (~varoo@117.203.246.41) (Ping timeout: 255 seconds) |
| 09:08:55 | → | varoo joins (~varoo@2401:4900:5d39:c4c7:192:23bd:ee78:ec0c) |
| 09:09:20 | × | varoo quits (~varoo@2401:4900:5d39:c4c7:192:23bd:ee78:ec0c) (Read error: Connection reset by peer) |
| 09:09:36 | → | merijn joins (~merijn@195.114.232.94) |
| 09:09:45 | → | varoo joins (~varoo@117.203.246.41) |
| 09:10:05 | × | varoo quits (~varoo@117.203.246.41) (Read error: Connection reset by peer) |
| 09:13:44 | × | merijn quits (~merijn@195.114.232.94) (Ping timeout: 252 seconds) |
| 09:13:53 | × | sidk quits (~sidk@102.70.0.138) (Ping timeout: 260 seconds) |
| 09:14:43 | → | avicenzi joins (~avicenzi@2a00:ca8:a1f:b004::c32) |
| 09:19:36 | → | merijn joins (~merijn@195.114.232.94) |
| 09:20:44 | → | coot joins (~coot@213.134.171.3) |
| 09:22:20 | × | kassouni quits (~kassouni@2601:646:400:68b0:f5a4:b4c5:300f:d7b8) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 09:24:14 | → | kassouni joins (~kassouni@2601:646:400:68b0:18dc:d2:c373:8213) |
| 09:26:27 | → | sidk joins (~sidk@102.70.0.138) |
| 09:29:24 | × | razetime quits (~Thunderbi@117.193.6.240) (Ping timeout: 260 seconds) |
| 09:30:10 | → | razetime joins (~Thunderbi@117.193.6.240) |
| 09:30:56 | × | razetime quits (~Thunderbi@117.193.6.240) (Remote host closed the connection) |
| 09:31:06 | × | bhall quits (~brunohall@195.147.207.136) (Ping timeout: 268 seconds) |
| 09:31:37 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) |
| 09:35:45 | × | ubert quits (~Thunderbi@p200300ecdf13fe8bb79a89b306658b5f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 09:35:47 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 09:36:14 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) (Read error: Connection reset by peer) |
| 09:36:49 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) |
| 09:37:35 | → | ubert joins (~Thunderbi@p200300ecdf130119a8229ffa4b2489e6.dip0.t-ipconnect.de) |
| 09:37:44 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit) |
| 09:41:58 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 09:48:18 | × | sidk quits (~sidk@102.70.0.138) (Ping timeout: 260 seconds) |
| 09:50:39 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:51:52 | → | bhall joins (~brunohall@195.147.207.136) |
| 09:52:54 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 09:59:35 | → | teo joins (~teo@user/teo) |
| 10:01:56 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 268 seconds) |
| 10:03:02 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 10:06:24 | × | oldfashionedcow quits (Rahul_Sand@user/oldfashionedcow) (Quit: WeeChat 3.8) |
| 10:08:25 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 10:09:35 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 10:12:40 | → | ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:841e:e311:a268:c104) |
| 10:28:41 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 10:31:43 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 10:38:51 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 10:41:51 | → | mastarija joins (~mastarija@2a05:4f46:e03:6000:c226:21cc:7cd8:a29e) |
| 10:44:53 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:45:10 | → | img joins (~img@user/img) |
| 10:48:11 | × | akegalj quits (~akegalj@78-0-123-122.adsl.net.t-com.hr) (Quit: leaving) |
| 10:51:12 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 10:53:22 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 10:59:11 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 11:02:09 | <albet70> | why data T = a -> a is wrong? |
| 11:03:17 | <tomsmeding> | albet70: needs a data constructor name |
| 11:03:26 | <tomsmeding> | and also, 'a' is out of scope |
| 11:03:31 | <tomsmeding> | data T a = MakeT (a -> a) |
| 11:03:53 | <tomsmeding> | alternatively, if you wanted a type synonym: type T a = a -> a |
| 11:04:56 | <albet70> | data Task = F | E | T Task Task, I want T Task Task = Task -> Task |
| 11:05:20 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 11:05:39 | <tomsmeding> | data Task = F | E | T (Task -> Task) |
| 11:05:39 | <tomsmeding> | ? |
| 11:05:48 | <albet70> | yes |
| 11:08:47 | → | gurkenglas joins (~gurkengla@dynamic-046-114-176-054.46.114.pool.telefonica.de) |
| 11:08:51 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 11:10:03 | → | xff0x joins (~xff0x@2405:6580:b080:900:195f:ac6f:f6a2:3431) |
| 11:19:53 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 11:21:47 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds) |
| 11:22:31 | → | mei joins (~mei@user/mei) |
| 11:22:59 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 11:27:14 | × | gurkenglas quits (~gurkengla@dynamic-046-114-176-054.46.114.pool.telefonica.de) (Ping timeout: 260 seconds) |
| 11:28:59 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 264 seconds) |
| 11:30:59 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 11:36:58 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 11:38:20 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 255 seconds) |
| 11:39:43 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 11:41:13 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 268 seconds) |
| 11:42:06 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 11:45:29 | → | mei joins (~mei@user/mei) |
| 11:46:03 | → | Joao003 joins (~Joao003@2804:840:8302:200:d31:1e61:32ad:8571) |
| 11:49:18 | → | underlap joins (~underlap@229.171.115.87.dyn.plus.net) |
| 11:51:32 | × | Joao003 quits (~Joao003@2804:840:8302:200:d31:1e61:32ad:8571) (Quit: Leaving) |
| 11:51:49 | → | Joao003 joins (~Joao003@2804:840:8302:200:d31:1e61:32ad:8571) |
| 11:53:00 | <underlap> | I'm trying to understand the output of the GHCi `:show bindings` command. If I define a function (e.g. `let f = head`), then its binding is printed as `f :: [a] -> a = _`. Clearly, the first part of this is the name of the binding and its type, but I'm wondering what `= _` means and in what circumstances it might be something else. |
| 11:54:18 | → | cheater_ joins (~Username@user/cheater) |
| 11:56:13 | × | cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds) |
| 11:56:14 | cheater_ | is now known as cheater |
| 11:56:51 | <dminuoso> | underlap: I suspect it uses `_` when no Show instance exists. |
| 11:59:16 | <underlap> | dminuoso: Yes, I think you're right. I tried `let z = 1 :: Int` and its binding showed as `z :: Int = 1`. Thanks! |
| 11:59:37 | <int-e> | It seems closer to :print, it only shows values that were already evaluated. So after `let f :: [Int]; f = [1..]` it prints `f :: [Int] = _`, but after `take 3 f` it says `f :: [Int] = 1 : 2 : 3 : _` |
| 12:00:03 | <dminuoso> | int-e: Maybe a mixture of both. |
| 12:00:28 | <int-e> | maybe. |
| 12:00:59 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 12:01:21 | <int-e> | data F = F; f = F; f `seq` (); :show bindings --> f :: F = <F> |
| 12:01:31 | → | mei joins (~mei@user/mei) |
| 12:01:33 | <int-e> | fun. |
| 12:02:39 | <underlap> | Fun indeed! :-) |
| 12:06:40 | → | rendar joins (~Paxman@user/rendar) |
| 12:06:52 | <rendar> | haskell has libraries for useful combination mechanisms, for instance? |
| 12:12:46 | <Joao003> | hmmm |
| 12:12:49 | <Joao003> | a = 0 |
| 12:12:54 | <Joao003> | :show bindings |
| 12:13:33 | <Joao003> | it output a :: Num a => a = _ |
| 12:13:58 | <merijn> | Joao003: Because Num a isn't guaranteed to be an instance of Show |
| 12:14:10 | <Joao003> | yeah |
| 12:14:41 | <Joao003> | tried a = 0 :: Int |
| 12:14:49 | <Joao003> | and it output a :: Int = 0 |
| 12:16:23 | <Joao003> | so it's like name :: type = (show name if type is instance of Show else _) |
| 12:18:21 | <Joao003> | i found a way to implement map with folds |
| 12:19:21 | <Joao003> | map f = foldl (\acc x -> [f x : acc]) [] |
| 12:20:10 | <Joao003> | oh ok its flipped |
| 12:20:20 | <Joao003> | map f = foldl (\x acc -> [f x : acc]) [] |
| 12:20:42 | <Joao003> | wait what no??? |
| 12:20:46 | <int-e> | just f x : acc |
| 12:21:02 | <Joao003> | oh i forgor |
| 12:21:04 | <int-e> | (I happily forgot which language used those square brackets.) |
| 12:24:07 | <Joao003> | i did it but now my array is reversed |
| 12:24:31 | <Joao003> | i will use foldr then |
| 12:24:40 | <jackdk> | http://data.tmorris.net/talks/list-folds/b30aa0fdff296c731bc5b1c824adf1d02b3b69d9/list-folds.pdf |
| 12:25:18 | <jackdk> | very useful for building a working intuition of what the folds mean. selecting which fold to use to implement map becomes much easier when you have that |
| 12:25:50 | <Joao003> | my implementation of map: |
| 12:26:04 | <Joao003> | map f = foldr (\x -> (f x :)) [] |
| 12:26:37 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
| 12:26:38 | <Joao003> | and it actually makes a smiley |
| 12:26:50 | <tomsmeding> | :t \f -> foldr ((:) . f) [] |
| 12:26:51 | <lambdabot> | Foldable t => (a1 -> a2) -> t a1 -> [a2] |
| 12:27:03 | <tomsmeding> | double smiley |
| 12:27:09 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 12:27:34 | <jackdk> | yes, and because foldr performs constructor replacement (see linked pdf), it is clear that replacing `:` with `(:) . f` (and `[]` with `[]`) will perform the mapping |
| 12:28:10 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 12:28:16 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 12:29:26 | <underlap> | I was told you can build anything out of folds. I wonder... |
| 12:30:34 | <Joao003> | it makes sense that foldl is (a -> [b] -> [b]) -> [b] -> [a] -> [b] |
| 12:30:50 | × | kassouni quits (~kassouni@2601:646:400:68b0:18dc:d2:c373:8213) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 12:30:55 | <Joao003> | im wrong lol |
| 12:31:18 | <Joao003> | i went too far into that map |
| 12:31:47 | <Joao003> | the function that foldr takes is flipped from foldl |
| 12:33:13 | <merijn> | underlap: https://www.cs.nott.ac.uk/~pszgmh/fold.pdf |
| 12:33:34 | × | underlap quits (~underlap@229.171.115.87.dyn.plus.net) (Quit: Client closed) |
| 12:37:18 | × | sympt quits (~sympt@user/sympt) (Ping timeout: 265 seconds) |
| 12:38:45 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 265 seconds) |
| 12:38:54 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 12:40:09 | → | underlap joins (~underlap@229.171.115.87.dyn.plus.net) |
| 12:41:23 | <underlap> | merijn: Yes, that's the one! Thanks. |
| 12:45:01 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
| 12:50:21 | → | gensyst joins (gensyst@user/gensyst) |
| 12:50:50 | <gensyst> | Does NamedFieldPuns {foo} mean {foo = foo} ? I guess it does. Is there something similar for doing {foo = !foo} ? |
| 12:50:57 | <gensyst> | to get it strict |
| 12:53:07 | <merijn> | gensyst: Yes to the first one, I dunno to the second :p |
| 12:57:18 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 13:00:49 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 13:03:38 | → | david_ joins (~david@37.171.241.82) |
| 13:03:45 | <david_> | Hello :wave: |
| 13:04:12 | <david_> | I have a basic question because I want to be able to share some code in a folder with other folder |
| 13:04:34 | <eldritchcookie[4> | hello i am considering making a library similar to HaTeX for ConTeXt instead of LaTeX and i would like for it to be impossible to generate invalid markup however in ConTeX it is common to use custom defined commands is there a way to force the usage of a custom command to be only possible after its definition? |
| 13:04:40 | <eldritchcookie[4> | hello david use modules |
| 13:04:42 | <david_> | let say I have a program in folderA/folderB/myProgram.hs |
| 13:05:00 | <david_> | And i I want to use code from folderX/folderY/lib.hs |
| 13:05:07 | <david_> | How can I do that exactly? |
| 13:05:36 | <merijn> | david_: How are you building your code atm? |
| 13:05:50 | <david_> | I'm just cd folderA/folderB/ and ghc myProgram.hs |
| 13:06:13 | <eldritchcookie[4> | use cabal or stack |
| 13:06:14 | <eldritchcookie[4> | https://cabal.readthedocs.io/en/stable/getting-started.html |
| 13:06:19 | <merijn> | ok, so first of all, you will probably wanna start using cabal to build stuff |
| 13:06:29 | <david_> | mmh I was hoping avoiding using a package manager at all. |
| 13:06:32 | <david_> | but ok |
| 13:06:45 | <merijn> | david_: Realistically, that's not possible |
| 13:07:03 | <merijn> | In theory you could, but it will suck and nobody's gonna be able to help you, because no one really works like that |
| 13:07:17 | <merijn> | david_: Why do you wanna avoid cabal? |
| 13:07:19 | <david_> | now next question: should I do a stack project at the root of my folder or should I do a stack project for the lib.hs or should I do a stack project for every folder ? |
| 13:07:47 | <david_> | Just want to keep it as simple as possible |
| 13:08:14 | <Joao003> | simple: have a copy of the program in both folders, and update it accordingly |
| 13:08:32 | <eldritchcookie[4> | that is a horrendously bad idea |
| 13:08:38 | <david_> | yeah :) |
| 13:08:40 | → | __monty__ joins (~toonn@user/toonn) |
| 13:08:49 | <david_> | _horrendously_ |
| 13:08:54 | → | Guest22 joins (~Guest22@136.142.159.49) |
| 13:09:06 | ← | Guest22 parts (~Guest22@136.142.159.49) () |
| 13:09:07 | <merijn> | david_: I don't know the best approach for stack. But for cabal, you can just run "cabal init" in your library and program folders to set things up. Cabal also has a notion of project files for depending on projects in other local directories |
| 13:10:00 | <merijn> | I'm pretty sure stack has a similar kinda dealio |
| 13:10:42 | <eldritchcookie[4> | depends on how you setup things but there are some different concepts to understand you have packages, which may contain libraries and executables those can contain modules |
| 13:11:00 | <david_> | yeah, the main quirk I have at this point is that I have many many executables that will reuse the same common code. |
| 13:11:02 | <eldritchcookie[4> | if you package depend on each other they should be in the same project |
| 13:11:28 | <merijn> | david_: Cabal packages can have multiple executables depending on a library defined in the same package, though :) |
| 13:11:31 | <eldritchcookie[4> | if you have many executable do one package with one library and many executable that will be the easiest |
| 13:11:50 | <merijn> | david_: So you coud just have a package with a library of common code and multiple executables using that same library |
| 13:13:04 | × | biberu quits (~biberu@user/biberu) (Ping timeout: 248 seconds) |
| 13:14:26 | × | underlap quits (~underlap@229.171.115.87.dyn.plus.net) (Quit: Client closed) |
| 13:14:28 | <david_> | yeah, wondering if I will need a cabal file for each one of the executables |
| 13:14:41 | <eldritchcookie[4> | no one cabal file per package |
| 13:15:07 | <eldritchcookie[4> | in that one you do executable x1 ... |
| 13:15:07 | <eldritchcookie[4> | executable x2 ... etc |
| 13:15:28 | <eldritchcookie[4> | the cabal guide explains everything clearly https://cabal.readthedocs.io/en/stable/concepts-and-development.html |
| 13:16:01 | <eldritchcookie[4> | trust me way better than one eldritch cookie helping you |
| 13:18:25 | <david_> | ok, thank you, it can be a bit arcane somehow, so help from experienced users is definitely something in this case :) |
| 13:19:01 | <david_> | I have a short question, can you eventually have a single entrypoint and load some code dynamically in haskell? |
| 13:19:53 | <eldritchcookie[4> | you mean single executable that executes one of the actions? |
| 13:21:18 | <eldritchcookie[4> | if so that is easy just use https://hackage.haskell.org/package/optparse-applicative |
| 13:22:16 | <eldritchcookie[4> | or do you mean like an interpreter? in that case use hint or the gch api |
| 13:22:26 | <eldritchcookie[4> | https://hackage.haskell.org/package/hint |
| 13:22:44 | <david_> | ok, thank you. It might be more adapted to have a single entry point and call a specific function according to this arguments |
| 13:23:56 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 13:24:25 | × | bhall quits (~brunohall@195.147.207.136) (Read error: Connection reset by peer) |
| 13:24:48 | → | bhall joins (~brunohall@138.199.22.101) |
| 13:28:03 | <[Leary]> | eldritchcookie[4: It sounds like the problem you're trying to solve is equivalent to that of representing binders (such as in the lambda calculus) in data types, without allowing free variables. The usual "nominal" representation won't work, at least not without singletons level type magic. A HOAS, or better, PHOAS approach might suffice. This article <https://www.schoolofhaskell.com/user/edwardk/phoas> is good reading, though you might need to brows |
| 13:28:03 | <[Leary]> | e related articles or papers for a bit of context. |
| 13:29:57 | <eldritchcookie[4> | thanks [Leary] i had no clue how to even begin solving my problem |
| 13:32:50 | × | mechap1 quits (~mechap@user/mechap) (Ping timeout: 268 seconds) |
| 13:34:22 | → | mechap1 joins (~mechap@user/mechap) |
| 13:35:15 | → | danza joins (~francesco@151.44.144.40) |
| 13:35:19 | <eldritchcookie[4> | are there some papers or sources which would help explain Higher Order Abstract Syntax? i really understood nothing of the article |
| 13:35:39 | <[exa]> | eldritchcookie[4: how big subset of tex are you targeting? |
| 13:38:20 | × | Feuermagier_ quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:38:25 | <[exa]> | anyway the HOAS paper is this one https://www.cs.cmu.edu/~fp/papers/pldi88.pdf |
| 13:38:59 | → | Feuermagier_ joins (~Feuermagi@user/feuermagier) |
| 13:40:11 | <eldritchcookie[4> | the most common things itemize, sections, descriptions and tables |
| 13:41:07 | <[exa]> | btw a pretty good material on representing languages is this one https://serokell.io/blog/introduction-tagless-final -- it gives the overview of taggedness vs finalness |
| 13:41:46 | <eldritchcookie[4> | thanks |
| 13:41:58 | → | mimi1vx[m] joins (~osukupmat@2001:470:69fc:105::2:418d) |
| 13:42:00 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:43:10 | <eldritchcookie[4> | i really love haskell none of the other languages i used made me read a scientific paper |
| 13:43:38 | <[exa]> | you can technically parse out argument numbers and syntaxes out of \newcommand-style definitions, which should give you a quite reasonable coverage even for custom commands (at least pandoc-style) |
| 13:44:26 | <[exa]> | OTOH honestly, tex is wild and this probably won't work for many other "normal" packages, especially the ones that mess with the token processor functionality |
| 13:44:37 | <[exa]> | i.e., verbatim |
| 13:45:10 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 268 seconds) |
| 13:46:12 | × | thongpv quits (~thongpv87@14.179.159.25) (Remote host closed the connection) |
| 13:46:16 | <eldritchcookie[4> | yeah tex is wild but context is really consistent, i bet i still will need to read about luatex internals but one can hope |
| 13:46:38 | → | thongpv joins (~thongpv87@14.179.159.25) |
| 13:46:48 | → | tomku joins (~tomku@user/tomku) |
| 13:47:05 | → | mmhat joins (~mmh@p200300f1c707be27ee086bfffe095315.dip0.t-ipconnect.de) |
| 13:50:55 | × | david_ quits (~david@37.171.241.82) (Ping timeout: 248 seconds) |
| 13:51:38 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 13:51:50 | <[exa]> | luatex is wild as well... here you want the view of tex as a markup, which is common, but it's insufficient for many purposes as the only semantics of tex is the interpretation by expansion and shipout |
| 13:52:37 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 13:52:47 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 13:55:01 | → | cheater_ joins (~Username@user/cheater) |
| 13:57:47 | × | cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds) |
| 13:57:47 | cheater_ | is now known as cheater |
| 13:57:53 | <merijn> | [exa]: Thank god LaTeX 3 is somewhat more sane |
| 13:58:31 | <[exa]> | merijn: is it though |
| 13:59:35 | <merijn> | [exa]: Yes, in that it has a single, consistent, well documented format for specifying how to parse arguments over newcommand and custom \makeatletter pain |
| 13:59:49 | <geekosaur> | "somewhat"… and relative to TeX |
| 14:00:57 | <merijn> | I can actually write non-trivial stuff using latex 3, that's more than I can say about latex 2e :p |
| 14:01:25 | × | mmhat quits (~mmh@p200300f1c707be27ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8) |
| 14:03:19 | <[exa]> | but wait latex3 is still build upon the tex base, right? |
| 14:04:34 | → | Henson joins (~kvirc@207.136.101.195) |
| 14:07:12 | <merijn> | [exa]: latex was always just a set of TeX macros, yes |
| 14:07:56 | <merijn> | latex3 just offers replacements for a lot of the newcommand/newenvironment stuff to be more consistent and easier to write more complicated things with |
| 14:08:30 | <merijn> | [exa]: Like the ability to sensibly deal with verbatim arguments, default arguments, etc. |
| 14:09:44 | <[exa]> | ah man, people didn't get it |
| 14:10:03 | <[exa]> | the mantra of latex is "if it's hard to do in latex, you shouldn't do it" |
| 14:10:18 | <merijn> | [exa]: Lots of sensible things are hard to do in latex >.> |
| 14:10:50 | <Henson> | my company's looking to hire a Haskell developer, and I was wondering if anybody has any advice on where to look or other considerations? I think I asked this a year or two ago and people said just post on Indeed and other regular job sites, offer decent pay, and don't expect to find somebody who is close to your office. |
| 14:11:09 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 14:11:24 | <Henson> | I often hear non-haskell people say, "it's hard to find Haskell developers", but is that true? |
| 14:11:56 | <Henson> | merijn: I'll second that! |
| 14:12:01 | <[exa]> | Henson: there has been some advice around on how (not) to post job ads on HN |
| 14:12:19 | <merijn> | Henson: "It Depends (TM)" |
| 14:12:28 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 14:12:31 | <Henson> | [exa]: what's HN? |
| 14:12:44 | <merijn> | Hacker News |
| 14:13:16 | <Henson> | merijn: I think in the past people told me that Haskell developers are often more experienced developers, so you won't find Haskell developers willing to work for minimum wage. |
| 14:13:35 | <merijn> | Henson: Some tips on "where" are: the Haskell Weekly Newsletter offers for pay job listings, the /r/haskell reddit and haskell-cafe mailing list, here, there's also haskellers.com |
| 14:15:01 | <merijn> | Henson: That is probably true. There's probably not a lot of medior/experienced juniors around (compared to python, java, c#). So your options are basically "super experienced (but those want high pay and may be unwilling to move)" or "inexperienced juniors" |
| 14:15:42 | <Henson> | merijn: are common job posting sites also likely to be fruitful for finding candidates? |
| 14:16:53 | → | biberu joins (~biberu@user/biberu) |
| 14:17:16 | <merijn> | "maybe" |
| 14:17:24 | <__monty__> | Henson: The whole "Haskell devs are more experienced," is usually the catch. If you're looking for "Haskell" devs as a cryptic way of saying experienced without implying high pay then you'll have a hard time finding anyone. If you're really just looking for people willing to write Haskell, no matter their experience, then it should be possible but it'll probably involve some training. Basically the |
| 14:17:30 | <__monty__> | same thing merijn's saying. |
| 14:18:37 | → | asthasr joins (~asthasr@208.80.78.154) |
| 14:18:41 | <[exa]> | Henson: also just smash it in #-offtopic, I recall there were people who were seeking jobs there. :D |
| 14:19:14 | <merijn> | tbh, Haskell job openings are solidly "on topic" materials if not being spammed |
| 14:20:19 | <Henson> | no, I'm just looking for somebody who knows Haskell. Even if they're not really experienced, just knowing the FP mindset, how to code in Haskell, how to use Monads and transformers, laziness, etc. without them taking a year to learn it would be great. They'd be working on an existing codebase that would give them structure to work with. |
| 14:20:42 | <Henson> | merijn: can you rephrase what you just said? |
| 14:21:07 | <merijn> | Henson: which part? :p |
| 14:21:51 | <Henson> | merijn: the "Haskell job openings are solidly "on topic" materials if not being spammed" |
| 14:22:45 | <merijn> | Henson: [exa]: Was implying job openings could be posted in #haskell-offtopic. I was just saying that announcing you have an opening would be "on topic" for Haskell, as long as it's nog being spammed every hour or something :) |
| 14:23:49 | <Henson> | merijn: ahhhhh, ok, now I understand. |
| 14:24:24 | <Henson> | merijn: it was the IRC chat context of the sentence I was missing. |
| 14:24:58 | <geekosaur> | I'd be fine with it repeated every 8 hours or so, given that not everyone lives in the same timezone |
| 14:26:00 | <geekosaur> | although at that point there might be better venues such as cafe or maybe the discourse |
| 14:26:37 | <merijn> | Maybe I should check out the discourse thingy at some point...so far it feels to newfangled and zoomer for me :p |
| 14:26:55 | Henson | chuckles |
| 14:27:02 | <geekosaur> | enh, it's close enough to the online forums of the 90s |
| 14:29:24 | <darkling> | Sounds horrible. :) |
| 14:31:06 | <Henson> | thanks for the advice everybody, I appreciate it! |
| 14:31:12 | × | jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
| 14:32:09 | × | GoldsteinQ quits (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:32:47 | → | GoldsteinQ joins (~goldstein@goldstein.rs) |
| 14:35:15 | <merijn> | geekosaur: I doubt there's enough inline HTML shenanigans for that |
| 14:35:42 | <geekosaur> | 🙂 |
| 14:37:23 | → | slack1256 joins (~slack1256@186.11.59.217) |
| 14:38:49 | × | ddellacosta quits (~ddellacos@146.70.166.234) (Ping timeout: 268 seconds) |
| 14:39:15 | <geekosaur> | or <marquee> |
| 14:44:38 | <merijn> | Flaming text! |
| 14:45:06 | <darkling> | You have to have an "under construction" animated GIF in there somewhere, too. |
| 14:45:59 | <gensyst> | We need a StrictNamedFieldPuns so we can do { !foo }, equivalent to {foo = !foo} |
| 14:47:16 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) (Ping timeout: 252 seconds) |
| 14:47:56 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 14:52:34 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:9815:cfda:3661:17bb) |
| 14:55:54 | → | razetime joins (~Thunderbi@117.193.6.240) |
| 15:03:30 | × | malte quits (~malte@mal.tc) (Remote host closed the connection) |
| 15:03:44 | <merijn> | Man, the ease with which you can browse docs for old versions on Hackage is so nice... |
| 15:04:35 | → | malte joins (~malte@mal.tc) |
| 15:05:22 | × | Joao003 quits (~Joao003@2804:840:8302:200:d31:1e61:32ad:8571) (Quit: Leaving) |
| 15:07:39 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 15:09:25 | × | malte quits (~malte@mal.tc) (Remote host closed the connection) |
| 15:09:44 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:13:27 | <gensyst> | merijn, what do you mean? |
| 15:13:37 | <gensyst> | and compared to what? |
| 15:18:27 | → | oldfashionedcow joins (Rahul_Sand@user/oldfashionedcow) |
| 15:20:18 | → | ddellacosta joins (~ddellacos@146.70.166.170) |
| 15:21:36 | <sm> | versioned docs are good 👍🏻 |
| 15:25:16 | → | curious-user joins (~user@user/curious-user) |
| 15:27:05 | <cheater> | Henson: are you there? |
| 15:28:02 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 15:29:09 | <merijn> | gensyst: This thought triggered by me trying to browse documentation for old versions of a python library and being completely unable to find them |
| 15:30:56 | <Henson> | cheater: yes, I'm still here |
| 15:33:37 | <gensyst> | merijn, ok i see |
| 15:37:25 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:38:42 | × | dsrt^ quits (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 15:39:48 | <mauke> | merijn: I think it's still kind of clumsy compared to CPAN |
| 15:42:57 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 15:43:05 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 15:46:13 | → | malte joins (~malte@mal.tc) |
| 15:47:34 | → | shapr joins (~user@68.54.166.125) |
| 15:47:38 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:50:28 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) |
| 15:52:41 | mechap1 | is now known as mechap |
| 15:52:51 | × | curious-user quits (~user@user/curious-user) (Quit: WeeChat 3.8) |
| 15:55:54 | × | AlexZenon quits (~alzenon@178.34.160.79) (Ping timeout: 268 seconds) |
| 15:57:08 | × | Alex_test quits (~al_test@178.34.160.79) (Ping timeout: 268 seconds) |
| 15:59:42 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 16:00:10 | → | Alex_test joins (~al_test@178.34.160.79) |
| 16:01:00 | → | AlexZenon joins (~alzenon@178.34.160.79) |
| 16:03:35 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 16:03:36 | × | danza quits (~francesco@151.44.144.40) (Read error: Connection reset by peer) |
| 16:03:39 | × | yrlnry quits (~yrlnry@pool-108-36-173-41.phlapa.fios.verizon.net) (Read error: Connection reset by peer) |
| 16:04:11 | × | bhall quits (~brunohall@138.199.22.101) (Ping timeout: 260 seconds) |
| 16:04:13 | → | yrlnry joins (~yrlnry@2600:4040:738e:5400:87d:f2d:382e:ac3d) |
| 16:05:28 | × | mechap quits (~mechap@user/mechap) (Quit: WeeChat 3.8) |
| 16:05:52 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 16:06:04 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:07:48 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 16:09:21 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:09:29 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:09:55 | × | malte quits (~malte@mal.tc) (Remote host closed the connection) |
| 16:10:53 | → | malte joins (~malte@mal.tc) |
| 16:10:55 | → | mechap joins (~mechap@user/mechap) |
| 16:10:55 | × | mechap quits (~mechap@user/mechap) (Client Quit) |
| 16:11:18 | → | mechap joins (~mechap@user/mechap) |
| 16:11:56 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:12:26 | → | hounded joins (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
| 16:12:47 | → | hounded_woodstoc joins (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
| 16:16:08 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 16:17:59 | × | freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds) |
| 16:18:54 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 16:20:33 | → | danza joins (~francesco@151.47.240.93) |
| 16:22:13 | → | qhong joins (~qhong@rescomp-21-400677.stanford.edu) |
| 16:22:42 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:25:04 | × | qhong_ quits (~qhong@rescomp-21-400677.stanford.edu) (Ping timeout: 248 seconds) |
| 16:25:12 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 16:25:46 | → | troydm joins (~troydm@user/troydm) |
| 16:25:53 | → | Lobel joins (~Lobel@193.198.16.217) |
| 16:26:03 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:27:30 | × | Lobel quits (~Lobel@193.198.16.217) (Remote host closed the connection) |
| 16:30:30 | × | Guest75 quits (~Guest75@178.141.149.12) (Quit: Client closed) |
| 16:30:45 | → | Guest75 joins (~Guest75@178.141.149.12) |
| 16:32:45 | <Guest75> | Hello. When using cata recustion scheme (catamorphism), may I make my F-algebra a different type, namely a monad, i.e. not just f a -> a, but, say, f a -> Maybe a? Is there any other rec. scheme for such case? |
| 16:33:58 | → | freeside joins (~mengwong@103.252.202.170) |
| 16:37:24 | × | merijn quits (~merijn@195.114.232.94) (Ping timeout: 252 seconds) |
| 16:42:35 | → | bhall joins (~brunohall@138.199.22.101) |
| 16:44:23 | <ncf> | Guest75: https://hackage.haskell.org/package/data-fix-0.3.2/docs/Data-Fix.html#v:foldFixM ? |
| 16:44:25 | <[exa]> | Guest75: IIRC there were specialized versions of the schemes for that |
| 16:44:29 | → | Joao003 joins (~Joao003@2804:840:8302:200:d31:1e61:32ad:8571) |
| 16:44:54 | → | gensystt joins (gensyst@user/gensyst) |
| 16:44:57 | <Guest75> | cool. thanks! |
| 16:45:25 | <ncf> | also https://github.com/recursion-schemes/recursion-schemes/issues/3#issuecomment-229367877 |
| 16:47:43 | × | gensyst quits (gensyst@user/gensyst) (Ping timeout: 252 seconds) |
| 16:49:34 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 16:50:01 | <Square> | If you should attend one Haskell conference, which one should it be? |
| 16:52:07 | <[exa]> | ICFP-associated workshops are a kinda traditional venue, and some of the zurihac-style events are really cool too |
| 16:52:40 | <[exa]> | (there was something in München this year but I forgot the name) |
| 16:53:14 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 16:57:38 | <cheater> | go to icfp |
| 16:58:25 | <monochrom> | Haskell Love is a better fit the description "Haskell conference". |
| 16:58:35 | <monochrom> | s/fit/fit to/ |
| 16:58:45 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) |
| 17:03:14 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) (Ping timeout: 255 seconds) |
| 17:09:00 | <Joao003> | what is this s/ thingy |
| 17:09:18 | <Rembane> | Joao003: sed syntax for replacing stuff |
| 17:09:26 | <Rembane> | Joao003: s/replace this/with this/ |
| 17:09:41 | <Joao003> | what is sed |
| 17:10:12 | <yushyin> | sed - stream editor for filtering and transforming text (cli regex tool) |
| 17:10:15 | <Rembane> | An ancient UNIX tool, it's still very useful |
| 17:11:23 | × | danza quits (~francesco@151.47.240.93) (Ping timeout: 246 seconds) |
| 17:11:45 | <darkling> | The first time I got my hands on a Linux box, I couldn't find an editor, but I knew about "man" and "sed", and configured the entire machine (including writing an XF86config file) with just sed. :) |
| 17:11:56 | <Rembane> | Lovely! |
| 17:12:55 | <darkling> | The machine was, unfortunately, so cramped on RAM that X was unusable, even with twm. It took about 5 minutes of swapping just to draw the root menu... :) |
| 17:13:08 | <yushyin> | darkling: you seem to like to torture yourself |
| 17:13:54 | <monochrom> | Or s/tortue/challenge/ |
| 17:14:19 | <[exa]> | I guess you guys saw this already but it's a good time to just put it here: https://aurelio.net/projects/sedarkanoid/arkanoid.sed.html |
| 17:14:21 | <monochrom> | Now build a PC emulator on top of one of those Lego Turing machines and repeat the experiment >:) |
| 17:14:27 | <darkling> | It was a 25 MHz ARM3 with 8 MiB of RAM and a 243 MiB hard disk. |
| 17:15:00 | <Joao003> | Wait those 3 slashes make me remember of that /// esolang |
| 17:17:28 | × | Guest75 quits (~Guest75@178.141.149.12) (Ping timeout: 260 seconds) |
| 17:19:54 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 17:20:38 | <tomsmeding> | Joao003: "/// (pronounced "slashes"), or Slashalash, is a minimalist Turing-complete esoteric programming language, invented by Tanner Swett (User:Ihope127) in 2006 based on the "s/foo/bar/" notation that everybody seemed to be using in IRC. " |
| 17:20:48 | <tomsmeding> | you knew sed notation before you knew it was called sed notation |
| 17:20:53 | <tomsmeding> | https://esolangs.org/wiki//// |
| 17:22:29 | <monochrom> | Ugh that comes full circle. :) |
| 17:23:17 | <Joao003> | Hello World in ///: |
| 17:23:20 | <Joao003> | Hello, World! |
| 17:23:27 | <Joao003> | Here's a cooler version: |
| 17:23:59 | <Joao003> | / Hello Hello/, World!/Hello Hello Hello |
| 17:24:29 | <Joao003> | ignore the space at the beginning, it's so that irc doesn't interpret it as a command |
| 17:25:11 | <mauke> | the substitute command s/// originated in ed, and from there made its way into sed, ex, and vi |
| 17:25:18 | <Joao003> | lol |
| 17:25:27 | <Joao003> | // was probably inspired by it |
| 17:25:33 | <mauke> | and thence vim and perl |
| 17:25:37 | <Joao003> | considering the only thing you can do is replace things |
| 17:25:38 | → | paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
| 17:25:44 | × | razetime quits (~Thunderbi@117.193.6.240) (Remote host closed the connection) |
| 17:25:45 | <darkling> | Did ed have any ancestry in TECO? |
| 17:25:55 | <Joao003> | s/\/\//\/\/\// |
| 17:26:37 | <mauke> | (also, / has no special meaning in IRC-the-protocol. you'll have to take that one up with your IRC client) |
| 17:27:36 | <Joao003> | s/IRC-the-protocol/the IRC protocol/ |
| 17:27:59 | <Joao003> | also if there are slashes do you need to escape them with \ |
| 17:28:31 | <geekosaur> | yes |
| 17:28:52 | <darkling> | In sed, you can use any character, so s://:/: would work just as well as s/\/\//\// (and is more readable) |
| 17:28:54 | <Joao003> | for example if i want to convert * into / i use s/*/\// |
| 17:29:14 | <mauke> | well, you could also switch to another delimiter: s!/foo/!/bar/! |
| 17:29:18 | <Joao003> | but then you need to escape : |
| 17:29:29 | <geekosaur> | you can actually use any printable character as separator; / is just convention. s,\*,/, |
| 17:29:35 | × | ubert1 quits (~Thunderbi@2a02:8109:abc0:6434:841e:e311:a268:c104) (Quit: ubert1) |
| 17:29:45 | <Joao003> | "any character"? what about \? |
| 17:30:12 | <Joao003> | what do you use to escape \ ? |
| 17:30:14 | <geekosaur> | depends on the program. at least one I've run into accepted it and turned off escaping |
| 17:30:46 | <Joao003> | \ is not used very often |
| 17:31:04 | <Joao003> | so thats why its used for escaping characters |
| 17:31:13 | <geekosaur> | (more correctly, escaped everything for the purposes of e.g. regex metacharacters, but you couldn't then escape \ for the delimiter) |
| 17:31:44 | <Joao003> | s/// probably inspired js' regex syntax |
| 17:32:29 | <mauke> | I'm 99.9% sure JS took that one from Perl |
| 17:33:06 | <Joao003> | the // and then the flags |
| 17:33:07 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 17:33:26 | <Joao003> | if im correct sed also had the flags |
| 17:33:40 | <geekosaur> | a limited set of them, yes. as did ed |
| 17:33:48 | <geekosaur> | in particular, /i |
| 17:33:58 | <Joao003> | and only /i? |
| 17:33:59 | <darkling> | And /g |
| 17:34:01 | <geekosaur> | sed added /tlabelamong others |
| 17:34:12 | <geekosaur> | and /g, yes |
| 17:34:29 | <Joao003> | g for global |
| 17:34:29 | <darkling> | /g is about the only one I use in practice. |
| 17:34:33 | <Joao003> | like in javascript |
| 17:34:57 | × | ddellacosta quits (~ddellacos@146.70.166.170) (Quit: WeeChat 3.7.1) |
| 17:35:29 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 17:35:31 | <Joao003> | it goes and checks for every match, right? |
| 17:35:33 | <darkling> | sed also used // to delimit regexes in line selectors: 3,/^foo/s/bar/baz/ # "For every line between line 3 and the next line that starts with foo, replace bar with baz" |
| 17:36:11 | <geekosaur> | and, confusingly, allowed you to switch delimiter with \ iirc |
| 17:36:12 | × | yrlnry quits (~yrlnry@2600:4040:738e:5400:87d:f2d:382e:ac3d) (Remote host closed the connection) |
| 17:36:22 | → | ddellacosta joins (~ddellacos@143.244.47.87) |
| 17:36:53 | <Joao003> | s/foo/bar/g substitute every foo for a bar |
| 17:36:53 | <geekosaur> | 3,\,foo,s!!bar!g |
| 17:37:09 | <darkling> | Oh, nice. Didn't know about that. |
| 17:37:22 | → | yrlnry joins (~yrlnry@2600:4040:738e:5400:87d:f2d:382e:ac3d) |
| 17:38:11 | <Joao003> | 1,3s/Hello/World/g |
| 17:38:35 | <Joao003> | would probably substitute every Hello to a World in lines between 1 and 3 |
| 17:38:46 | <geekosaur> | yes |
| 17:39:25 | <Joao003> | so sed is just a find & replace with regex |
| 17:39:54 | <darkling> | No, it's more than that. |
| 17:40:02 | <darkling> | We're just concentrating on the s command. |
| 17:40:06 | <Joao003> | oh |
| 17:40:39 | <geekosaur> | [exa] pointed to an example of what sed can do |
| 17:40:49 | <geekosaur> | if you value your sanity, though, don't 🙂 |
| 17:40:57 | <Joao003> | s,s/a/b/,s/c/d/, |
| 17:40:59 | <darkling> | I've seen a ray-tracer written in sed. :) |
| 17:41:18 | <Joao003> | substitution substitution |
| 17:42:05 | <Joao003> | also substitution substitution sounds like that "police police police police police police police police" thingy |
| 17:42:35 | <Joao003> | also can sed multiply stringsd |
| 17:42:41 | <Joao003> | strings* |
| 17:43:21 | <mauke> | multiply in what sense? |
| 17:43:23 | → | econo joins (uid147250@user/econo) |
| 17:43:23 | × | mastarija quits (~mastarija@2a05:4f46:e03:6000:c226:21cc:7cd8:a29e) (Ping timeout: 256 seconds) |
| 17:43:28 | <geekosaur> | sed is turing complete, so yes |
| 17:43:38 | <Joao003> | make copies for example string -> stringstring |
| 17:43:44 | <darkling> | You can do back-references in your search/replace, so yes. |
| 17:43:50 | <Joao003> | how |
| 17:44:53 | <geekosaur> | use \( \) to capture part or all of the regex and \1, \2, etc. to reference them in either the pattern or the replacement |
| 17:45:12 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:45:40 | <darkling> | Take a look through the man page -- it's pretty short, but it lists all the commands with a short description. |
| 17:45:57 | <Joao003> | sorry i don't use linux |
| 17:46:02 | <Joao003> | ok i will use wsl |
| 17:46:05 | <yushyin> | is this #unixtools or #haskell? ;D |
| 17:46:12 | <Joao003> | lol |
| 17:46:23 | <Joao003> | yeah the topic diverged too far |
| 17:46:43 | <darkling> | Template Haskell? No need, I've got sed! |
| 17:47:32 | <Joao003> | s/\(string\)/\1\1/g would search for every "string" and replace it with "stringstring" |
| 17:48:05 | <darkling> | Yes, although fairly pointless in this case, since "string" is constant, so you could just write "stringstring" instead of "\1\1" |
| 17:51:18 | <mauke> | in Perl, that would be s/(string)/$1$1/g (here $1 is a real variable, usable outside) |
| 17:51:48 | <mauke> | that's what JavaScript copied for its str.replace(/(string)/g, '$1$1') |
| 17:52:12 | → | kurbus joins (~kurbus@user/kurbus) |
| 17:53:51 | <geekosaur> | sed also has a "memory" via the g, h, and x commands. it's remembered across lines |
| 17:54:01 | <geekosaur> | "hold space" |
| 17:55:01 | <Joao003> | but less bytes |
| 17:55:05 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 17:55:05 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 17:56:11 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 17:56:29 | <darkling> | The one thing that sed is annoyingly bad at in text processing is dealing with line endings -- if you want to, say, concatenate two lines into one, it's always a struggle that's more easily dealt with in some other tool. |
| 17:57:44 | <geekosaur> | actually I think that's N;s/\n// |
| 17:58:41 | <[exa]> | darkling: you can always temporarily `tr` the endings to say \x01 and completely ignore the sed semantics |
| 17:58:58 | <darkling> | geekosaur: I don't think I ever had much luck with doing it that way, but I'll try to remember for next time. |
| 17:59:58 | <Joao003> | i'd use vscode's ctrl+h with the regex option |
| 18:00:21 | <geekosaur> | some old versions of sed didn't support matching \n, iirc, but gnu sed's fine with it |
| 18:00:33 | <geekosaur> | think it was v7 and old bsd sed that didn't |
| 18:01:16 | <Joao003> | geekosaur: also what's the deal with g h and x |
| 18:01:29 | <Inst> | can you help me debug a weird issue? |
| 18:01:50 | <Inst> | execWriterT outperforms foldl', foldM |
| 18:01:56 | <geekosaur> | Joao003, look up "sed hold space" |
| 18:02:29 | <[exa]> | Inst: is it a strict writer or a lazy writer? |
| 18:02:37 | <Inst> | CPS |
| 18:02:46 | <Inst> | StateT.Strict also gets the same performance |
| 18:03:14 | <geekosaur> | Joao003, g replaces the pattern space with the hold space; h replaces the hold space with the pattern space; x swaps them |
| 18:03:35 | <geekosaur> | g and h have uppercase versions and append instead of replacing |
| 18:03:41 | <[exa]> | Inst: might be the case that the foldl' is actually not forced along the computation? |
| 18:04:04 | <[exa]> | Inst: btw I guess if you can pastebin a small reproducer it would be much easier to judge |
| 18:04:47 | <Inst> | ugh, i just sprung a space leak |
| 18:04:51 | <Inst> | debugging that instead |
| 18:05:25 | <geekosaur> | s/and append/that append/ |
| 18:06:33 | <Inst> | i can reproduce, but i think it has to do with list fusion failing or something |
| 18:06:51 | <Inst> | it's a dumb issue thta i can't really fix |
| 18:07:00 | <Inst> | the native idiom for what i'm trying to do should be foldM |
| 18:07:15 | <Inst> | resorting to WriterT or StateT is horrible |
| 18:07:49 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 18:08:31 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) |
| 18:08:35 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 18:08:43 | <Joao003> | now i understand |
| 18:09:32 | <Inst> | the code roughly looks like this |
| 18:09:38 | <Joao003> | that line concatenation thingy can be solved with g and h can't it |
| 18:09:40 | <Inst> | the go is the helper for the foldM, or rather got modified from it |
| 18:10:02 | <Joao003> | also geekosaur let's move to #haskell-offtopic |
| 18:10:21 | <geekosaur> | yeh, I was thinking we're past that point already |
| 18:11:00 | <Joao003> | there's another conversation starting |
| 18:11:37 | <Joao003> | im moving now |
| 18:12:01 | <Inst> | this is the foldM version of go for |
| 18:12:06 | <Inst> | @[exa] |
| 18:12:06 | <lambdabot> | Unknown command, try @list |
| 18:12:07 | <Inst> | go !a _ = ($ a) . bool (second succ) (first succ) <$> (runReaderT montyHall' $! config) |
| 18:12:11 | <Inst> | https://paste.tomsmeding.com/bgy0dpeS |
| 18:16:47 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 18:18:50 | × | thongpv quits (~thongpv87@14.179.159.25) (Ping timeout: 255 seconds) |
| 18:20:04 | → | kassouni joins (~kassouni@2601:646:400:68b0:f5a4:b4c5:300f:d7b8) |
| 18:20:52 | × | kassouni quits (~kassouni@2601:646:400:68b0:f5a4:b4c5:300f:d7b8) (Client Quit) |
| 18:21:51 | × | avicenzi quits (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 260 seconds) |
| 18:26:41 | <glguy> | Inst: are you basically trying to do this? https://paste.tomsmeding.com/GCtLgEp9 |
| 18:27:24 | <Inst> | ya |
| 18:29:42 | → | andrew2 joins (~andrew@130.159.237.115) |
| 18:31:47 | <andrew2> | Is there a way to implement a type family with kind `Bool -> *`? |
| 18:32:32 | <glguy> | yes |
| 18:33:21 | × | acidsys quits (~crameleon@openSUSE/member/crameleon) (Ping timeout: 252 seconds) |
| 18:34:01 | <andrew2> | the only thing I managed to implement is something like `data family Choose (b :: Bool) :: *` but then i can't use `Choose` unapplied |
| 18:34:16 | <glguy> | Right, you can't use type families unapplied |
| 18:34:57 | <glguy> | but you can use data families unapplied |
| 18:35:17 | <andrew2> | what's the difference? |
| 18:35:44 | × | oldfashionedcow quits (Rahul_Sand@user/oldfashionedcow) (Ping timeout: 248 seconds) |
| 18:36:44 | <glguy> | Do you know the difference between using normal 'type' and 'data'? (not families) |
| 18:37:45 | <Joao003> | why not make the 'data' have 2 constructors |
| 18:38:03 | <andrew2> | I guess? `type` is for synonyms and `data` defines inhabitants for the type |
| 18:38:13 | <glguy> | andrew2: ok, same idea |
| 18:38:37 | <Inst> | any clue why the foldM underperforms a writerT CPS? |
| 18:38:48 | <andrew2> | Joao003 I have another typeclass with associated family with kind `Bool -> *` |
| 18:38:54 | <Joao003> | oh |
| 18:39:04 | <Inst> | writerT CPS becomes a bit shakey if I use replicateM instead of replicateM_ |
| 18:39:32 | <glguy> | Inst: that'd depend on your code. I didn't see any foldM in the paste |
| 18:40:25 | <Inst> | this is the foldM version |
| 18:40:25 | <Inst> | foldM go (MkMHWL 0 0) (runReaderT montyHall' $! config) |
| 18:40:33 | <Inst> | go !a _ = ($ a) . bool (second succ) (first succ) <$> (runReaderT montyHall' $! config) |
| 18:41:03 | <andrew2> | okay so now I'm getting error because my data family is not evaluated so `Imp 'False` is not equal to the type I've given it. |
| 18:41:49 | <andrew2> | which I guess is what you meant glguy `Impl 'False` is now it's own type rather than reducing to its right-hand-side |
| 18:42:01 | <glguy> | yeah, it's not a synonym, it's a new type |
| 18:42:03 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:42:33 | <glguy> | it's got its own value constructors distinct from any other value constructors |
| 18:43:29 | <glguy> | Inst: replicateM_ with writer doesn't generate the intermediate list |
| 18:43:45 | <Inst> | yeah, but the direct loop versions seem unperformant too |
| 18:43:59 | <glguy> | what's the direct loop version? |
| 18:44:00 | <andrew2> | So is there no way to have for example `f :: Impl 'False -> IO ()` be called with `f x` if `x :: Int` and `data instance Impl False = Int` ? |
| 18:45:02 | <glguy> | data instance Impl False = Int -- this probably doesn't mean what you thought it meant |
| 18:45:10 | <glguy> | This is introducing a new value constructor Int |
| 18:45:17 | <glguy> | nothing to do with the type Int |
| 18:45:18 | <andrew2> | (or vice-versa, I guess I'm doing the opposite and I have `f :: Int -> IO ()` and I have `x :: Impl 'False` and call `f x`) |
| 18:45:41 | <glguy> | Impl 'False has a single (non-bottom) value: Int |
| 18:46:34 | <andrew2> | so how do I implement `Bool -> *` so that it returns two different types depending on the bool? |
| 18:46:54 | <glguy> | Inst: your loop implementation is not the direct loop version, it's building up a massive thunk |
| 18:47:19 | <glguy> | andrew2: Youd need to use a type family for that |
| 18:47:20 | <Inst> | how? |
| 18:47:45 | <andrew2> | glguy but then we're back to square1: how do I use an unapplied type family? |
| 18:47:57 | <glguy> | you don't |
| 18:48:17 | <glguy> | What you're asking about isn't something you can do, so you'll need to take a step backward first |
| 18:48:18 | <andrew2> | so the answer is that we cannot implement a type-level function `Bool -> *`? |
| 18:48:31 | <andrew2> | okay |
| 18:48:37 | <andrew2> | I'll try something else then, tahnks! |
| 18:49:03 | <glguy> | Inst: simplified down, you have this: loop 0 acc = acc; loop n acc = loop (n-1) (f acc) |
| 18:49:28 | <glguy> | so loop 3 x becomes: f (f (f x)) |
| 18:49:32 | <Joao003> | what about that f |
| 18:49:44 | <Joao003> | oh |
| 18:50:08 | <Joao003> | \f -> loop 3 |
| 18:50:17 | <Joao003> | you're supposed to use it like that? |
| 18:50:29 | <Inst> | the version you have looks TCO |
| 18:50:37 | <Inst> | in reality, the problem is >> breaks TCO |
| 18:50:40 | <Inst> | guarded recursion |
| 18:51:13 | <glguy> | you can build up big thunks with TCO just fine |
| 18:51:28 | <glguy> | like we see here in loop |
| 18:51:56 | <Inst> | i mean in your version you could just, well, $1 and force the (f acc) chunk |
| 18:51:56 | <Joao003> | what is TCO |
| 18:51:58 | <Inst> | thunk |
| 18:51:59 | <monochrom> | The simplistic TC-vs-not-TC is grossly insufficient to understand the consequences of lazy evaluation. |
| 18:52:02 | <Inst> | tail call optimization |
| 18:52:49 | <glguy> | Inst: since you're building up a value with type (IO _), seq'ing that isn't going to help with building up the big thing |
| 18:53:15 | <Inst> | seq fmap seq... |
| 18:53:17 | <glguy> | or maybe you're not, it's hard to tell given the fragment of code we have |
| 18:53:28 | <glguy> | Inst: no, fmapping seq into an IO value doesn't do anything |
| 18:53:34 | <Inst> | is foldM generally useful instead of a stateful accumulator? |
| 18:53:36 | <glguy> | you still have an IO thing |
| 18:53:37 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:54:13 | <Inst> | like, i'm obviously at fault, but is it acceptable to blame Haskell for foldM's lack of optimization? |
| 18:54:36 | <glguy> | it's not foldM's fault if you're building up a list you didn't need to build up so that you can use foldM |
| 18:54:40 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:54:47 | × | bhall quits (~brunohall@138.199.22.101) (Ping timeout: 256 seconds) |
| 18:54:53 | <monochrom> | Perhaps don't blame anything at all? |
| 18:55:09 | <Joao003> | what is tail call optimization all about |
| 18:55:16 | <monochrom> | Investigate and rethink. Don't blame. |
| 18:55:51 | → | bhall joins (~brunohall@138.199.22.101) |
| 18:55:53 | <Inst> | foldM is generally useful when it comes to list fusion, though, so I don't get it |
| 18:56:18 | <Inst> | I just want a more succinct idiom than execWriter $ writerWrapper |
| 18:56:27 | <glguy> | If you're generating that list with replicateM, then there's no fusion. The whole list has to be constructed first before foldM comes into view |
| 18:56:39 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) (Remote host closed the connection) |
| 18:56:42 | → | trev_ joins (~trev@109.252.35.99) |
| 18:56:50 | <Inst> | erm, replicateM count writerWrapper |
| 18:56:51 | <Joao003> | why not make the idiom into a function |
| 18:57:14 | <Inst> | the list foldM is working on is [1..counter] |
| 18:57:16 | <Inst> | typical iterator |
| 19:00:53 | → | acidsys joins (~crameleon@openSUSE/member/crameleon) |
| 19:01:18 | × | andrew2 quits (~andrew@130.159.237.115) (Ping timeout: 260 seconds) |
| 19:01:41 | → | king_gs joins (~Thunderbi@2806:103e:29:34e5:3d29:184b:bd04:c29c) |
| 19:04:14 | <Joao003> | chat dead? |
| 19:05:08 | × | king_gs quits (~Thunderbi@2806:103e:29:34e5:3d29:184b:bd04:c29c) (Client Quit) |
| 19:05:11 | <monochrom> | Yes. |
| 19:05:35 | × | gensystt quits (gensyst@user/gensyst) (Quit: Leaving) |
| 19:06:27 | <Joao003> | sad. |
| 19:14:23 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) |
| 19:15:02 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 19:20:49 | <juri_> | worth a shot: there doesn't happen to be someone here with more (read: any) experience in numerical analysis, who wants to help complete a 2D projective geometry engine? i'm running out of braincells to burn. ;) |
| 19:23:06 | × | kurbus quits (~kurbus@user/kurbus) (Quit: Client closed) |
| 19:24:58 | → | mikoto-chan joins (~mikoto-ch@2001:999:480:af94:3bb8:8e49:857d:dcf2) |
| 19:28:13 | × | trev_ quits (~trev@109.252.35.99) (Remote host closed the connection) |
| 19:30:07 | × | teo quits (~teo@user/teo) (Ping timeout: 252 seconds) |
| 19:31:26 | <Joao003> | lol |
| 19:32:31 | <monochrom> | Would you accept a 3D projective geometry engine and then just kill one dimension? Because the former is just OpenGL etc. >:) |
| 19:34:09 | <monochrom> | Inspired by this joke: Q: How do you visualize 6 dimensions? A: Visualize n dimensions, then let n=6. |
| 19:35:10 | <darkling> | It's the easy way to do it. :) |
| 19:35:34 | <darkling> | (And with more than a little truth in it) |
| 19:43:46 | × | johnw quits (~johnw@2600:1700:cf00:db0:b1ce:dda8:9e3c:6a3c) (Quit: ZNC - http://znc.in) |
| 19:44:19 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 19:51:53 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) (Remote host closed the connection) |
| 19:54:22 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:54:52 | × | phma quits (~phma@2001:5b0:2144:35b8:9ff2:a892:c3ba:7249) (Read error: Connection reset by peer) |
| 19:55:50 | → | phma joins (~phma@host-67-44-208-156.hnremote.net) |
| 19:59:10 | → | ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de) |
| 20:03:29 | × | Joao003 quits (~Joao003@2804:840:8302:200:d31:1e61:32ad:8571) (Read error: Connection reset by peer) |
| 20:07:44 | <juri_> | monochrom: sadly, that's not a PGA system. :P |
| 20:09:02 | → | ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
| 20:09:03 | × | asthasr quits (~asthasr@208.80.78.154) (Quit: asthasr) |
| 20:10:32 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 20:16:43 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 20:17:36 | → | kurbus joins (~kurbus@user/kurbus) |
| 20:20:41 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) |
| 20:21:01 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 20:21:35 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 20:21:47 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) (Ping timeout: 260 seconds) |
| 20:21:47 | use-value1 | is now known as use-value |
| 20:24:28 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 20:25:03 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 20:31:29 | <juri_> | https://www.youtube.com/watch?v=tX4H_ctggYo , if you're interested in learning some new math stuffs. |
| 20:32:39 | <tomsmeding> | _projective_ geometry |
| 20:32:45 | <tomsmeding> | that takes me back to math class |
| 20:34:38 | × | inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 268 seconds) |
| 20:34:48 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 20:35:23 | <juri_> | i never had that type of math class, unfortunately. might have saved me a few years writing this PGA geometry engine. |
| 20:37:55 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 20:39:03 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 20:41:55 | → | inversed joins (~inversed@bcdcac82.skybroadband.com) |
| 20:45:26 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 20:45:41 | <tomsmeding> | juri_: if you spent a few years getting familiar with this stuff you know much more about it than I vaguely remember from some class 5 years ago |
| 20:47:24 | <juri_> | tomsmeding: what i'm missing isn't covered in the classes.. i'm doing interval arithmatic, using floating point, and having 'fun' coming up with some of the nonexistant formulae. hense, needing a *bit* of help. ;) |
| 20:47:47 | <tomsmeding> | interesting |
| 20:48:03 | <tomsmeding> | certainly all my class covered was the algebraic stuff :p |
| 20:48:20 | <juri_> | yeah, i'm a bit over the edge. :) |
| 20:48:41 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:50:14 | <juri_> | I've started doing some things that are correct, from a numerical sense. my property tests can really ruin my day. :) |
| 20:52:05 | <juri_> | https://github.com/Haskell-Things/HSlice/blob/tip/Graphics/Slicer/Math/PGAPrimitives.hs , if you want to know what this looks like in haskell. ;) |
| 20:52:14 | × | mikoto-chan quits (~mikoto-ch@2001:999:480:af94:3bb8:8e49:857d:dcf2) (Ping timeout: 246 seconds) |
| 20:53:40 | → | opticblast joins (~Thunderbi@172.58.80.152) |
| 20:59:53 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:72f6:649:24db:f080) (Remote host closed the connection) |
| 21:00:05 | → | tabemann joins (~travisb@2600:1700:7990:24e0:2fdf:3485:b82a:4a06) |
| 21:00:06 | <EvanR> | floating point interval arithmetic, sounds dicey |
| 21:01:41 | → | captnemo joins (~captnemo@193.32.127.226) |
| 21:01:47 | <EvanR> | if you add two intervals, the result may need to be adjusted due to round off error? |
| 21:03:04 | <EvanR> | because the natural rounding behavior goes the wrong way |
| 21:04:29 | <tomsmeding> | EvanR: I saw "Ulp" in that code so I think juri_ is aiming for that level of precision |
| 21:05:07 | <EvanR> | hardcore |
| 21:05:40 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 21:06:09 | <juri_> | EvanR: you get to tell the FPU what direction to round things. |
| 21:06:50 | <juri_> | i'm using the Rounded library for that. |
| 21:06:57 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 21:07:53 | <juri_> | so i do all of the math twice: once "as close to right as possible", once again in "make sure you round UP", then i save the unit of last precision, so i know the error range of the calculation. |
| 21:09:25 | → | Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::315c) |
| 21:09:51 | → | oldfashionedcow joins (~Rahul_San@user/oldfashionedcow) |
| 21:10:36 | → | ub joins (~Thunderbi@p548c8ef0.dip0.t-ipconnect.de) |
| 21:10:41 | <juri_> | its almost coming together, but i think i'll need someone with at least a PHD in the subject (or equivalent experience. ;) ) to look over my logic, because there are a few "magic numbers", and probably some bad logic still baked in. |
| 21:11:07 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:11:18 | × | ubert quits (~Thunderbi@p200300ecdf130119a8229ffa4b2489e6.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 21:11:18 | ub | is now known as ubert |
| 21:12:47 | × | captnemo quits (~captnemo@193.32.127.226) (Quit: WeeChat 3.8) |
| 21:17:22 | → | nschoe joins (~q@2a01:e0a:8e:a190:8b2d:eb7d:570e:3cd1) |
| 21:22:08 | → | danza joins (~francesco@151.54.8.155) |
| 21:24:01 | → | Joao003 joins (~Joao003@2804:840:8312:3400:5928:bc6a:1cc0:4acb) |
| 21:24:26 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 21:24:56 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:25:41 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 21:27:05 | × | danza quits (~francesco@151.54.8.155) (Ping timeout: 252 seconds) |
| 21:27:47 | <EvanR> | the error range of the error range xD |
| 21:28:20 | <EvanR> | error is too important to be left to unnecessarily large error |
| 21:28:23 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 21:28:52 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 21:30:34 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 21:32:39 | oldfashionedcow | is now known as username236 |
| 21:33:41 | × | mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
| 21:34:09 | <juri_> | EvanR: these are really tiny values, in the end. its just that in some cases, you need tiny values within certain ranges derived from those values... |
| 21:35:15 | → | mcglk joins (~mcglk@131.191.49.120) |
| 21:35:47 | <EvanR> | and when the difference is like 1 ULP, how do you even name that value xD |
| 21:36:37 | <EvanR> | (switch to interval arithmetic with rationals or computable reals maybe) |
| 21:36:58 | × | kurbus quits (~kurbus@user/kurbus) (Quit: Client closed) |
| 21:38:19 | <juri_> | it depends. right now, i'm saving all of the error from all of the possible operations in a type, and using it to reason. |
| 21:38:57 | username236 | is now known as oldfashionedcow |
| 21:46:50 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:47:42 | → | danza joins (~francesco@151.54.28.251) |
| 21:48:03 | × | nschoe quits (~q@2a01:e0a:8e:a190:8b2d:eb7d:570e:3cd1) (Quit: Switching off) |
| 21:49:11 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) |
| 21:52:04 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:53:29 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b571:9acb:283f:a733) (Ping timeout: 255 seconds) |
| 21:54:59 | × | danza quits (~francesco@151.54.28.251) (Ping timeout: 256 seconds) |
| 21:55:19 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 22:00:09 | × | Joao003 quits (~Joao003@2804:840:8312:3400:5928:bc6a:1cc0:4acb) (Quit: Leaving) |
| 22:00:15 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds) |
| 22:07:36 | × | m5zs7k quits (aquares@web10.mydevil.net) (Remote host closed the connection) |
| 22:08:45 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 22:11:24 | × | ystael quits (~ystael@user/ystael) (Quit: Lost terminal) |
| 22:13:55 | × | m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 268 seconds) |
| 22:14:35 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 22:15:07 | → | danza joins (~francesco@151.53.13.66) |
| 22:15:26 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:e5a0:a2ae:d060:9326) |
| 22:16:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 22:16:23 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:5d67:73a5:df2e:6982) (Ping timeout: 264 seconds) |
| 22:16:23 | use-value1 | is now known as use-value |
| 22:18:31 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 22:19:13 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 252 seconds) |
| 22:20:19 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 22:21:26 | × | michalz quits (~michalz@185.246.207.201) (Remote host closed the connection) |
| 22:28:31 | × | yrlnry quits (~yrlnry@2600:4040:738e:5400:87d:f2d:382e:ac3d) (Remote host closed the connection) |
| 22:29:03 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:e5a0:a2ae:d060:9326) (Ping timeout: 252 seconds) |
| 22:29:04 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:e5a0:a2ae:d060:9326) |
| 22:29:29 | → | yrlnry joins (~yrlnry@2600:4040:738e:5400:87d:f2d:382e:ac3d) |
| 22:31:21 | use-value1 | is now known as use-value |
| 22:47:45 | × | ddellacosta quits (~ddellacos@143.244.47.87) (Ping timeout: 260 seconds) |
| 22:48:23 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 22:48:39 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:48:52 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 22:49:13 | → | zero joins (~z@user/zero) |
| 22:50:45 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:51:06 | × | yin quits (~z@user/zero) (Ping timeout: 255 seconds) |
| 22:52:31 | × | freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds) |
| 22:59:03 | → | gurkenglas joins (~gurkengla@dynamic-046-114-182-034.46.114.pool.telefonica.de) |
| 23:02:18 | → | dsrt^ joins (~tj99@c-24-30-76-89.hsd1.ga.comcast.net) |
| 23:04:48 | → | freeside joins (~mengwong@103.252.202.170) |
| 23:09:10 | → | king_gs joins (~Thunderbi@2806:103e:29:34e5:e14a:21d9:ac2e:2240) |
| 23:09:20 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 23:09:34 | × | freeside quits (~mengwong@103.252.202.170) (Ping timeout: 260 seconds) |
| 23:22:49 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 23:25:09 | → | freeside joins (~mengwong@103.252.202.170) |
| 23:32:05 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit) |
| 23:34:21 | × | epolanski quits (uid312403@2a03:5180:f:1::4:c453) (Quit: Connection closed for inactivity) |
| 23:43:11 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 23:43:20 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 23:44:52 | × | Sauvin quits (~sauvin@user/Sauvin) (Remote host closed the connection) |
| 23:45:32 | → | Sauvin joins (~sauvin@user/Sauvin) |
| 23:55:10 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
All times are in UTC on 2023-02-02.