Logs on 2021-12-19 (liberachat/#haskell)
| 00:00:28 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.) |
| 00:02:36 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 00:03:46 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 00:05:49 | × | waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.3) |
| 00:06:17 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 00:08:02 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 00:09:57 | jpds1 | is now known as jpds |
| 00:10:53 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:13:56 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Remote host closed the connection) |
| 00:19:43 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 00:19:45 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 00:20:17 | × | dsrt^ quits (~dsrt@64.253.22.77) (Ping timeout: 240 seconds) |
| 00:20:52 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 00:24:08 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 00:24:27 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 268 seconds) |
| 00:24:32 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 00:27:38 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 00:27:55 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 00:28:51 | × | vincenz quits (~poucet@104.134.21.7) (Remote host closed the connection) |
| 00:32:15 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 00:33:49 | → | DNH joins (~DNH@2a02:8108:1100:16d8:1941:a480:a6d8:8bc5) |
| 00:52:19 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 00:52:32 | × | Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
| 00:56:15 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 00:57:01 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 245 seconds) |
| 00:58:12 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 00:59:35 | → | img joins (~img@user/img) |
| 01:04:12 | → | mvk joins (~mvk@2607:fea8:5cdd:f000::745c) |
| 01:06:01 | → | kranius joins (~kranius@222.186.245.213.rev.sfr.net) |
| 01:06:29 | → | dsrt^ joins (~dsrt@64.253.22.77) |
| 01:09:47 | → | ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net) |
| 01:11:33 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:15:16 | × | Tuplanolla quits (~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:15:51 | ← | delYsid parts (~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50)) |
| 01:17:11 | × | xb0o2 quits (~xb0o2@user/xb0o2) (Quit: Client closed) |
| 01:17:17 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 01:17:40 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:18:55 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 01:26:41 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 01:31:32 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 01:32:15 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 01:32:38 | <Inst> | hello |
| 01:32:54 | <Inst> | can you help me out? I need to know how to call ghci so :set +s is set previously, without messing with the .conf file |
| 01:34:53 | <geekosaur> | is adding another conf file acceptable? -ghci-script |
| 01:36:00 | × | kranius quits (~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 256 seconds) |
| 01:36:22 | × | DNH quits (~DNH@2a02:8108:1100:16d8:1941:a480:a6d8:8bc5) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:36:32 | <koz> | How does one create a literal value of type Word#? |
| 01:37:01 | <geekosaur> | % :set -XMagicHash |
| 01:37:02 | <yahb> | geekosaur: |
| 01:37:08 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 01:37:08 | <geekosaur> | :t 8# |
| 01:37:09 | <lambdabot> | GHC.Prim.Int# |
| 01:37:12 | <koz> | Oh, nice. |
| 01:37:14 | <geekosaur> | hm |
| 01:37:24 | <geekosaur> | not quite though, it's Int# not Word# |
| 01:37:34 | <geekosaur> | :t 8## |
| 01:37:35 | <lambdabot> | GHC.Prim.Word# |
| 01:37:41 | <geekosaur> | there we go |
| 01:37:51 | <koz> | If in doubt, sprinkle on more magic hashes. |
| 01:38:51 | <zero> | :t 8### |
| 01:38:52 | <lambdabot> | error: |
| 01:38:52 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 01:38:59 | zero | shrugs |
| 01:39:34 | → | Morrow joins (~quassel@bzq-110-168-31-106.red.bezeqint.net) |
| 01:40:19 | <geekosaur> | oh, heh, intended to send those to yahb. didn't know lambdabot did MagicHash |
| 01:41:37 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
| 01:43:01 | geekosaur | wonders how this works in 9.2, where everything is sized |
| 01:43:24 | <geekosaur> | mm, think it's 8##8 etc. |
| 01:43:41 | <zero> | nice |
| 01:48:45 | <hpc> | ghc should accept MuggleHash as a synonym for NoMagicHash :D |
| 01:49:16 | <koz> | Also, does eqWord8# give 0## if mismatch, 1## if match? |
| 01:49:29 | <koz> | 0# and 1# I mean. |
| 01:50:55 | <geekosaur> | % eqWord8 (W8# 8##) (W8# 9##) |
| 01:50:56 | <yahb> | geekosaur: False |
| 01:51:08 | <geekosaur> | oh wait |
| 01:51:13 | <geekosaur> | % eqWord8# (W8# 8##) (W8# 9##) |
| 01:51:13 | <yahb> | geekosaur: ; <interactive>:188:11: error:; * Couldn't match expected type `Word8#' with actual type `Word8'; * In the first argument of `eqWord8#', namely `(W8# 8##)'; In the expression: eqWord8# (W8# 8##) (W8# 9##); In an equation for `it': it = eqWord8# (W8# 8##) (W8# 9##); <interactive>:188:21: error:; * Couldn't match expected type `Word8#' with actual type `Word8'; * In the second a |
| 01:51:37 | <geekosaur> | % eqWord8# 8## 9## |
| 01:51:38 | <yahb> | geekosaur: ; <interactive>:189:10: error:; * Couldn't match expected type `Word8#' with actual type `Word#'; * In the first argument of `eqWord8#', namely `8##'; In the expression: eqWord8# 8## 9##; In an equation for `it': it = eqWord8# 8## 9##; <interactive>:189:14: error:; * Couldn't match expected type `Word8#' with actual type `Word#'; * In the second argument of `eqWord8#', namely |
| 01:51:53 | <geekosaur> | % eqWord8# 8##8 9##8 |
| 01:51:53 | <yahb> | geekosaur: ; <interactive>:190:1: error:; * Couldn't match expected type `Word# -> t0 -> t' with actual type `Int#'; * The function `eqWord8#' is applied to four value arguments, but its type `Word8# -> Word8# -> Int#' has only two; In the expression: eqWord8# 8## 8 9## 8; In an equation for `it': it = eqWord8# 8## 8 9## 8; * Relevant bindings include it :: t (bound at <interactive>:190:1) |
| 01:51:59 | <geekosaur> | blegh |
| 01:52:20 | <geekosaur> | :t eqWord8# |
| 01:52:21 | <lambdabot> | error: Variable not in scope: eqWord8# |
| 01:52:26 | <geekosaur> | % :t eqWord8# |
| 01:52:26 | <yahb> | geekosaur: Word8# -> Word8# -> Int# |
| 01:55:51 | × | mmhat quits (~mmh@55d47734.access.ecotel.net) (Quit: WeeChat 3.3) |
| 01:59:39 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 02:04:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:04:38 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds) |
| 02:07:05 | <hololeap> | Word8##4#8#9#INT#*69 |
| 02:07:56 | <geekosaur> | yeh I have no idea how you get a Wird8# literal, at least in 9.0.1 |
| 02:09:37 | × | pfurla quits (~pfurla@2804:d41:4331:4800:8490:5949:caf8:c808) (Ping timeout: 240 seconds) |
| 02:09:42 | → | pfurla_ joins (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) |
| 02:12:36 | <hololeap> | reminds me what I used to see as a kid when I would telnet over dialup |
| 02:15:50 | <EvanR> | if you'd like to speak to a GHC prims representative press # |
| 02:21:25 | × | waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
| 02:28:48 | <hololeap> | holy crap, some of these still have phone numbers: https://www.telnetbbsguide.com/connection/dial-up/ |
| 02:31:56 | geekosaur | wonders if ncoast is still around |
| 02:31:59 | → | ub joins (~Thunderbi@p200300ecdf0a5d10d9ff0243dc33f2a7.dip0.t-ipconnect.de) |
| 02:32:54 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 02:33:11 | <geekosaur> | huh, I get both an ip4 and a SERVFAIL |
| 02:33:22 | × | ubert quits (~Thunderbi@p200300ecdf0a5d68805dbf0fab6de770.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 02:33:22 | ub | is now known as ubert |
| 02:37:49 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 02:38:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 02:39:17 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds) |
| 02:44:22 | → | lavaman joins (~lavaman@98.38.249.169) |
| 02:45:30 | × | benin quits (~benin@183.82.27.121) (Ping timeout: 260 seconds) |
| 02:48:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 02:52:13 | → | benin joins (~benin@183.82.27.121) |
| 02:55:02 | → | lechner joins (~lechner@debian/lechner) |
| 02:57:06 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 02:58:10 | × | xff0x quits (~xff0x@port-92-195-110-215.dynamic.as20676.net) (Ping timeout: 256 seconds) |
| 03:00:06 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:3d5f:aef0:61ba:f866) |
| 03:05:36 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 03:09:17 | × | ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 03:10:04 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:10:57 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 03:13:19 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:14:05 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 03:14:53 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:15:18 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:16:50 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:17:18 | → | lavaman joins (~lavaman@98.38.249.169) |
| 03:17:20 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:18:53 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:19:26 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:20:50 | × | td_ quits (~td@94.134.91.199) (Ping timeout: 256 seconds) |
| 03:20:59 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:21:35 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:22:39 | → | td_ joins (~td@muedsl-82-207-238-128.citykom.de) |
| 03:23:08 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:23:39 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:25:11 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:25:42 | → | Sobhan joins (~Sobhan@modemcable039.128-131-66.mc.videotron.ca) |
| 03:25:44 | <Sobhan> | Hi |
| 03:25:45 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:27:19 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:27:51 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:29:26 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:29:55 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:31:29 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:31:54 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:32:53 | <Sobhan> | what would be the equivalent of a short circuiting fold over infinite lists for monads? right now i'm using this monstrosity ```haskell |
| 03:32:53 | <Sobhan> | tW :: Monad m => (t -> a -> (Bool, t)) -> t -> m a -> m t |
| 03:32:54 | <Sobhan> | tW f acc mo = do { a <- mo; let (b, acc1) = f acc a in if b then return acc1 else tW f acc1 mo} |
| 03:32:54 | <Sobhan> | ``` |
| 03:33:23 | <Sobhan> | where f both has the termination condition and some sort of accumulator |
| 03:33:29 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:34:06 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:34:59 | <hololeap> | Sobhan: you could use `MaybeT (State s) ()` then use mapM_ |
| 03:35:40 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:36:11 | <hololeap> | you'll end up with (Nothing,s) when you short circuit by calling `empty`, with `s' as its most recent state |
| 03:36:16 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection) |
| 03:37:47 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:38:19 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 03:38:22 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection) |
| 03:39:55 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:40:31 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:41:12 | <Inst> | also, quick question |
| 03:41:21 | <Inst> | is there a way to save your edits in GHCi? |
| 03:41:37 | <Inst> | there's :load to load modules, but not necessarily :save to save your history |
| 03:41:40 | <Inst> | and how do you delete old lines? |
| 03:42:04 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:43:01 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:43:39 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 03:44:32 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:45:05 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:45:58 | <hololeap> | Inst, not sure but I see ~/.ghc/ghci_history |
| 03:46:08 | <hololeap> | maybe you can just manipulate that directly |
| 03:46:14 | <Inst> | why must I do this? |
| 03:46:24 | <Inst> | this is dumb, I hear there's complaints about Haskell tooling being terrible |
| 03:46:37 | → | ssray joins (~textual@2601:c2:97f:4590:61ac:5742:1693:b1c2) |
| 03:46:37 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:46:50 | <hololeap> | haha I'm literally one person who is giving you a partial answer and being totally honest about it |
| 03:47:15 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:47:20 | <hololeap> | because I don't know the full answer |
| 03:48:46 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:49:24 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:49:40 | <hololeap> | Sobhan: for instance this: http://sprunge.us/wf9Sec |
| 03:50:37 | <hololeap> | MaybeT is underrated |
| 03:50:56 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:51:45 | <hololeap> | oh, that should be `put t'` ... forgot the ' hehe |
| 03:51:57 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:52:17 | <hololeap> | although I don't think the `t' is in scope there so it wouldn't compile instead of giving you the incorrect result |
| 03:52:51 | ← | ssray parts (~textual@2601:c2:97f:4590:61ac:5742:1693:b1c2) (Textual IRC Client: www.textualapp.com) |
| 03:52:58 | <Sobhan> | hololeap that's neat, thanks! |
| 03:53:29 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:53:49 | <hololeap> | np, although it's bound to be buggy because I didn't test it |
| 03:53:59 | <hololeap> | I hope I communicated the idea, though |
| 03:54:40 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:56:12 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 03:56:19 | → | BrokenClutch joins (~pioneer@2804:d41:c251:8e00:2f95:d3cd:d94f:7520) |
| 03:57:08 | <BrokenClutch> | Uh. Is the STRef truly mutable? Like, it correspond to the same address after the change of value? |
| 03:58:19 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 03:58:48 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 03:59:29 | → | falafel joins (~falafel@2603-8000-d800-688c-c489-b1e0-39de-1e29.res6.spectrum.com) |
| 03:59:58 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:00:07 | × | falafel quits (~falafel@2603-8000-d800-688c-c489-b1e0-39de-1e29.res6.spectrum.com) (Client Quit) |
| 04:00:08 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:00:08 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 04:00:08 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:00:34 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:02:07 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:03:17 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:04:52 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:05:35 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:07:08 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:07:56 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:09:30 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:10:16 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:11:17 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 04:11:49 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:12:39 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:13:42 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 04:14:12 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:14:26 | × | yaroot quits (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Ping timeout: 252 seconds) |
| 04:14:38 | × | xff0x quits (~xff0x@2001:1a81:53d2:9000:3d5f:aef0:61ba:f866) (Ping timeout: 260 seconds) |
| 04:14:55 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:14:59 | → | yaroot joins (~yaroot@175.0.30.125.dy.iij4u.or.jp) |
| 04:15:17 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:1181:abfc:439c:19e) |
| 04:16:04 | × | SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving) |
| 04:16:27 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:16:57 | × | mvk quits (~mvk@2607:fea8:5cdd:f000::745c) (Ping timeout: 240 seconds) |
| 04:17:17 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:18:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 04:18:44 | × | koz quits (~koz@121.99.240.58) (Quit: ZNC 1.7.5 - https://znc.in) |
| 04:18:47 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 04:18:49 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:20:04 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:20:33 | → | koz joins (~Srain@2404:4408:436c:a700:6891:399a:2191:3ae0) |
| 04:21:38 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:22:08 | → | koz_ joins (~koz@2404:4408:436c:a700:6891:399a:2191:3ae0) |
| 04:23:04 | × | koz quits (~Srain@2404:4408:436c:a700:6891:399a:2191:3ae0) (Remote host closed the connection) |
| 04:23:10 | koz_ | is now known as koz |
| 04:23:23 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:25:01 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:26:31 | × | koz quits (~koz@2404:4408:436c:a700:6891:399a:2191:3ae0) (Client Quit) |
| 04:27:24 | → | koz joins (~koz@2404:4408:436c:a700:6891:399a:2191:3ae0) |
| 04:27:56 | <EvanR> | BrokenClutch, you don't change the STRef |
| 04:28:04 | <EvanR> | you change whatever it refers to |
| 04:28:15 | <EvanR> | same as IORef |
| 04:30:31 | <BrokenClutch> | yeah, but when i change what's referred |
| 04:30:50 | <EvanR> | like you have a box, and you swap out what's in the box, same box |
| 04:30:51 | <BrokenClutch> | what's going inside? Am I allocating new memory? |
| 04:31:18 | <EvanR> | good question, what are you putting in |
| 04:31:28 | <BrokenClutch> | Int |
| 04:31:56 | × | kaizen quits (sid501599@id-501599.helmsley.irccloud.com) () |
| 04:32:28 | <EvanR> | if you have an Int, you put it in the box |
| 04:32:41 | <EvanR> | that's not a memory allocation |
| 04:33:37 | <EvanR> | (though the Int may actually be a big lazy computation that, when forced, uses a bunch of memory to get the value) |
| 04:35:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:35:13 | <BrokenClutch> | So, it would not be evaluated because the language is lazy? But where's stored the data? It's faster to use a STRef or a StateT on a more demanding algorithm? |
| 04:37:13 | <EvanR> | stuff is lazy by default, you can choose to (and probably should) evaluate the Int upon storing it |
| 04:37:27 | <EvanR> | or some time prior if it's convenient |
| 04:38:26 | <monochrom> | It is more nuanced than "am I allocating new memory or not". |
| 04:38:51 | <monochrom> | I can answer "no" but it is a very narrow answer. |
| 04:39:09 | <monochrom> | An STRef always refers to a heap object. |
| 04:39:22 | <monochrom> | A heap object always came from allocation. |
| 04:39:57 | <monochrom> | But it doesn't always mean "new". Perhaps the heap object was already created long ago. Or perhaps it is created just now. |
| 04:39:57 | <EvanR> | I should have said "but that's a big If" after "if you have an Int" xD |
| 04:40:14 | <monochrom> | Yeah. |
| 04:40:17 | <EvanR> | doing the equivalent of x = x + 1 is still going to spawn a new Int |
| 04:41:08 | <monochrom> | So suppose you have "f x = ... writeSTRef myref x ...". Well someone else had to create a heap object and pass it as x to you. You are sharing that heap object. |
| 04:41:10 | <BrokenClutch> | And I'm reading that the GHC sometimes uses equivalents thunks to avoid a repetition of a computation |
| 04:41:49 | <monochrom> | But suppose you have "writeSTRef myref (3+4+5)" well that's a new heap object to store (3+4+5) right there. |
| 04:41:50 | <BrokenClutch> | monochrom: is there a form to check the address of the allocation? |
| 04:41:58 | <monochrom> | No. |
| 04:42:47 | <EvanR> | this line of questioning doesn't seem on the right track |
| 04:42:47 | <monochrom> | Err 3+4+5 is a bad example since the whole program lifetime just needs one copy of it and share it. |
| 04:42:51 | <BrokenClutch> | man, strict imperative programming made me lazy (haha, joke) |
| 04:43:11 | <EvanR> | if your concerned about memory allocations, addresses aren't where to look |
| 04:43:15 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:43:16 | <monochrom> | "writeSTRef myref (x+y+z)" is a better example, if x, y, z is dfferent every time. |
| 04:43:26 | <EvanR> | heap objects move around |
| 04:44:07 | <BrokenClutch> | by the OS? |
| 04:44:12 | <monochrom> | x::Int is also a heap object to support both laziness and polymorphism. |
| 04:44:32 | <EvanR> | the garbage collector moves things |
| 04:44:50 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:45:04 | <BrokenClutch> | even after the first move from nursery? |
| 04:45:11 | <EvanR> | sure |
| 04:45:17 | <monochrom> | "STRef a" would too hard and error-prone to implement if "sometimes it stores data, some other times it stores pointer to data". |
| 04:45:21 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 04:45:21 | <EvanR> | heap compaction etc |
| 04:45:52 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:46:02 | <BrokenClutch> | I think i've got it |
| 04:46:05 | <EvanR> | certain things can be pinned and won't move |
| 04:46:15 | <EvanR> | for optimization purposes or FFI |
| 04:46:16 | <monochrom> | But why should you care? |
| 04:46:30 | <monochrom> | If you're wondering about speed, you can always benchmark. |
| 04:46:38 | <BrokenClutch> | I'm just curious |
| 04:47:06 | <monochrom> | But some of us have already done similar benchmarks. A recursive Int function is faster than using STRef Int. |
| 04:47:25 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:47:34 | <BrokenClutch> | I was comparing with how C/C++ and rust with Haskell (and Scheme) handles this kind of stuff |
| 04:48:04 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:48:24 | <monochrom> | Compiler optimizations can put that Int in a register for the recursive Int function. But it will not optimize the STRef away. You end up perpetual indirection. |
| 04:48:26 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 04:48:38 | <BrokenClutch> | monochrom: The garbage collector do some impressive stuff, It's like it knows what I'm doing better than myself |
| 04:48:53 | <monochrom> | Yes. |
| 04:49:35 | <monochrom> | Both GHC and GCC perform code optimizations that 1st-year CS students, even some 4th-year students, haven't thought of. |
| 04:49:36 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:49:50 | <monochrom> | Most programmers' "bare metal" models are wrong. |
| 04:50:06 | <BrokenClutch> | So I should be more careful and test more when working with those kind of stuff with haskell. It can be predicted very well. Am I right? |
| 04:50:21 | <BrokenClutch> | It can't be predicted* |
| 04:50:34 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:51:14 | <monochrom> | It takes half a year to learn what the compiler actually does. This is true of both Haskell and C. As said, a lot of people get C wrong, too. |
| 04:51:24 | <monochrom> | Until then, shut up and benchmark. |
| 04:51:47 | <BrokenClutch> | You all were very helpful, many thanks |
| 04:52:14 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:52:15 | → | falafel joins (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) |
| 04:52:58 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:53:07 | <int-e> | monochrom: don't stop benchmarking :) |
| 04:53:17 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 04:53:23 | <monochrom> | Yeah. |
| 04:53:50 | <monochrom> | Code optimizers are also pretty fragile. You change a little thing that you think shouldn't matter, oh but it does. |
| 04:54:21 | <monochrom> | They will always surprise you both ways once in a while. Make faster code than you expect. Then make slower code than you expect. |
| 04:54:21 | <EvanR> | I make sure all my variables names are 1 letter and close to the beginning of the alphabet for extra speed |
| 04:54:31 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:54:50 | <EvanR> | like a pro |
| 04:55:03 | <int-e> | one poorly chosen loop breaker, one unfortunate inlining decision... that can make a huge difference sometimes |
| 04:55:07 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:55:47 | <int-e> | So I guess it's because I know a bit of what the compiler does that I keep benchmarking ;) |
| 04:56:13 | <BrokenClutch> | gonna foreign import malloc, me smart boi. |
| 04:56:40 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 04:57:26 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 04:57:45 | <EvanR> | you don't have to, that's in the FFI |
| 04:58:16 | × | dsrt^ quits (~dsrt@64.253.22.77) (Ping timeout: 268 seconds) |
| 04:58:23 | <EvanR> | you even get nice brackets to clean up pointers when you're done |
| 04:58:28 | <EvanR> | Ptr a |
| 04:58:38 | <monochrom> | Yeah, Foreign.Marshal.Alloc's malloc is already C's malloc. It is guaranteed. |
| 04:58:47 | <monochrom> | But I also recongize that you were just joking. |
| 05:00:12 | <BrokenClutch> | monochrom: Didn't know that |
| 05:00:27 | <BrokenClutch> | Thank you all for the help. It's 2AM here, gonna sleep |
| 05:00:32 | <BrokenClutch> | goodnight |
| 05:01:54 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 05:04:05 | → | KvL joins (KvL@gateway/vpn/protonvpn/kvl) |
| 05:05:46 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit) |
| 05:06:45 | → | mvk joins (~mvk@2607:fea8:5cdd:f000::745c) |
| 05:09:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 05:13:19 | ← | BrokenClutch parts (~pioneer@2804:d41:c251:8e00:2f95:d3cd:d94f:7520) () |
| 05:13:32 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:14:55 | → | img joins (~img@user/img) |
| 05:23:00 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 05:23:55 | → | marperia joins (~marperia@176.59.129.201) |
| 05:25:10 | × | marperia quits (~marperia@176.59.129.201) (Remote host closed the connection) |
| 05:26:18 | → | marperia joins (~marperia@176.59.129.201) |
| 05:28:02 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 05:28:29 | × | adamCS quits (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (Ping timeout: 268 seconds) |
| 05:33:43 | → | adamCS joins (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) |
| 05:35:00 | × | marperia quits (~marperia@176.59.129.201) (Quit: Client closed) |
| 05:36:54 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:47:57 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 05:50:33 | × | koz quits (~koz@2404:4408:436c:a700:6891:399a:2191:3ae0) (Quit: koz) |
| 05:53:07 | → | exbios joins (~exbios@fixed-189-203-104-178.totalplay.net) |
| 05:54:12 | × | exbios quits (~exbios@fixed-189-203-104-178.totalplay.net) (Quit: -a- IRC for Android 2.1.59) |
| 05:57:13 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 05:57:44 | → | Topsi joins (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) |
| 06:03:00 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 06:04:37 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 06:08:04 | × | KvL quits (KvL@gateway/vpn/protonvpn/kvl) (Quit: KvL) |
| 06:10:59 | → | koz_ joins (~koz@2404:4408:436c:a700:6891:399a:2191:3ae0) |
| 06:14:14 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 06:15:58 | × | slowtyper quits (~slowtyper@user/slowtyper) (Ping timeout: 260 seconds) |
| 06:16:38 | → | slowtyper joins (~slowtyper@user/slowtyper) |
| 06:21:48 | × | rembo10 quits (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 06:22:56 | → | rembo10 joins (~rembo10@remulis.com) |
| 06:29:20 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 06:33:09 | × | juhp quits (~juhp@128.106.188.82) (Quit: juhp) |
| 06:33:16 | → | juhp joins (~juhp@128.106.188.82) |
| 06:33:53 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 06:35:22 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 06:35:49 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 06:38:50 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 260 seconds) |
| 06:44:37 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 06:47:44 | → | dsrt^ joins (~dsrt@64.253.22.77) |
| 06:54:01 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 06:56:12 | → | puke joins (~puke@user/puke) |
| 07:00:41 | → | jonathanx joins (~jonathan@c-5eea3547-74736162.cust.telenor.se) |
| 07:02:29 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 07:04:04 | → | Akiva joins (~Akiva@user/Akiva) |
| 07:04:27 | → | nautical joins (~nautical@2601:602:900:1630::97df) |
| 07:05:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:06:22 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 07:07:16 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 07:08:55 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:09:20 | × | nautical quits (~nautical@2601:602:900:1630::97df) (Client Quit) |
| 07:12:05 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds) |
| 07:13:57 | × | gentauro_ quits (~gentauro@185.107.12.141) (Quit: leaving) |
| 07:14:17 | → | gentauro_ joins (~gentauro@185.107.12.141) |
| 07:15:08 | × | gentauro quits (~gentauro@user/gentauro) (Remote host closed the connection) |
| 07:15:30 | × | gentauro_ quits (~gentauro@185.107.12.141) (Remote host closed the connection) |
| 07:20:16 | → | knudLeopold joins (~knudLeopo@187.168.218.49) |
| 07:20:37 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 07:22:12 | → | gentauro joins (~gentauro@user/gentauro) |
| 07:23:14 | × | knudLeopold quits (~knudLeopo@187.168.218.49) (Client Quit) |
| 07:26:45 | → | knudLeopold joins (~knudLeopo@187.168.218.49) |
| 07:35:17 | × | knudLeopold quits (~knudLeopo@187.168.218.49) (Quit: Leaving) |
| 07:36:09 | → | Inst_ joins (~Inst@2601:6c4:4080:3f80:98ca:4368:fd5e:1ee0) |
| 07:38:44 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:39:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 07:42:55 | <Inst_> | how's whatsupdoc been doing? |
| 07:43:13 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:44:38 | → | sprout joins (~quassel@2a02:a467:ccd6:1:21ba:a382:6b6:54c4) |
| 07:47:02 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 07:47:56 | × | m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin) |
| 07:48:19 | → | snek` joins (~user@88.160.31.174) |
| 07:48:24 | → | m4lvin joins (~m4lvin@w4eg.de) |
| 07:48:42 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 07:48:43 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 07:49:13 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: closed) |
| 07:49:18 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 07:49:41 | × | snek` quits (~user@88.160.31.174) (Remote host closed the connection) |
| 07:49:46 | × | sprout quits (~quassel@2a02:a467:ccd6:1:21ba:a382:6b6:54c4) (Ping timeout: 260 seconds) |
| 07:51:22 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:52:33 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 07:54:33 | → | puke joins (~puke@user/puke) |
| 07:59:04 | × | jonathanx quits (~jonathan@c-5eea3547-74736162.cust.telenor.se) (Ping timeout: 256 seconds) |
| 08:00:34 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:02:45 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 08:04:42 | → | fef joins (~thedawn@user/thedawn) |
| 08:04:56 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 08:04:58 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 08:06:17 | × | falafel quits (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 08:11:51 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 08:12:57 | × | mvk quits (~mvk@2607:fea8:5cdd:f000::745c) (Ping timeout: 240 seconds) |
| 08:13:36 | → | acidjnk joins (~acidjnk@p200300d0c7271e774586c8f7f876c3d9.dip0.t-ipconnect.de) |
| 08:16:11 | → | lavaman joins (~lavaman@98.38.249.169) |
| 08:17:58 | × | pfurla_ quits (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) (Quit: gone to sleep. ZZZzzz…) |
| 08:20:36 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 08:20:36 | → | thevishy joins (~Nishant@2405:201:f005:c007:851a:8f84:501c:8bd1) |
| 08:24:34 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
| 08:24:41 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 08:25:55 | → | coot joins (~coot@89-64-85-93.dynamic.chello.pl) |
| 08:26:07 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 08:29:57 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 08:43:46 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 08:43:46 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 08:43:46 | → | wroathe joins (~wroathe@user/wroathe) |
| 08:48:56 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 08:52:17 | → | python476 joins (~user@88.160.31.174) |
| 08:54:04 | → | max22- joins (~maxime@2a01cb08833598005fdfc488429f8659.ipv6.abo.wanadoo.fr) |
| 08:55:57 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 08:56:04 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 08:56:21 | → | nattiestnate joins (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
| 09:00:08 | × | asdofindia-m quits (~akshaymat@2001:470:69fc:105::831) (Quit: You have been kicked for being idle) |
| 09:00:08 | × | ppseafield[m] quits (~elementpp@2001:470:69fc:105::1:250a) (Quit: You have been kicked for being idle) |
| 09:00:13 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:00:44 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:01:34 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 09:01:51 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 09:02:19 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:02:21 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 09:02:34 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Remote host closed the connection) |
| 09:02:42 | → | cosimone joins (~user@93-44-185-127.ip98.fastwebnet.it) |
| 09:02:43 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:03:24 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 09:04:17 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:04:50 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:06:22 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:06:42 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 09:06:54 | × | nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3) |
| 09:07:01 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:07:41 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 09:08:32 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:09:05 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:09:16 | × | tubogram quits (~tubogram@user/tubogram) (Quit: See ya later!) |
| 09:09:18 | → | Tuplanolla joins (~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) |
| 09:10:37 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:11:12 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:11:24 | → | tubogram4 joins (~tubogram@user/tubogram) |
| 09:12:45 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:12:52 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 09:13:09 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:14:41 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:15:15 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:16:50 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:16:55 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
| 09:17:28 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:17:35 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 09:17:57 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:18:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 09:19:00 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:19:23 | × | tubogram4 quits (~tubogram@user/tubogram) (Quit: See ya later!) |
| 09:19:36 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:21:09 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:21:42 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:22:11 | → | tubogram4 joins (~tubogram@user/tubogram) |
| 09:23:07 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:23:14 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:23:43 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection) |
| 09:25:16 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:25:50 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:27:22 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:27:56 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:28:25 | <int-e> | > unwords $ map (\x -> printf "%.2f" (191-x/38)) [7139,7120,7058,6994,6901,6859,6800,6750,6681,6538] -- tired of waiting |
| 09:28:27 | <lambdabot> | "3.13 3.63 5.26 6.95 9.39 10.50 12.05 13.37 15.18 18.95" |
| 09:28:28 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 09:29:30 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:30:09 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:31:42 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:32:15 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:33:47 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:34:18 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:35:51 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:36:24 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:36:26 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 09:37:56 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:37:57 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:38:28 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:40:00 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:40:34 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:41:16 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 09:42:08 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:42:48 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:44:21 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:44:58 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:46:29 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:47:09 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection) |
| 09:48:41 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:49:22 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:50:53 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:51:33 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:53:07 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:53:31 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:54:19 | <pavonia> | int-e: This is at least the third time I see you posting this calculation here. What is this? |
| 09:54:38 | <Athas> | So this thing about 'cabal install' ignoring anything that 'cabal build' did and just rebuilding from scratch... is there a way to make it not do that? |
| 09:55:03 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:55:38 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:57:09 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:57:46 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:57:56 | <int-e> | pavonia: It's taking glguy's Advent of Code leader board, and computing average rank for all the stars so far for the top 10. It's a silly thing, it'll stop after the 25th :) |
| 09:58:21 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 09:58:54 | <pavonia> | I see |
| 09:59:18 | <int-e> | (the numbers are: 191: number of participants, plus 1; 38: number of stars so far; 7139 etc.: points on the board) |
| 09:59:21 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:59:34 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 09:59:34 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 09:59:34 | → | wroathe joins (~wroathe@user/wroathe) |
| 09:59:52 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:00:22 | <hololeap> | why does it matter? (legit question) |
| 10:01:24 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:01:29 | <hololeap> | or I suppose the proper question is why does it matter to you int-e ? |
| 10:02:01 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:02:40 | <hololeap> | Inst_: the last time they said anything was nov 4, according to my logs |
| 10:02:53 | <[exa]> | Athas: incompatible install environment perhaps? (guessing) |
| 10:02:59 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 10:03:18 | → | falafel joins (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) |
| 10:03:37 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:04:06 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:04:12 | <int-e> | hololeap: it's entertaining |
| 10:04:38 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 10:05:17 | <hololeap> | I just don't understand what the metric tells us |
| 10:05:38 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:06:15 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:06:29 | <int-e> | you can put these numbers in relation with the best conceivable average, which is 1 |
| 10:06:30 | <[exa]> | pls share the entertaining factor |
| 10:06:50 | <int-e> | it's much harder to do that with the scores |
| 10:07:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds) |
| 10:07:47 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:08:20 | <hololeap> | so if someone was in 1st place for every round they would have an average of 1? |
| 10:08:22 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:09:55 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:10:28 | <int-e> | yes |
| 10:10:34 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:11:14 | <hololeap> | ok I see. not sure if I find it entertaining, but I understand what it means at least :) |
| 10:12:06 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:12:39 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:13:47 | <hololeap> | Inst_: [Whois] whatsupdoc is online via molybdenum.libera.chat (Sun Dec 19 07:43:13 2021). |
| 10:14:11 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:14:50 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:16:24 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:16:46 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 10:16:50 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:18:18 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 10:18:23 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:18:59 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:20:31 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:21:04 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:22:37 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:23:12 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:24:43 | → | Nahra joins (~user@static.161.95.99.88.clients.your-server.de) |
| 10:24:45 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:25:21 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:26:54 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:27:19 | → | gensyst joins (gensyst@user/gensyst) |
| 10:27:33 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection) |
| 10:29:07 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:29:41 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:30:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 10:30:20 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 10:30:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 10:31:15 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:31:34 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:31:53 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:33:27 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:34:07 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:34:57 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 10:35:40 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:36:07 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:37:39 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:38:10 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:38:37 | <gensyst> | I have a standard project with a lib and src. The lib has the library, the EDSL. The src has Main.hs, which uses the EDSL. Most heavy lifting takes place from the code of lib. |
| 10:38:45 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
| 10:39:28 | <gensyst> | lib is rarely compiled. Main.hs is compiled over and over again (user of EDSL doing experiments). Therefore: Can I compile the lib part with -O2 and Main.hs with no optimization? |
| 10:39:43 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:40:17 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:41:20 | <hololeap> | you could with cabal |
| 10:41:51 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:42:05 | <hololeap> | you can set different ghc-options for the library and executable sections |
| 10:42:08 | <Athas> | [exa]: from what I can see, 'cabal install' creates an sdist and builds from that, so it looks like its by design. |
| 10:42:26 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:43:01 | × | waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
| 10:44:00 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:44:39 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:45:20 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 10:46:12 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:46:50 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:48:23 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:48:56 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:50:28 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:50:59 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:52:32 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:53:09 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:53:09 | <tomsmeding> | Athas: symlink $(cabal list-bin yourprojectname) somewhere in your PATH? |
| 10:53:55 | <tomsmeding> | or s/symlink/copy/ as appropriate |
| 10:54:40 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:55:18 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:55:37 | <tomsmeding> | or $(cabal-plan list-bin yourprojectname) if your cabal is older |
| 10:55:53 | <Athas> | tomsmeding: that is very fiddly. Is that what people normally do? |
| 10:56:07 | <tomsmeding> | I wouldn't know :p |
| 10:56:25 | <tomsmeding> | it's what _I_ would do, but I'm not usual |
| 10:56:52 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:57:02 | <int-e> | doesn't cabal-install put symlinks to executables into ~/.cabal/bin by default? |
| 10:57:25 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:57:38 | <tomsmeding> | only after 'cabal install --overwrite-policy=always' |
| 10:57:44 | <gensyst> | hololeap, thanks - although in my case Main.hs is currently small and there doesn't seem to be any difference in -O0 and -O2 compilation time. so i guess most of these 5 seconds of compile time is spent in non-optimization parts |
| 10:57:56 | <int-e> | . o O ( all those problems that I'll have when I finally switch away from v1 commands ) |
| 10:58:03 | <gensyst> | (i was hoping for an instantaneous feedback, sort of like in GHCi) |
| 10:58:18 | <gensyst> | so why is ghci so fast exactly? |
| 10:58:20 | <tomsmeding> | gensyst: type checking feedback, or running feedback? |
| 10:58:52 | <hololeap> | gensyst: you might like using ghcid or haskell-language-server for development |
| 10:58:54 | <tomsmeding> | also check out 'ghcid' (note: that's not a typo) |
| 10:58:56 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:59:13 | <tomsmeding> | ghcid is basically a hot-reloading ghci |
| 10:59:21 | <gensyst> | I mean, compile time. |
| 10:59:27 | <tomsmeding> | though it doesn't give you a shell |
| 10:59:31 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:59:47 | <tomsmeding> | gensyst: what about just opening a ghci and doing :r |
| 11:00:38 | <tomsmeding> | also try 'runghc Main.hs' |
| 11:00:38 | × | Vajb quits (~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03) (Read error: Connection reset by peer) |
| 11:00:49 | → | pfurla joins (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) |
| 11:00:51 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 11:01:03 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:01:08 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 11:01:08 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 11:01:08 | → | wroathe joins (~wroathe@user/wroathe) |
| 11:01:34 | <gensyst> | tomsmeding, how do you open a project in ghci? and does it respect -O2 for the library (the EDSL, as I said above) |
| 11:01:35 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:01:47 | <tomsmeding> | cabal repl, or stack ghci |
| 11:02:01 | × | phma quits (phma@2001:5b0:210f:398:45c4:2d78:79ea:d21b) (Read error: Connection reset by peer) |
| 11:02:15 | <tomsmeding> | that will load dependencies as compiled code and the component you're loading as interpreted code |
| 11:02:27 | <tomsmeding> | which should thus respect -O2 for the library, if you open the repl on the executable |
| 11:02:37 | <tomsmeding> | might need 'cabal repl exe:yourproject' or something |
| 11:03:06 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:03:25 | → | phma joins (phma@2001:5b0:211f:b348:59d8:7cb7:9451:9394) |
| 11:03:38 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:03:57 | <gensyst> | tomsmeding, ok now that is *instantaneous*! :) |
| 11:04:00 | <gensyst> | the :r, I mean |
| 11:04:20 | × | koz_ quits (~koz@2404:4408:436c:a700:6891:399a:2191:3ae0) (Quit: koz_) |
| 11:04:35 | <tomsmeding> | for more ergonomics, ':def R :r' so you can type :R and don't have to release the shift key in-between |
| 11:04:42 | <gensyst> | very nice. So this suggests that most of the 5 seconds that "cabal build" needs (when rebuilding Main.hs because only Main.hs has changed), is overhead that GHCi already did when OPENING UP. |
| 11:04:50 | <gensyst> | right? |
| 11:04:58 | <gensyst> | nice :D |
| 11:05:09 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:05:19 | <tomsmeding> | well it's also that for ghci, it doesn't have to generate machine code |
| 11:05:43 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:06:02 | <gensyst> | tomsmeding, ah. but that shouldn't be a problem if bulk of work is spent by the EDSL (compiled with -O2) right? |
| 11:06:13 | <int-e> | Won't `cabal build` create a new install plan every time? So it'll read the *hackage* package database (well, the index)... stuff that ghc(i) don't even care about |
| 11:06:17 | <gensyst> | Main.hs (user of EDSL) just calls those heavy routines. |
| 11:06:25 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 11:06:40 | <int-e> | so there's that overhead, and then there's the overhead from compiling to binary code and linking |
| 11:07:06 | <int-e> | (ghci has to link too but that uses the highly optimized system's dynamic linker) |
| 11:07:16 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:07:45 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:08:19 | <gensyst> | int-e yes it's doing all sorts of stuff (including warning me about how i should run "cabal update" ;)) |
| 11:08:29 | <gensyst> | ok so for interactivitiy, ghci is a MUST |
| 11:09:16 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:09:54 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:10:05 | <hololeap> | do you know of haskell-language-server? it's really quite nice as it gives you realtime diagnostics as you write code, as long as your client can support it |
| 11:11:08 | <gensyst> | hololeap, yeah it's baked into vscode and it's great. however that's for helping me developing. Not exactly about compiling and running Main.hs (many times during the day as I keep changing Main.hs) as fast as possible. |
| 11:11:26 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:11:54 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection) |
| 11:12:43 | <int-e> | Yeah I tend to use runhaskell once it type-checks, unless that takes more than a second or two to run. |
| 11:13:26 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:13:46 | <int-e> | (runhaskell is a symlink to runghc) |
| 11:14:01 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:14:39 | <hololeap> | maybe setting up a test that just runs Main and using ghcid to trigger it would be faster than runhaskell |
| 11:14:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:15:34 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:16:13 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:17:49 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:17:56 | → | Topsi1 joins (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) |
| 11:18:16 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:18:26 | → | Topsi2 joins (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) |
| 11:18:28 | <gensyst> | what's the proper way to call runghc for a project (execute Main.hs and respect -O2 for the library) |
| 11:18:43 | × | pfurla quits (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) (Quit: gone to sleep. ZZZzzz…) |
| 11:19:21 | × | waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 268 seconds) |
| 11:19:49 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:20:24 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:21:10 | → | waleee joins (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) |
| 11:21:49 | × | Topsi quits (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) (Ping timeout: 268 seconds) |
| 11:21:56 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:22:13 | × | Topsi1 quits (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
| 11:22:32 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:22:57 | <opqdonut> | I'm pretty proud of my AoC solution today: https://github.com/opqdonut/adventofcode21/blob/master/Day19.hs |
| 11:24:05 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:24:36 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:26:09 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:26:33 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 11:26:37 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:28:10 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:28:29 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 11:28:29 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 11:28:44 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:28:52 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 11:29:55 | → | hololeap joins (~hololeap@user/hololeap) |
| 11:30:17 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:30:24 | <tomsmeding> | gensyst: try this: cabal repl --repl-options -e --repl-options ':set prog Main.hs' --repl-options -e --repl-options ':main' |
| 11:30:51 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:30:57 | <tomsmeding> | from looking at the ghc sources, this is basically what runghc is doing -- except with plain ghci instead of cabal |
| 11:31:04 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 268 seconds) |
| 11:32:10 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 11:32:24 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:32:55 | <gensyst> | tomsmeding, that gives me the error "Main.hs:0:53: error: Variable not in scope: main :: IO a0" |
| 11:33:02 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:33:03 | <gensyst> | (ran your command from the project dir) |
| 11:33:20 | <gensyst> | maybe i should just use ghci lol |
| 11:33:24 | <tomsmeding> | replace that Main.hs with the actual file name of your executable, which should have a 'main' definition :p |
| 11:34:35 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:34:37 | <gensyst> | that is the name |
| 11:34:48 | <gensyst> | even tried ./app/Main.hs, same error |
| 11:35:13 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:36:51 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:37:11 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:37:23 | <tomsmeding> | and that file does have a 'main' definition? |
| 11:37:37 | <tomsmeding> | it worked for me in a project with a similar setup: library and executable |
| 11:38:31 | → | polezaivsani joins (~polezaivs@orangeshoelaces.net) |
| 11:38:36 | <hololeap> | you might need to add the "target" which would be something like "myproject:exe:main" |
| 11:38:43 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:39:08 | <hololeap> | depends on what the executable is called in the .cabal file |
| 11:39:19 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:40:11 | <tomsmeding> | oh right |
| 11:40:51 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:41:31 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:42:20 | <tomsmeding> | gensyst: yeah add projectname:exe:executablename before those repl-options arguments |
| 11:43:03 | <gensyst> | that works. however i'm back to "cabal build" times |
| 11:43:15 | <gensyst> | i guess it's some sort of overhead that ghci avoids somehow |
| 11:43:25 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:43:26 | <gensyst> | ":r" in ghci is super fast |
| 11:43:33 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:45:09 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:45:43 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:46:31 | → | mmhat joins (~mmh@55d46556.access.ecotel.net) |
| 11:46:49 | <tomsmeding> | gensyst: try 'cabal repl yourexecutablename -v | grep interactive', copy that huge ghc command, and append: -e :main |
| 11:47:32 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:47:43 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:48:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 11:48:51 | <gensyst> | tomsmeding, that's much faster :D |
| 11:49:10 | <gensyst> | seems like some non-standard thing to do, otherwise it'd be baked into cabal right? |
| 11:49:15 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:49:24 | <int-e> | oh in that case, can you do... --ghci-options='-e :main' ? |
| 11:49:40 | → | __monty__ joins (~toonn@user/toonn) |
| 11:49:48 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:49:59 | <int-e> | (though I guess the point is to avoid rerunning `cabal` |
| 11:50:03 | <int-e> | so never mind) |
| 11:51:22 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:51:33 | <tomsmeding> | gensyst: cabal checks if there were changes in your project source files, project config, the global package index, and perhaps other things. That command might get outdated whenever you change any of those things. But if you don't, then it might continue to work :) |
| 11:51:46 | <tomsmeding> | in particular, just changing Main.hs and not changing any dependencies should work |
| 11:52:00 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:53:18 | <gensyst> | sure :) |
| 11:53:20 | <gensyst> | now finally |
| 11:53:34 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:53:36 | <gensyst> | Forgive me but "runghc allows you to run Haskell programs without first having to compile them." sounds STRANGE. |
| 11:53:44 | <gensyst> | magic? |
| 11:53:57 | <int-e> | gensyst: the same magic as ghci |
| 11:54:16 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:54:42 | <tomsmeding> | interpreting != compiling |
| 11:54:44 | <int-e> | it's morally (maybe even technically, I don't know) the same as ghci P.hs -e ':main' |
| 11:55:11 | <int-e> | and it does compile, of course, but on the fly and to bytecode |
| 11:55:20 | <tomsmeding> | int-e: it is :p https://gitlab.haskell.org/ghc/ghc/-/blob/master/utils/runghc/Main.hs#L156 |
| 11:55:49 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:56:21 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 11:56:27 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:57:40 | <gensyst> | ok i see |
| 11:57:58 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:58:28 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 11:59:46 | <gensyst> | I should just have RTFM, but at least now I know what to look for. https://downloads.haskell.org/ghc/latest/docs/html/users_guide/ghci.html "So it pays to compile the parts of a program that aren’t changing very often, and use the interpreter for the code being actively developed." |
| 11:59:47 | <gensyst> | thanks guys |
| 12:00:02 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 12:00:41 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 12:01:31 | → | kspalaiologos joins (~kspalaiol@user/kspalaiologos) |
| 12:01:40 | × | mmhat quits (~mmh@55d46556.access.ecotel.net) (Quit: WeeChat 3.3) |
| 12:02:16 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 12:02:53 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 12:04:29 | → | betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 12:04:56 | × | betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 12:05:07 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 12:05:32 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 12:05:42 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 12:08:21 | → | whatif joins (~user@114.250.136.140) |
| 12:08:39 | <whatif> | could ghc take {- code -} as comment? |
| 12:08:46 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:09:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds) |
| 12:09:47 | × | coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection) |
| 12:09:51 | <whatif> | I know we use -- as comment, but a vim plugin nerdcommenter use {- -} as comment for .hs |
| 12:10:01 | <whatif> | so I wonder |
| 12:10:34 | <int-e> | Yes, `{- ... -}` is a comment in Haskell; it can span several lines |
| 12:13:46 | → | coot joins (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
| 12:13:50 | × | coot quits (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Read error: Connection reset by peer) |
| 12:14:09 | <whatif> | ok |
| 12:15:55 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 12:16:21 | → | fef joins (~thedawn@user/thedawn) |
| 12:17:37 | <tomsmeding> | and what's more, it nests! |
| 12:17:50 | <tomsmeding> | > 1 + {- comment {- within a {- comment -} -} -} 2 |
| 12:17:52 | <lambdabot> | 3 |
| 12:20:48 | → | coot joins (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
| 12:21:17 | × | xff0x quits (~xff0x@2001:1a81:53d2:9000:1181:abfc:439c:19e) (Ping timeout: 240 seconds) |
| 12:21:23 | → | Topsi joins (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) |
| 12:22:28 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:eec8:750b:6133:d894) |
| 12:22:43 | <hololeap> | much like the mighty sparrow |
| 12:23:00 | × | coot quits (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Remote host closed the connection) |
| 12:23:25 | × | Topsi2 quits (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
| 12:30:41 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 12:30:41 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 12:30:41 | → | wroathe joins (~wroathe@user/wroathe) |
| 12:33:11 | → | pfurla joins (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) |
| 12:35:22 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 12:36:41 | → | coot joins (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
| 12:37:57 | × | dcoutts_ quits (~duncan@71.78.6.51.dyn.plus.net) (Ping timeout: 240 seconds) |
| 12:45:18 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 12:49:53 | × | gensyst quits (gensyst@user/gensyst) (Quit: Leaving) |
| 12:49:58 | × | pfurla quits (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) (Quit: gone to sleep. ZZZzzz…) |
| 12:50:54 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 12:52:03 | → | polezaivsani` joins (~polezaivs@orangeshoelaces.net) |
| 12:53:54 | × | polezaivsani` quits (~polezaivs@orangeshoelaces.net) (Client Quit) |
| 12:54:57 | × | polezaivsani quits (~polezaivs@orangeshoelaces.net) (Ping timeout: 240 seconds) |
| 12:55:03 | → | polezaivsani` joins (~polezaivs@orangeshoelaces.net) |
| 12:55:08 | × | polezaivsani` quits (~polezaivs@orangeshoelaces.net) (Client Quit) |
| 12:58:54 | → | polezaivsani joins (~polezaivs@orangeshoelaces.net) |
| 12:59:33 | × | fef quits (~thedawn@user/thedawn) (Quit: Leaving) |
| 13:04:13 | × | polezaivsani quits (~polezaivs@orangeshoelaces.net) (Remote host closed the connection) |
| 13:06:16 | → | kaction joins (~kaction@pool-71-191-91-40.washdc.fios.verizon.net) |
| 13:08:00 | → | polezaivsani joins (~polezaivs@orangeshoelaces.net) |
| 13:08:31 | × | max22- quits (~maxime@2a01cb08833598005fdfc488429f8659.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
| 13:09:37 | × | falafel quits (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 13:15:14 | → | jumper149 joins (~jumper149@static.6.71.203.116.clients.your-server.de) |
| 13:15:38 | <jumper149> | What is the inlining behaviour of derived instances? |
| 13:16:47 | <int-e> | . o O ( unpredictable ) |
| 13:18:40 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 256 seconds) |
| 13:19:44 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 13:20:04 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:20:23 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 13:21:59 | <int-e> | jumper149: I think if you want a serious answer you'll have to narrow that question down quite a bit. |
| 13:23:52 | <jumper149> | int-e: Understandable, I was hoping for some documentation. Maybe something in GHC manual? |
| 13:24:33 | <jumper149> | I'm currently abusing DerivingVia quite a lot with monad transformers and was wondering about performance implications. |
| 13:26:17 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 13:26:50 | <int-e> | I'm not sure where to look either. The story starts with type checking; as far as instantiations are visible to the type checker, they are also candidates for inlining... so things get better the more concrete the types are. But then you have the usual problem of predicting whether ghc will actually take the opportunity. |
| 13:28:27 | <jumper149> | int-e: Uhh, I guess chances are kinda bad then :( |
| 13:29:06 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 13:29:13 | <Athas> | When I try to use 'haskellPackagesNew.quickcheck-instances_0_3_27' in my .nix file, I get 'error: infinite recursion encountered' (naturally pointing at some internal file I have never even heard about before). I use this pattern to get new versions of many other obsolete Hackage packages in Nixpkgs. Is quickcheck-instances known to be particularly fragile for some reason? |
| 13:29:25 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 13:29:39 | <int-e> | jumper149: the `via` part is cheap though; that's basically a coercion (actually one per class method) to wrap/unwrap a newtype |
| 13:29:40 | <Athas> | This is how I do it for various other packages: https://github.com/diku-dk/futhark/blob/master/default.nix#L23-L42 |
| 13:32:05 | → | ProfSimm joins (~ProfSimm@87.227.196.109) |
| 13:38:35 | → | dcoutts_ joins (~duncan@71.78.6.51.dyn.plus.net) |
| 13:40:57 | × | remedan_ quits (~remedan@balak.me) (Quit: Bye!) |
| 13:45:21 | <whatif> | how to change the function call behavior by every same call? same call, different result every time |
| 13:45:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 13:48:31 | → | falafel joins (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) |
| 13:50:24 | <jumper149> | whatif: Do you want an impure function? |
| 13:52:09 | → | DNH joins (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) |
| 13:52:17 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:52:22 | × | DNH quits (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Client Quit) |
| 13:52:38 | → | DNH joins (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) |
| 13:54:11 | <whatif> | jumper149: is possible? |
| 13:54:22 | → | remedan joins (~remedan@octo.cafe) |
| 13:55:10 | → | pfurla joins (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) |
| 13:55:12 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 13:55:44 | × | pfurla quits (~pfurla@2804:d41:4331:4800:1075:b21:7fd0:c974) (Client Quit) |
| 13:55:54 | <jumper149> | whatif: No, but that's what monads are for ;) |
| 13:56:35 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:56:54 | <whatif> | jumper149: see what this python with closure to archive, it change a function's behavior after every call, it can do a map with a changing function, https://paste.tomsmeding.com/GAVSCKAx |
| 13:57:39 | <whatif> | of course, it can be done with an object way |
| 13:57:55 | <jumper149> | Take the IO monad for example: f = do { x <- readFile "filename"; writeFile "filename" (x ++ "appended text"); return x } |
| 13:57:58 | <whatif> | change the object's attribute after every object's method call |
| 13:58:45 | <whatif> | so I wonder if we can do that with State or whatever else |
| 13:59:56 | <jumper149> | whatif: Yes. That is possible to do with the `State` monad. |
| 14:00:11 | <whatif> | jumper149: for example? |
| 14:01:05 | <jumper149> | The type signature should be something like: `gc :: State Integer Integer` |
| 14:03:29 | <jumper149> | And then to use that function: `evalState (traverse gc [1,2,3]) 0` |
| 14:04:05 | <jumper149> | whatif: Read through this documentation: https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-State-Lazy.html |
| 14:05:20 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: Leaving) |
| 14:05:26 | <jumper149> | Oops, actually the type signature is: `gc :: Integer -> State Integer Integer` |
| 14:06:21 | <whatif> | jumper149: could you paste the whole code? |
| 14:06:35 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 14:07:03 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 14:07:56 | → | notzmv joins (~zmv@user/notzmv) |
| 14:08:08 | <jumper149> | I left out the implementation of `gc` as an exercise ;) |
| 14:08:29 | <jumper149> | Honestly, if you want to undestand how it works, you should really try to implement that yourself. |
| 14:09:13 | <jumper149> | Everything you need will be available in `Control.Monad.State` from the mtl package. |
| 14:09:37 | <whatif> | jumper149: but I don't think that's possible in haskell |
| 14:10:37 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds) |
| 14:10:43 | <whatif> | gc = gc _ _ |
| 14:12:48 | <jumper149> | You don't need recursion here. Write `gc` exactly like `inner` from your python example. |
| 14:14:15 | × | coot quits (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Remote host closed the connection) |
| 14:14:31 | <whatif> | but that inner function take a outside variable, and change it |
| 14:14:46 | <whatif> | how haskell can change a outside variable inside a function |
| 14:15:01 | <jumper149> | Yes, did you see that I corrected myself: `gc :: Integer -> State Integer Integer` |
| 14:15:38 | <jumper149> | Oh you mean the outside variable `n`... |
| 14:15:45 | <whatif> | yes |
| 14:15:47 | → | jkaye joins (~jkaye@2601:281:8300:7530:48ee:b2a3:80ed:d885) |
| 14:15:47 | <jumper149> | That is our state! |
| 14:15:56 | → | ksqsf joins (~ksqsf@134.209.106.31) |
| 14:16:21 | <jumper149> | You can use `get` and `put` from https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-State-Lazy.html#t:StateT |
| 14:16:40 | <jumper149> | That will allow you to read and change that state |
| 14:16:45 | <ksqsf> | hi all. where is the code for deriving class instances located in ghc? |
| 14:17:18 | <whatif> | jumper149: after the change, where you store it? |
| 14:17:25 | → | zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) |
| 14:17:29 | <whatif> | store the return value, the result |
| 14:18:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 14:19:07 | <jumper149> | whatif: In the state again. That's what `put` is for. |
| 14:19:44 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:20:00 | <whatif> | jumper149: you mean the put the whole code inside the one state? |
| 14:20:28 | <jumper149> | That went over my head. |
| 14:21:00 | <ksqsf> | ok, I found it: GHC.Tc.Deriv. |
| 14:21:26 | <whatif> | jumper149: so I would like to see the full code... |
| 14:21:34 | <jumper149> | You use `get` to read out the state. Then you use `put` to store your new state. Then you use `return` to give return the same value that you return in `inner`. |
| 14:21:39 | <jumper149> | whatif: ok, sec |
| 14:22:05 | → | xb0o2 joins (~xb0o2@user/xb0o2) |
| 14:22:51 | → | coot joins (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
| 14:25:26 | <jumper149> | http://ix.io/3IQK |
| 14:25:55 | × | ddb quits (~ddb@ipv6two.tilde.club) (Ping timeout: 250 seconds) |
| 14:28:55 | → | Heffalump[m] joins (~hsenagmat@2001:470:69fc:105::e11) |
| 14:38:35 | → | max22- joins (~maxime@2a01cb0883359800a97032845f824a07.ipv6.abo.wanadoo.fr) |
| 14:44:03 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 14:44:30 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 14:46:11 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:46:33 | <whatif> | jumper149: thanks :) |
| 14:49:20 | <Heffalump[m]> | Is there a way to get ghc --make to print the compilation time of each file? |
| 14:49:33 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 14:52:17 | × | falafel quits (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 14:53:36 | × | coot quits (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Remote host closed the connection) |
| 14:56:21 | × | ksqsf quits (~ksqsf@134.209.106.31) (Quit: Leaving...) |
| 14:56:49 | → | ksqsf joins (~ksqsf@134.209.106.31) |
| 14:57:53 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 14:58:05 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 14:58:17 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 15:01:46 | → | gdd joins (~gdd@129.199.146.230) |
| 15:04:35 | × | unyu quits (~pyon@user/pyon) (Quit: WeeChat 3.3) |
| 15:04:37 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 15:06:34 | → | unyu joins (~pyon@user/pyon) |
| 15:09:46 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 15:10:37 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 15:14:59 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 15:15:33 | × | DNH quits (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:15:40 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 15:16:16 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 15:16:34 | → | Topsi1 joins (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) |
| 15:17:28 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:17:28 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 15:17:28 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:18:37 | × | Topsi quits (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
| 15:19:06 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 15:20:25 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 15:20:33 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 15:23:45 | → | Topsi joins (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) |
| 15:24:15 | <Athas> | Why, after 'choco install -y ghc --version=8.10.7 --allow-downgrade', do I have ghc 9.2.1 installed? |
| 15:24:17 | → | DNH joins (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) |
| 15:24:19 | <Athas> | I am so tired of computers. |
| 15:26:44 | × | Topsi1 quits (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) (Ping timeout: 256 seconds) |
| 15:27:07 | <jumper149> | Athas: Multiple package managers? |
| 15:27:46 | <Athas> | jumper149: unless the 'windows-2019' image provided by GA comes with a new version of GHC preinstalled, I don't think so. |
| 15:28:19 | <jumper149> | Oh, no idea about windows, sry :( |
| 15:28:50 | <Athas> | Yeah, me too. Maybe I should just stop pretending to support it. |
| 15:30:22 | → | darchitect joins (~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c) |
| 15:30:41 | <darchitect> | hey guys, does anyone know how to quickly visualise folds in ghci ? |
| 15:31:20 | <geekosaur> | ghc-vis? |
| 15:31:34 | <darchitect> | what is that |
| 15:31:36 | <darchitect> | never heard of it before |
| 15:31:38 | <geekosaur> | depends on how you want them to be visualized |
| 15:31:45 | <geekosaur> | @hackage ghc-vis |
| 15:31:45 | <lambdabot> | https://hackage.haskell.org/package/ghc-vis |
| 15:32:23 | <geekosaur> | I think there's also a website which visualizes folds, but that's not in ghci |
| 15:32:35 | → | gensyst joins (gensyst@user/gensyst) |
| 15:32:42 | <darchitect> | wow thanks a bunch man |
| 15:32:44 | <geekosaur> | there's also |
| 15:32:45 | <darchitect> | will have a look at it |
| 15:32:55 | <geekosaur> | > foldr f z [a,b,c] |
| 15:32:57 | <lambdabot> | f a (f b (f c z)) |
| 15:33:05 | <geekosaur> | courtesy of the simple-reflect package |
| 15:33:05 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 15:34:37 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 15:34:39 | × | acidjnk quits (~acidjnk@p200300d0c7271e774586c8f7f876c3d9.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 15:34:59 | <darchitect> | ghc-viz looks sick |
| 15:35:06 | → | dsp joins (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) |
| 15:35:44 | <darchitect> | I thought Haskell had a rather esoteric and stagnated eco-system but I stand corrected |
| 15:35:46 | <darchitect> | thanks again |
| 15:36:02 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:36:37 | × | SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 240 seconds) |
| 15:38:33 | → | u0_a184 joins (~u0_a184@120.242.179.14) |
| 15:38:38 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 15:38:48 | <Athas> | It's old but I don't think it's esoteric by modern standards. And it's certainly not stagnant; it's changing faster than I've seen before. |
| 15:39:02 | <dsp> | I have a beginner question: I have two maybe's and want to result of an "or" operation, e.g. Just a OP Nothing should return Just a, and vice versa, is ther a liberary function for that? |
| 15:39:34 | <geekosaur> | > Just 5 <|> Nothing |
| 15:39:36 | <lambdabot> | Just 5 |
| 15:39:43 | <geekosaur> | > Nothing <|> Just 5 |
| 15:39:45 | <lambdabot> | Just 5 |
| 15:40:03 | <geekosaur> | if you want a generalization to multiple values, it's `asum` |
| 15:40:23 | <dsp> | thank you. Hm, variable <|> not in scope, let me see waht i need to import to get it |
| 15:40:43 | <geekosaur> | Control.Applicative probably |
| 15:41:05 | <dsp> | very much so, thank you geekosaur! |
| 15:44:50 | × | xff0x quits (~xff0x@2001:1a81:53d2:9000:eec8:750b:6133:d894) (Ping timeout: 260 seconds) |
| 15:45:38 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:f325:fa80:d018:3e1f) |
| 15:46:11 | × | Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 245 seconds) |
| 15:47:57 | × | u0_a184 quits (~u0_a184@120.242.179.14) (Quit: WeeChat 3.0.1) |
| 15:48:27 | → | KnifeFire joins (~Knifefire@120.242.179.14) |
| 15:48:38 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 15:49:39 | × | leah2 quits (~leah@vuxu.org) (Remote host closed the connection) |
| 15:50:03 | × | KnifeFire quits (~Knifefire@120.242.179.14) (Client Quit) |
| 15:51:55 | → | leah2 joins (~leah@vuxu.org) |
| 15:53:28 | × | dsrt^ quits (~dsrt@64.253.22.77) (Remote host closed the connection) |
| 15:54:12 | → | slack1256 joins (~slack1256@191.126.99.78) |
| 15:58:57 | × | jkaye quits (~jkaye@2601:281:8300:7530:48ee:b2a3:80ed:d885) (Ping timeout: 240 seconds) |
| 15:59:34 | → | averell joins (~averell@user/averell) |
| 16:03:21 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 16:06:11 | × | ksqsf quits (~ksqsf@134.209.106.31) (Remote host closed the connection) |
| 16:07:14 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 16:07:37 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 16:07:51 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
| 16:08:04 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 16:12:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds) |
| 16:13:02 | → | ksqsf joins (~ksqsf@134.209.106.31) |
| 16:14:02 | × | xff0x quits (~xff0x@2001:1a81:53d2:9000:f325:fa80:d018:3e1f) (Ping timeout: 240 seconds) |
| 16:14:49 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:624c:90f8:cb96:14ab) |
| 16:16:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:19:42 | × | kspalaiologos quits (~kspalaiol@user/kspalaiologos) (Quit: Leaving) |
| 16:19:49 | × | ksqsf quits (~ksqsf@134.209.106.31) (Quit: Leaving...) |
| 16:20:17 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 16:20:40 | → | ksqsf joins (~user@134.209.106.31) |
| 16:22:58 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 16:24:45 | → | sndr joins (~sander@user/sander) |
| 16:25:23 | × | sander quits (~sander@user/sander) (Ping timeout: 252 seconds) |
| 16:25:29 | sndr | is now known as sander |
| 16:26:45 | → | zer0bitz joins (~zer0bitz@dsl-hkibng32-54f844-160.dhcp.inet.fi) |
| 16:28:57 | × | xff0x quits (~xff0x@2001:1a81:53d2:9000:624c:90f8:cb96:14ab) (Ping timeout: 240 seconds) |
| 16:30:00 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:e615:4a02:5110:222) |
| 16:30:56 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:34:01 | → | pfurla joins (~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) |
| 16:34:39 | → | son0p- joins (~ff@181.136.122.143) |
| 16:36:19 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 16:36:53 | <gensyst> | I "open my project (library and executable)" with GHCi using this command: "cabal repl exe:projectname-exe". Then I call "import Some.Module.Inside.Library" and now I have access to it. |
| 16:37:26 | <gensyst> | However this library module is not listed when I call ":show modules". Why not? I want to double-check that the library module is not interpreted. |
| 16:37:34 | <gensyst> | I want to make sure it's using compiled .o |
| 16:39:55 | × | whatif quits (~user@114.250.136.140) (Quit: ERC (IRC client for Emacs 26.3)) |
| 16:40:35 | <gensyst> | Let me put it this way: In GHCi, how do I check if a particular thing is coming from interpreted code or compiled code? |
| 16:41:05 | → | mvk joins (~mvk@2607:fea8:5cdd:f000::917a) |
| 16:46:23 | <slack1256> | gensyst: The only interpreted code on your ghci session should be what you implicit pass an argument to `cabal v2-repl` AFAIK. |
| 16:47:10 | <slack1256> | If in my project I run `cabal v2-run lib:my-project` only that target (plus its dependencies on cabal.project) will get interpreted. |
| 16:47:21 | <slack1256> | I don't know how to do that inside of a ghci session. |
| 16:48:23 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 16:48:26 | <slack1256> | gensyst: I got. `:show linker` inside ghci! |
| 16:48:55 | <slack1256> | It will show pkgs vs loaded objects. |
| 16:49:25 | → | TranquilEcho joins (~grom@user/tranquilecho) |
| 16:49:50 | <pfurla-matrix> | `:show modules` shows that is interpreted or compiled |
| 16:49:57 | <gensyst> | slack1256, when running ":show linker", the project's own library is listed in Pkgs, but both Objs and BCOs are empty. |
| 16:49:58 | <pfurla-matrix> | that = what |
| 16:50:34 | <gensyst> | pfurla-matrix, yes but apparently that's only for what you explicitly pass into cabal repl (as slack1256 said) |
| 16:50:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 16:50:44 | <pfurla-matrix> | what is BCOs? |
| 16:51:31 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 16:52:15 | <gensyst> | no idea |
| 16:52:42 | × | zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3) |
| 16:53:26 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds) |
| 16:54:13 | <pfurla-matrix> | "Byte Code Objects (BCOs). BCOs are heap objects which correspond to top-level bindings, and let and case expressions" from https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/GHCi |
| 16:56:53 | → | coot joins (~coot@2a02:a310:e03f:8500:7248:52ac:817b:7fb4) |
| 16:57:04 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:58:22 | <gensyst> | Can I go by this rule? Rule: (1) If it's listed as "interpreted" in ":show modules", it's interpreted. (2) If it's listed as ".o" in ":show modules", it's compiled. (3) If it isn't listed at all in ":show modules", it's also compiled. |
| 16:58:56 | × | x88x88x quits (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (Read error: Connection reset by peer) |
| 16:59:58 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 17:04:52 | → | euouae joins (~euouae@user/euouae) |
| 17:07:26 | <euouae> | Hello how would you write `append :: [a] -> [a] -> [a]` for which `append xs ys` is just `xs ++ ys`? One solution seems to be to recurse like `x :: append xs ys` and another is by using a tail-call optimized reverse-append. The second option requires traversing the list twice but doesn't require O(n) in stack. Is that betteR? |
| 17:08:54 | <gensyst> | euouae, beautiful nickname.. thought i wa sreading greek at first. am i dyslexic? |
| 17:09:49 | <monochrom> | You can write "append xs ys = xs ++ ys" literally. |
| 17:10:11 | <euouae> | gensyst, no but you may be an oracular |
| 17:10:18 | <pfurla-matrix> | it's aenone if rotated 180o, isn't it? |
| 17:10:21 | <monochrom> | If you mean you want to write your own recursive algorithm, tail recursion is bad for this. |
| 17:10:33 | <euouae> | monochrom yes I'm asking about writing my own algorithm |
| 17:11:13 | <monochrom> | This is a test case you want to pass: |
| 17:11:27 | <monochrom> | > take 1 ("x" ++ undefined) |
| 17:11:29 | <lambdabot> | "x" |
| 17:11:43 | <monochrom> | The standard tail-recursive algorithm will fail that. |
| 17:11:43 | × | DNH quits (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:11:48 | → | koz joins (~koz@121.99.240.58) |
| 17:12:07 | <euouae> | hmm I didn't realize monochrom, I should've added that I wish the algorithm to be strict |
| 17:12:45 | <euouae> | I don't know what the 'standard' algorithm is; I do know how to have a function f xs ys == (reverse xs) ++ ys |
| 17:12:53 | → | DNH joins (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) |
| 17:13:48 | <euouae> | which has the tail-call optimization. So I could do `f (f xs []) ys` as my `append xs ys`, that's what I had in mind. |
| 17:14:22 | × | xb0o2 quits (~xb0o2@user/xb0o2) (Quit: Client closed) |
| 17:14:24 | <euouae> | Which traverses xs twice, but it seems a better option than using O(n) of the stack? I'm just wondering if these are correct considerations and if there's anything better |
| 17:16:23 | <monochrom> | Are you saying that using the standard library's ++, x++y uses linear space for finite strings? Therefore uses infinite space for infinite strings? |
| 17:16:56 | <monochrom> | Because take 1 (repeat 'x' ++ repeat 'y') takes only constant time, therefore no way it can use infinite space or even linear space. |
| 17:17:05 | <monochrom> | > take 1 (repeat 'x' ++ repeat 'y') |
| 17:17:07 | <lambdabot> | "x" |
| 17:17:30 | <monochrom> | This destroys your model of how recursion uses space. |
| 17:17:34 | <euouae> | No I'm saying that the implementation for `append` I wrote above seems to use linear space if strict |
| 17:17:50 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 17:17:50 | <monochrom> | OK, so this is not Haskell? |
| 17:17:53 | <euouae> | append (x::xs) ys = x :: (append xs ys) |
| 17:19:30 | <euouae> | I'm trying to understand how that translates into machine code but unfortunately I'm not good enough to know how to compile it and disassemble it with gdb |
| 17:21:46 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 17:21:48 | <pfurla-matrix> | `::` is not haskell cons |
| 17:22:05 | <euouae> | oh I meant `:` you are right |
| 17:23:45 | <monochrom> | OK so this is Haskell. |
| 17:24:18 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:24:25 | × | thevishy quits (~Nishant@2405:201:f005:c007:851a:8f84:501c:8bd1) (Quit: Leaving) |
| 17:24:29 | × | koz quits (~koz@121.99.240.58) (Quit: koz) |
| 17:25:09 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 17:25:19 | <monochrom> | "append (x::xs) ys = x : (append xs ys)" is non-strict in xs and in ys. |
| 17:26:12 | × | polezaivsani quits (~polezaivs@orangeshoelaces.net) (Remote host closed the connection) |
| 17:26:21 | <pfurla-matrix> | if you really want to see things with gdb you should have a look at https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/debug-info.html if you haven't already. |
| 17:26:27 | <monochrom> | and in the recursive term (append xs ys) |
| 17:27:07 | <pfurla-matrix> | but it might be more useful to learn how haskell lazyness works instead of going all the way down to asm |
| 17:27:37 | <monochrom> | https://github.com/takenobu-hs/haskell-ghc-illustrated is a good presentation of the low level story. |
| 17:28:36 | <monochrom> | But yeah most of the time, or most people, do not need that low level. (And not ready for it anyway.) |
| 17:29:23 | <pfurla-matrix> | tagless g-machine :) |
| 17:29:58 | → | polezaivsani joins (~polezaivs@orangeshoelaces.net) |
| 17:30:13 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 17:35:21 | <euouae> | I guess I'm just trying to understand if append (x:xs) = x : (append xs ys) uses O(n) of the stack |
| 17:35:26 | <euouae> | where n is the length of xs |
| 17:36:39 | → | KnifeFire joins (~Knifefire@120.242.179.14) |
| 17:37:00 | <euouae> | both the pdf you linked to and the debug-info link on gdb seem too advanced, but on a rudimentary level I wonder if I can get an answer to the above or is that also a big story? |
| 17:37:01 | × | xff0x quits (~xff0x@2001:1a81:53d2:9000:e615:4a02:5110:222) (Ping timeout: 245 seconds) |
| 17:38:10 | → | xff0x joins (~xff0x@2001:1a81:53d2:9000:941d:3a25:9fc5:6e77) |
| 17:38:26 | <euouae> | or even easier to ask, can haskell code overflow the stack? |
| 17:38:32 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:38:32 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 17:38:32 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:38:43 | × | KnifeFire quits (~Knifefire@120.242.179.14) (Client Quit) |
| 17:38:59 | <pfurla-matrix> | lol, just found this https://stackoverflow.com/questions/43265198/do-stack-overflow-errors-occur-in-haskell, didn't read it, no idea if it's useful |
| 17:39:05 | <ksqsf> | euouae: haskell does not actually use system stacks for user functions iiuc |
| 17:39:54 | <ksqsf> | thread (haskell's green threads) stacks are heap objects |
| 17:40:09 | <euouae> | ksqsf that is starting to make sense... |
| 17:40:25 | <darchitect> | doesn't haskell use the stack at all ? |
| 17:41:23 | × | Topsi quits (~Tobias@dyndsl-095-033-094-113.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 17:42:44 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 17:43:22 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 17:48:04 | × | coot quits (~coot@2a02:a310:e03f:8500:7248:52ac:817b:7fb4) (Quit: coot) |
| 17:48:20 | <euouae> | okay, great. thank you for the answers |
| 17:49:00 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:49:00 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 17:49:00 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:52:06 | × | euouae quits (~euouae@user/euouae) (Quit: ) |
| 17:53:22 | <pfurla-matrix> | > foldl (+) 0 [1..10**8] |
| 17:53:31 | <lambdabot> | mueval.real: ExitFailure 1 |
| 17:54:00 | <pfurla-matrix> | in my local ghci I get a stack overflow |
| 17:54:29 | <pfurla-matrix> | * > foldl' (+) |
| 17:54:38 | × | son0p- quits (~ff@181.136.122.143) (Ping timeout: 256 seconds) |
| 17:54:47 | <pfurla-matrix> | > foldl' (+) 0 [1..10**8] |
| 17:54:53 | <lambdabot> | 5.00000005e15 |
| 17:55:18 | <darchitect> | stackoverflow here as well |
| 17:55:21 | <geekosaur> | haskell doesn't have a traditional stack. there is a pattern match stack which is part of how lazy evaluation occurs |
| 17:56:33 | <geekosaur> | > foldl f z [a,b,c] |
| 17:56:34 | <lambdabot> | f (f (f z a) b) c |
| 17:59:04 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 17:59:15 | <monochrom> | There is still a difference between "how much stack does this code use?" and "so this code uses linear stack, my question is..." |
| 17:59:37 | <monochrom> | Especially when the premise "so this code uses linear stack" is wrong. |
| 17:59:55 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 17:59:57 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 18:00:02 | <pfurla-matrix> | what is f, z, a, b, and c ? |
| 18:00:20 | <hpc> | they're placeholder values that pretty-print as "f", "z", etc etc |
| 18:00:23 | <geekosaur> | that was for something I was going to do and changed my mind, sorry |
| 18:00:26 | <geekosaur> | look at |
| 18:00:33 | <geekosaur> | @hackage simple-reflect |
| 18:00:33 | <lambdabot> | https://hackage.haskell.org/package/simple-reflect |
| 18:00:39 | <hpc> | in a way that looks like how their combination as an expression would look |
| 18:00:44 | <pfurla-matrix> | hpc that's pretty cool |
| 18:00:44 | <geekosaur> | it's a pretty clever package |
| 18:01:01 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 18:01:32 | <monochrom> | For maximum confusion: |
| 18:01:41 | <monochrom> | > foldl f z [e, f] |
| 18:01:42 | <lambdabot> | f (f z e) f |
| 18:01:42 | <pfurla-matrix> | I was using simple-reflect the other day, couldn't make it work with global stack, ditched stack for cabal... and finally completely for what I wanted from simple-reflect |
| 18:01:43 | <APic> | Gesundheit. |
| 18:02:35 | <hpc> | > (f 5, f (2 + 3)) -- it gets even more cleverer :D |
| 18:02:36 | <lambdabot> | error: |
| 18:02:36 | <lambdabot> | • Ambiguous type variable ‘a0’ arising from a use of ‘show_M404042824880... |
| 18:02:36 | <lambdabot> | prevents the constraint ‘(Show a0)’ from being solved. |
| 18:02:38 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:02:54 | <hpc> | cleverer than ghc :( |
| 18:03:06 | <hpc> | with enough type signatures that prints "(f 5, f 5)" |
| 18:04:30 | <pfurla-matrix> | > :t f |
| 18:04:32 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
| 18:04:45 | <monochrom> | > (f 5, f (2 + 3)) :: (Expr, Expr) |
| 18:04:46 | <lambdabot> | (f 5,f 5) |
| 18:05:08 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 18:05:31 | <pfurla-matrix> | > (f 5, f ( (lift 2) + 3)) :: (Expr, Expr) |
| 18:05:33 | <lambdabot> | error: |
| 18:05:33 | <lambdabot> | • Ambiguous type variables ‘t0’, ‘m0’, |
| 18:05:33 | <lambdabot> | ‘a0’ arising from a use of ‘f’ |
| 18:05:42 | <monochrom> | You will have to say ":t f" or "@type f", in both cases no "> " |
| 18:05:56 | <pfurla-matrix> | :t f |
| 18:05:58 | <lambdabot> | FromExpr a => a |
| 18:06:17 | <pfurla-matrix> | thanks, forgot how to use lambdabot |
| 18:07:25 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 18:09:52 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:09:59 | <darchitect> | what is lambdabot ? |
| 18:10:17 | <geekosaur> | @version |
| 18:10:18 | <lambdabot> | lambdabot 5.3.0.1 |
| 18:10:18 | <lambdabot> | git clone https://github.com/lambdabot/lambdabot |
| 18:10:34 | <pfurla-matrix> | > "I am lambdabot, nice to meet'ya" |
| 18:10:36 | <lambdabot> | "I am lambdabot, nice to meet'ya" |
| 18:12:02 | <darchitect> | sick |
| 18:14:05 | → | Neuromancer joins (~Neuromanc@user/neuromancer) |
| 18:18:12 | <hpc> | % "yahb is also pretty neat" |
| 18:18:12 | <yahb> | hpc: "yahb is also pretty neat" |
| 18:18:46 | <hpc> | (yahb gives you a full ghci session, IO and all, but doesn't have other neat stuff like djinn) |
| 18:19:17 | <geekosaur> | lambdabot is based around mueval, which is an internal sandboxing mechanism. yahb is ghci running in an external sandbox |
| 18:21:50 | <zero> | is it possible to do a bfs as elegantly as this dfs? https://paste.jrvieira.com/1639938024209 |
| 18:22:41 | <monochrom> | You need a queue. Or you need iterative deepening. |
| 18:23:11 | <zero> | what do you mean by iterative deepening? |
| 18:23:11 | → | econo joins (uid147250@user/econo) |
| 18:23:17 | <monochrom> | Iterative deepening code can look pretty close to dfs. |
| 18:23:23 | <monochrom> | Look it up. |
| 18:24:23 | <zero> | reading. thanks |
| 18:24:33 | <pfurla-matrix> | hpc: can't find much about yahb |
| 18:31:28 | <gensyst> | Are these rules for GHCi accurate? (1) If it's listed as "interpreted" in ":show modules", it's interpreted. (2) If it's listed as ".o" in ":show modules", it's compiled. (3) If it isn't listed at all in ":show modules", it's compiled. |
| 18:31:58 | <monochrom> | Yes. |
| 18:32:20 | <monochrom> | (3) can be strengthened to: from a library. |
| 18:32:28 | <gensyst> | monochrom, Is there a way to figure out the optimization level from that level, or do I basically have to look at the .cabal file of each compiled package? |
| 18:32:46 | <monochrom> | That information is lost. |
| 18:32:55 | <gensyst> | thanks! |
| 18:33:06 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 18:33:22 | <enyc> | DATE |
| 18:33:24 | <enyc> | oops |
| 18:33:39 | <gensyst> | <monochrom> (3) can be strengthened to: from a library. Do you mean, "compiled from a library"? |
| 18:33:49 | <monochrom> | yes |
| 18:33:53 | <gensyst> | thanks! |
| 18:34:08 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 18:34:08 | × | earendel quits (uid498179@user/earendel) (Quit: Connection closed for inactivity) |
| 18:36:13 | × | wolfshappen quits (~waff@irc.furworks.de) (Ping timeout: 240 seconds) |
| 18:36:22 | → | Noinia joins (~Frank@77-162-168-71.fixed.kpn.net) |
| 18:37:32 | → | Jing_ joins (~hedgehog@2604:a840:3::103b) |
| 18:37:34 | × | sleblanc quits (~sleblanc@user/sleblanc) (Quit: Leaving) |
| 18:38:33 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:38:57 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 18:39:57 | × | Jing quits (~hedgehog@2604:a840:3::103e) (Ping timeout: 240 seconds) |
| 18:39:59 | → | wolfshappen joins (~waff@irc.furworks.de) |
| 18:40:36 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds) |
| 18:42:52 | × | pfurla quits (~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) (Quit: gone to sleep. ZZZzzz…) |
| 18:43:39 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 18:44:09 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:44:10 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:44:17 | → | sleblanc joins (~sleblanc@user/sleblanc) |
| 18:44:39 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:44:39 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:44:45 | <Noinia> | is anyone successfully using HLS in a multi-cabal-project setup? I'm getting some strange error stating that it cannot parse the output form cabal (since cabal suposedly crashed; see https://controlc.com/778b78ab). Everything just builds fine when I run 'cabal build' on commandline. |
| 18:46:04 | → | jijimofo joins (~cmo@S010610561191f5d6.lb.shawcable.net) |
| 18:46:30 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:46:30 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:46:40 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:47:05 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:47:07 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:47:25 | → | falafel joins (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) |
| 18:48:00 | <gensyst> | Noinia, shouldn't one be putting a .hie file or something to tell it where all the projects are? |
| 18:48:05 | <gensyst> | otherwise it can get confused |
| 18:48:10 | <gensyst> | however this info may be obsolete by now |
| 18:48:16 | <gensyst> | sorry, i meant hie.yaml |
| 18:48:51 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:48:52 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:49:53 | <Noinia> | I thought that was suposed to be obsolete by now indeed. I guess I can try actually generating one manually again. |
| 18:50:34 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:50:35 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:50:44 | × | ksqsf quits (~user@134.209.106.31) (Ping timeout: 256 seconds) |
| 18:51:17 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
| 18:51:51 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:51:52 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:51:58 | <jijimofo> | hi. i'm confused by stack's behavior. when i don't specify 'src' in my executables 'source-dirs:' i get an error about how it can't find BasicSDLLib.hs. when i do put 'src' in the 'source-dirs' it says 'specified source-dir "app src" doesn't exist'. can someone help me understand what i'm doing wrong? |
| 18:52:15 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:52:16 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:52:48 | <tomsmeding> | perhaps 'app, src'? |
| 18:53:31 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:54:10 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:54:11 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:54:47 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 18:55:03 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:55:03 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:55:17 | <jijimofo> | tomsmeding: i get 'specified source-dir "app, src" does not exist' |
| 18:55:53 | <tomsmeding> | is this in stack.yaml or a .cabal file? |
| 18:56:27 | <jijimofo> | in stack.yaml. i usually use cabal but i decided to give stack a try |
| 18:56:42 | <geekosaur> | keep in mind that stack still uses cabal files |
| 18:57:05 | <geekosaur> | the cabal equivalent of stack.yaml is cabal.project, not <projectname>.cabal |
| 18:57:41 | <jijimofo> | weirdly when i specify the source-dir field wrong the code gets compiled |
| 18:57:43 | <tomsmeding> | can't find anything about "source-dirs" in the stack documentation; where did you get that key from? |
| 18:58:10 | <jijimofo> | i used 'stack new' i think |
| 18:59:06 | tomsmeding | used 'stack new' and 'source-dir' doesn't occur in the generated stack.yaml file |
| 18:59:19 | <tomsmeding> | OH package.yaml |
| 18:59:29 | <tomsmeding> | there's a huge difference between package.yaml and stack.yaml jijimofo |
| 18:59:32 | × | python476 quits (~user@88.160.31.174) (Read error: Connection reset by peer) |
| 18:59:34 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:59:34 | <geekosaur> | mm, right, still does that |
| 18:59:34 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 18:59:57 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 18:59:59 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:01:23 | <tomsmeding> | it's a yaml file, so perhaps 'source-dirs: [app, src]' |
| 19:01:26 | <tomsmeding> | jijimofo: ^ |
| 19:01:36 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Remote host closed the connection) |
| 19:01:38 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:01:39 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:01:43 | <tomsmeding> | or, source-dirs:\n- app\n- src |
| 19:01:54 | → | python476 joins (~user@88.160.31.174) |
| 19:02:18 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:02:19 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:02:40 | <jijimofo> | ok i will try a new blank project and copy my sources over. i tried the 'stack new' command again and i don't remember seeing the stuff about templates so i mustve used 'stack init' or something |
| 19:03:30 | <jijimofo> | tomsmeding: that's the syntax, thank you. i guess i need to go slower when reading docs |
| 19:03:37 | <tomsmeding> | docs don't mention this |
| 19:03:48 | <tomsmeding> | they assume you somehow know yaml syntax by heart |
| 19:03:51 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:03:52 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:03:59 | <tomsmeding> | yaml has a native concept of lists, and they reuse that here |
| 19:04:15 | <tomsmeding> | s/native/built-in/ |
| 19:05:15 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:05:16 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:05:26 | × | max22- quits (~maxime@2a01cb0883359800a97032845f824a07.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds) |
| 19:05:28 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 19:05:36 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:05:37 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:06:36 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 256 seconds) |
| 19:07:33 | → | zincy joins (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) |
| 19:08:31 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 19:09:46 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:09:47 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:12:16 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:12:40 | → | coot joins (~coot@2a02:a310:e03f:8500:7248:52ac:817b:7fb4) |
| 19:13:01 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 19:14:40 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:14:41 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:14:45 | → | Guest3076 joins (~Guest30@66.115.252.46) |
| 19:14:46 | × | gensyst quits (gensyst@user/gensyst) (Quit: Leaving) |
| 19:16:42 | → | ksqsf joins (~user@134.209.106.31) |
| 19:17:16 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 19:18:13 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:18:13 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:18:33 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:18:33 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:20:27 | → | Akiva joins (~Akiva@user/Akiva) |
| 19:20:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 19:21:37 | × | dsp quits (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:25:14 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:25:15 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:25:34 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:25:35 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:26:27 | × | zincy quits (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection) |
| 19:27:11 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 19:27:54 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 19:28:52 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 19:30:15 | × | ksqsf quits (~user@134.209.106.31) (Remote host closed the connection) |
| 19:31:29 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection) |
| 19:32:23 | × | justSleigh quits (~justache@user/justache) (Remote host closed the connection) |
| 19:36:26 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:36:27 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:37:29 | × | Guest9348 quits (~mike@2406:d500:6:1:216:3cff:fe36:651) (Ping timeout: 250 seconds) |
| 19:40:24 | → | max22- joins (~maxime@2a01cb08833598001a2c7d9873db9006.ipv6.abo.wanadoo.fr) |
| 19:42:27 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 19:44:33 | → | zincy joins (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) |
| 19:46:38 | → | justSleigh joins (~justache@user/justache) |
| 19:46:55 | × | zincy quits (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection) |
| 19:49:26 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 19:50:47 | → | xkuru joins (~xkuru@user/xkuru) |
| 19:51:07 | → | Guest9348 joins (~mike@user/feetwind) |
| 19:51:09 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Remote host closed the connection) |
| 19:51:12 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:51:17 | × | falafel quits (~falafel@2603-8000-d800-688c-90d6-5589-2ed3-af73.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 19:51:59 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 19:52:35 | → | img joins (~img@user/img) |
| 19:55:36 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 19:55:37 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 19:56:07 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 268 seconds) |
| 19:56:49 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 19:57:32 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 19:58:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:58:15 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection) |
| 20:00:03 | × | DNH quits (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 20:01:40 | → | jkaye joins (~jkaye@2601:281:8300:7530:76ff:6d0a:27ec:c880) |
| 20:03:18 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Remote host closed the connection) |
| 20:03:23 | × | coot quits (~coot@2a02:a310:e03f:8500:7248:52ac:817b:7fb4) (Quit: coot) |
| 20:04:57 | × | juhp quits (~juhp@128.106.188.82) (Ping timeout: 240 seconds) |
| 20:07:42 | → | juhp joins (~juhp@128.106.188.82) |
| 20:08:20 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 20:08:21 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 20:09:07 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 20:13:17 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 20:13:39 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 20:17:15 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:29:15 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:29:15 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 20:29:15 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:31:09 | × | _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer) |
| 20:35:00 | × | slack1256 quits (~slack1256@191.126.99.78) (Ping timeout: 256 seconds) |
| 20:36:45 | → | _xor joins (~xor@dsl-50-5-233-169.fuse.net) |
| 20:38:03 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 20:39:28 | × | _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer) |
| 20:40:11 | → | zincy joins (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) |
| 20:40:35 | → | Pickchea joins (~private@user/pickchea) |
| 20:43:33 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 20:44:33 | × | mc47 quits (~mc47@xmonad/TheMC47) (Quit: Leaving) |
| 20:44:56 | → | _xor joins (~xor@dsl-50-5-233-169.fuse.net) |
| 20:47:47 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 20:48:03 | → | lavaman joins (~lavaman@98.38.249.169) |
| 20:49:27 | × | zincy quits (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection) |
| 20:49:49 | <jijimofo> | argh, stack is so confusing. added my dependencies to package.yaml but says stack configuration has no version. suggested i add the dependencies to extra-deps. i did. now it's saying it can't find modules. i |
| 20:50:04 | <jijimofo> | 'm so perplexed. i don't understand what it wants from me |
| 20:51:29 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 20:51:44 | <geekosaur> | did you specify a resolver in stack.yaml? |
| 20:52:31 | → | Guest70 joins (~Guest70@75.76.54.207) |
| 20:52:35 | <geekosaur> | I'm no stack expert but I know stack is all about the resolver and you'll get pretty much nowhere without one |
| 20:53:58 | <jijimofo> | there's one specified for a site called githubusercontent. i'll try a different one, see if its helps. also going to research what the stack configuration is |
| 20:54:18 | × | Guest70 quits (~Guest70@75.76.54.207) (Client Quit) |
| 20:54:23 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 20:54:56 | → | pfurla joins (~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) |
| 20:54:58 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:55:07 | → | jonathanx joins (~jonathan@c-5eea3547-74736162.cust.telenor.se) |
| 20:55:35 | <tomsmeding> | jijimofo: stack.yaml should have something like "resolver: lts-18.18" |
| 20:56:34 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 20:56:35 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 20:58:10 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 20:58:11 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 20:59:12 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: closed) |
| 20:59:19 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 20:59:59 | → | acidjnk joins (~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de) |
| 21:00:00 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 21:00:00 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 21:00:14 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:00:28 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:00:35 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:00:52 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:00:59 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:01:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:01:21 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:01:36 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:01:44 | <jkaye> | Did you generate your stack configuration using one of their tools or are you trying to write it by hand for some reason? Did you also read about what stack is and how it works? |
| 21:01:44 | × | lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
| 21:01:58 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:02:06 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:02:21 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:02:29 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:02:43 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:02:51 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 21:02:59 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 21:03:00 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 21:03:42 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 21:03:54 | × | jonathanx quits (~jonathan@c-5eea3547-74736162.cust.telenor.se) (Ping timeout: 256 seconds) |
| 21:03:57 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 21:04:11 | → | falafel joins (~falafel@2603-8000-d800-688c-f998-9914-c722-4c43.res6.spectrum.com) |
| 21:07:10 | × | jijimofo quits (~cmo@S010610561191f5d6.lb.shawcable.net) (Remote host closed the connection) |
| 21:07:47 | → | joe_colben joins (~joe____co@185.190.112.211) |
| 21:07:57 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds) |
| 21:08:17 | × | falafel quits (~falafel@2603-8000-d800-688c-f998-9914-c722-4c43.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 21:09:07 | ← | joe_colben parts (~joe____co@185.190.112.211) () |
| 21:10:32 | → | zincy joins (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) |
| 21:11:49 | × | zincy quits (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection) |
| 21:12:57 | → | notzmv joins (~zmv@user/notzmv) |
| 21:13:43 | → | dsp joins (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) |
| 21:14:01 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:17:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:19:06 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 21:20:47 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:20:47 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 21:20:47 | → | wroathe joins (~wroathe@user/wroathe) |
| 21:21:13 | × | kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Quit: leaving) |
| 21:21:32 | → | kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
| 21:25:26 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 21:28:33 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection) |
| 21:31:34 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 21:33:15 | → | cjb joins (~cjb@user/cjb) |
| 21:34:45 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
| 21:35:31 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:35:37 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 21:35:37 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 21:35:37 | finn_elija | is now known as FinnElija |
| 21:41:21 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 21:41:23 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 21:49:54 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 21:51:17 | × | polezaivsani quits (~polezaivs@orangeshoelaces.net) (Ping timeout: 240 seconds) |
| 21:51:18 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 21:51:23 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 21:51:50 | → | deadmarshal joins (~deadmarsh@95.38.116.51) |
| 21:52:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 21:53:50 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:55:50 | → | superstar64 joins (~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) |
| 21:55:57 | × | deadmarshal quits (~deadmarsh@95.38.116.51) (Ping timeout: 240 seconds) |
| 21:56:05 | × | JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Quit: No Ping reply in 180 seconds.) |
| 21:57:27 | → | JimL joins (~quassel@89-162-2-132.fiber.signal.no) |
| 22:01:57 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 22:03:52 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:11:11 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 245 seconds) |
| 22:12:15 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 22:12:33 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 22:15:25 | × | python476 quits (~user@88.160.31.174) (Ping timeout: 240 seconds) |
| 22:16:53 | × | ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
| 22:16:57 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds) |
| 22:19:12 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 22:22:40 | × | Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds) |
| 22:22:47 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 22:23:37 | <zero> | i'm trying to write a simple bfs but i'm getting duplicate levels. can anyne understand why? https://paste.jrvieira.com/1639952533869 |
| 22:26:15 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: Leaving) |
| 22:26:34 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:26:35 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:26:42 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:26:43 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:28:17 | <EvanR> | what is Tree, what is Queue |
| 22:28:57 | <zero> | tree is `data Tree a = Leaf a | Node a (Tree a) (Tree a)` |
| 22:29:45 | <zero> | Queue is https://paste.jrvieira.com/1639952979883 |
| 22:30:37 | × | darchitect quits (~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c) (Ping timeout: 240 seconds) |
| 22:31:15 | <EvanR> | .oO(dequeue :: Queue a -> Maybe (a,Queue a)) |
| 22:31:54 | × | max22- quits (~maxime@2a01cb08833598001a2c7d9873db9006.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
| 22:32:24 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:32:24 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:33:18 | → | earendel joins (uid498179@user/earendel) |
| 22:33:51 | <zero> | EvanR: yeah that makes sense! |
| 22:34:25 | → | taterbase joins (~user@2603-7081-6902-9100-0000-0000-0000-0006.res6.spectrum.com) |
| 22:34:53 | → | coot joins (~coot@89-64-85-93.dynamic.chello.pl) |
| 22:35:17 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:35:18 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:36:17 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:36:17 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:39:58 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:39:59 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:40:23 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:40:23 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:42:19 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 22:42:57 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:42:58 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:43:18 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:43:18 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:44:09 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:44:09 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:44:47 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 22:44:49 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 22:44:55 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:45:07 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:45:07 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:47:30 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:47:30 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:47:31 | → | zincy joins (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) |
| 22:47:33 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 22:48:00 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:48:02 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:49:21 | → | Guest|37 joins (~Guest|37@pool-108-16-143-231.phlapa.fios.verizon.net) |
| 22:49:56 | → | kranius_ joins (~kranius@222.186.245.213.rev.sfr.net) |
| 22:50:09 | × | Guest|37 quits (~Guest|37@pool-108-16-143-231.phlapa.fios.verizon.net) (Client Quit) |
| 22:50:39 | × | zincy quits (~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection) |
| 22:51:17 | × | zer0bitz quits (~zer0bitz@dsl-hkibng32-54f844-160.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 22:53:30 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:53:30 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:53:50 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:53:51 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:54:45 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 22:54:52 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:54:52 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:55:00 | × | jumper149 quits (~jumper149@static.6.71.203.116.clients.your-server.de) (Quit: WeeChat 3.3) |
| 22:55:22 | × | cosimone quits (~user@93-44-185-127.ip98.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1)) |
| 22:55:44 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 22:55:44 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 22:56:38 | × | Guest3076 quits (~Guest30@66.115.252.46) (Quit: Client closed) |
| 22:57:28 | <zero> | maybe this is more readable https://paste.jrvieira.com/1639954642001 |
| 22:57:58 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 22:59:03 | <Inst> | sigh, this is nuts |
| 22:59:13 | <Inst> | what's wrong with understanding >>= as join.fmap? |
| 23:00:00 | <dibblego> | it isn't? |
| 23:00:04 | <dibblego> | @type join . map |
| 23:00:06 | <lambdabot> | error: |
| 23:00:06 | <lambdabot> | • Couldn't match type ‘(->) [a]’ with ‘[]’ |
| 23:00:06 | <lambdabot> | Expected type: (a -> a1) -> [[a1]] |
| 23:00:12 | <dibblego> | @type (join .) . fmap |
| 23:00:14 | <lambdabot> | Monad m => (a1 -> m a2) -> m a1 -> m a2 |
| 23:00:37 | → | lavaman joins (~lavaman@98.38.249.169) |
| 23:00:44 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 23:02:08 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:02:43 | → | khumba joins (~khumba@user/khumba) |
| 23:03:24 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 23:04:57 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds) |
| 23:04:57 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 23:05:34 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) |
| 23:06:50 | <Inst> | i'm sort of going nuts |
| 23:07:00 | <Inst> | basically, pure etc isn't behaving the way it should |
| 23:07:07 | <Inst> | @type pure Just 3 |
| 23:07:08 | <lambdabot> | a -> Maybe a |
| 23:07:16 | <geekosaur> | you need parentheses |
| 23:07:20 | <Inst> | @type pure (Just 3) |
| 23:07:21 | <lambdabot> | (Applicative f, Num a) => f (Maybe a) |
| 23:07:40 | <Inst> | @pure (Just 3) |
| 23:07:40 | <lambdabot> | Maybe you meant: url part more |
| 23:08:21 | <geekosaur> | what exactly are you trying to do? |
| 23:08:31 | <superstar64> | Inst, functions are monads too. Where `pure = const` |
| 23:08:59 | <Inst> | basically, the way I understand it is that pure is the inverse of join |
| 23:09:03 | <Inst> | but it's behaving weirdly |
| 23:09:13 | <geekosaur> | mm, I wouldn't say that |
| 23:09:37 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds) |
| 23:09:56 | <Inst> | maybe i don't get it |
| 23:09:57 | <EvanR> | :t let (.:) = (.) . (.) in join .: fmap |
| 23:09:58 | <lambdabot> | Monad m => (a1 -> m a2) -> m a1 -> m a2 |
| 23:10:01 | <Inst> | pure [] = [] |
| 23:10:22 | <superstar64> | It's not being weird. It's just when you do `(pure a) x`. It puts `a` in the function monad, which makes it then ignore `x`. |
| 23:10:30 | <dibblego> | pure is identity for join |
| 23:10:31 | <superstar64> | It's an issue of haskell being to generic. |
| 23:10:34 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:10:34 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:10:53 | <geekosaur> | :t pure [] |
| 23:10:54 | <lambdabot> | Applicative f => f [a] |
| 23:11:06 | <Inst> | so how do I get pure [] to yield [[]]? |
| 23:11:25 | <geekosaur> | do it in the [] monad/applicative |
| 23:11:38 | <geekosaur> | % :t pure [] @[] |
| 23:11:39 | <yahb> | geekosaur: ; <interactive>:1:1: error:; * Cannot apply expression of type `f0 [a0]'; to a visible type argument `[]'; * In the expression: pure [] @[] |
| 23:11:46 | <superstar64> | Inst, `pure [] :: [[Int]]` |
| 23:11:50 | <zero> | > pure [] :: [[]] |
| 23:11:51 | <lambdabot> | error: |
| 23:11:51 | <lambdabot> | • Expecting one more argument to ‘[]’ |
| 23:11:51 | <lambdabot> | Expected a type, but ‘[]’ has kind ‘* -> *’ |
| 23:11:55 | <geekosaur> | :t (pure @[]) [] |
| 23:11:56 | <lambdabot> | error: |
| 23:11:56 | <lambdabot> | Pattern syntax in expression context: pure@[] |
| 23:11:56 | <lambdabot> | Did you mean to enable TypeApplications? |
| 23:12:01 | <Inst> | !!! >:( |
| 23:12:04 | <zero> | > pure [] :: [[Int]] |
| 23:12:04 | <geekosaur> | wrong bot. not my night |
| 23:12:05 | <lambdabot> | [[]] |
| 23:12:12 | <EvanR> | you can force it with artificial signatures and type applications but realistically it will just work, because of the context |
| 23:12:13 | <geekosaur> | % :t (pure @[]) [] |
| 23:12:13 | <yahb> | geekosaur: [[a]] |
| 23:12:42 | <Inst> | i already have control monad imported |
| 23:13:04 | <EvanR> | write top level type signatures for your code that uses pure |
| 23:13:39 | <EvanR> | if you don't, your code may end up working for any Applicative not just [] |
| 23:13:43 | <zero> | :msg lambdabot > pure () |
| 23:13:47 | <EvanR> | horrible I know! |
| 23:14:57 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:14:58 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:16:09 | <Inst> | i'm going to sleep, thanks for trying |
| 23:17:08 | <EvanR> | type inference picks the most general type that would work, even if that may confuse you |
| 23:17:19 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:17:20 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:17:29 | × | coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
| 23:17:32 | × | kranius_ quits (~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 240 seconds) |
| 23:18:27 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:18:28 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:19:45 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:19:46 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:20:08 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:20:10 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:21:06 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection) |
| 23:21:23 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:21:24 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:22:37 | × | dsp quits (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Ping timeout: 240 seconds) |
| 23:24:17 | × | Tuplanolla quits (~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:25:25 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:25:26 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:26:00 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:26:02 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:26:06 | × | TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection) |
| 23:26:26 | → | deech joins (~user@024-217-244-075.res.spectrum.com) |
| 23:27:00 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: closed) |
| 23:27:07 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:28:57 | → | TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
| 23:30:37 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:30:38 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:31:02 | <d34df00d> | Why can't I write something like `(Applicative f, forall a. (WrapperType f a ~ f a)) => ...`, where WrapperType is a closed type family? |
| 23:31:14 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 23:31:45 | <d34df00d> | I'm getting `Illegal type synonym family application ‘WrapperType f’ in instance: WrapperType f a ~ f a` |
| 23:32:26 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:33:29 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: closed) |
| 23:33:39 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:36:32 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 23:37:35 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 23:38:07 | → | DNH joins (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) |
| 23:38:10 | × | DNH quits (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Client Quit) |
| 23:39:14 | → | DNH joins (~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) |
| 23:41:15 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 23:41:32 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds) |
| 23:42:48 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection) |
| 23:42:49 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:42:55 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 23:43:17 | ← | qrpnxz parts (~qrpnxz@user/qrpnxz) (Disconnected: closed) |
| 23:43:34 | → | qrpnxz joins (~qrpnxz@user/qrpnxz) |
| 23:43:42 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 23:47:02 | × | Jing_ quits (~hedgehog@2604:a840:3::103b) (Remote host closed the connection) |
| 23:47:41 | → | Jing joins (~hedgehog@2604:a840:3::103b) |
| 23:47:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:51:38 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 23:54:41 | → | sprout joins (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) |
| 23:55:36 | × | acidjnk quits (~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 23:59:02 | → | pavonia joins (~user@user/siracusa) |
| 23:59:06 | × | sprout quits (~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds) |
| 23:59:12 | → | Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com) |
All times are in UTC on 2021-12-19.