2021-08-02 00:02:13 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2021-08-02 00:05:11 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-02 00:05:18 +0200 | dajoer | (~david@user/gvx) |
2021-08-02 00:05:31 +0200 | peterhil_ | (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
2021-08-02 00:08:27 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-02 00:10:07 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 00:13:30 +0200 | vysn | (~vysn@user/vysn) (Remote host closed the connection) |
2021-08-02 00:13:30 +0200 | ikex1 | (~ash@user/ikex) |
2021-08-02 00:14:42 +0200 | ikex | (~ash@user/ikex) (Ping timeout: 240 seconds) |
2021-08-02 00:14:42 +0200 | ikex1 | ikex |
2021-08-02 00:15:00 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
2021-08-02 00:16:20 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-02 00:16:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 00:17:26 +0200 | peterhil_ | (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Quit: Must not waste too much time here...) |
2021-08-02 00:19:59 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection) |
2021-08-02 00:21:20 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-02 00:21:41 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-02 00:21:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2021-08-02 00:23:06 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-08-02 00:23:22 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-02 00:23:42 +0200 | haritz | (~hrtz@user/haritz) (Ping timeout: 250 seconds) |
2021-08-02 00:26:40 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-02 00:28:24 +0200 | Null_A | (~null_a@2601:645:8700:2290:496c:4f7:da8b:7ffb) (Remote host closed the connection) |
2021-08-02 00:28:26 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-02 00:29:46 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-02 00:30:01 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
2021-08-02 00:32:09 +0200 | Null_A | (~null_a@2601:645:8700:2290:65e7:3752:1a41:1950) |
2021-08-02 00:34:24 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
2021-08-02 00:37:05 +0200 | yoctocell | (~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 258 seconds) |
2021-08-02 00:37:25 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-02 00:37:28 +0200 | Ariakenom | (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
2021-08-02 00:41:32 +0200 | jmorris | (uid433911@id-433911.stonehaven.irccloud.com) |
2021-08-02 00:42:05 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) |
2021-08-02 00:42:05 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host) |
2021-08-02 00:42:05 +0200 | haritz | (~hrtz@user/haritz) |
2021-08-02 00:46:26 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-08-02 00:47:54 +0200 | roboguy_ | (~roboguy_@2605:a601:afe7:9f00:3d34:bbf:fe54:17bf) () |
2021-08-02 00:48:43 +0200 | cjb | (~cjb@user/cjb) |
2021-08-02 01:06:23 +0200 | brandon | (~bb_haskel@167.224.250.141) |
2021-08-02 01:09:24 +0200 | sheepduck | (~sheepduck@user/sheepduck) |
2021-08-02 01:10:28 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-02 01:10:50 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-02 01:15:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 01:19:06 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 01:21:30 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9504b8b6f59e7f78d4aa.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2021-08-02 01:22:57 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
2021-08-02 01:26:32 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 265 seconds) |
2021-08-02 01:27:32 +0200 | awasey | (~awasey@31.111.44.198) |
2021-08-02 01:28:37 +0200 | Ariakenom | (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer) |
2021-08-02 01:32:23 +0200 | Null_A | (~null_a@2601:645:8700:2290:65e7:3752:1a41:1950) (Remote host closed the connection) |
2021-08-02 01:33:10 +0200 | awasey | (~awasey@31.111.44.198) (Ping timeout: 246 seconds) |
2021-08-02 01:35:25 +0200 | Null_A | (~null_a@2601:645:8700:2290:9c43:41fd:2bc5:221e) |
2021-08-02 01:40:33 +0200 | <Axman6> | lechner: keep in mind Rel8 is relatively new and probably missing lots of features you'd want (I really wanted to to have great support for workking with JSON/JSONB data but so far not so much). The commbination of Opaleye's expresivness and Hasql's performance is very cool though |
2021-08-02 01:46:48 +0200 | brandon | (~bb_haskel@167.224.250.141) (Read error: Connection reset by peer) |
2021-08-02 01:50:38 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 01:52:14 +0200 | brandon | (~bb_haskel@167.224.250.141) |
2021-08-02 01:52:31 +0200 | <lechner> | Axman6: yeah, thanks! it's also easier to cut and paste SQL from the Perl programs. the Rel8 approach just looks cool. my programs work already. i came to haskell for cool! |
2021-08-02 01:53:54 +0200 | <lechner> | (I may eventually need help with closing sockets in the ZeroMQ library though, which works less well.) |
2021-08-02 01:56:54 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 01:57:32 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds) |
2021-08-02 01:58:18 +0200 | xff0x | (~xff0x@2001:1a81:53aa:2400:8b2:7ea:32a0:1ac6) (Ping timeout: 240 seconds) |
2021-08-02 01:59:18 +0200 | xff0x | (~xff0x@2001:1a81:53aa:2400:d3c1:8423:7882:6d65) |
2021-08-02 02:16:19 +0200 | brandon | (~bb_haskel@167.224.250.141) (Read error: Connection reset by peer) |
2021-08-02 02:16:20 +0200 | steven1 | (~steven@172.92.136.203) (Ping timeout: 256 seconds) |
2021-08-02 02:22:38 +0200 | <eggplantade> | Is there a name for the programming pattern where a function or data type is polymorphic just to avoid a cyclic module dependency, and not because it's intended to be instantiated with other types? |
2021-08-02 02:24:28 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-02 02:28:20 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-02 02:31:57 +0200 | <jay-invariant> | eggplantade: I'm not sure, but that sounds a bit like "dependency injection" from OOP |
2021-08-02 02:36:10 +0200 | <dsal> | I don't artificially constrain things unless it adds clarity. I wouldn't name that a design pattern, though. |
2021-08-02 02:45:09 +0200 | <sshine> | eggplantade, generalisation? |
2021-08-02 02:47:56 +0200 | <drakonis> | singleton? |
2021-08-02 02:50:39 +0200 | hmmmas | (~fidnc@183.217.200.220) |
2021-08-02 02:51:08 +0200 | hmmmas | (~fidnc@183.217.200.220) (Client Quit) |
2021-08-02 02:54:59 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-02 02:59:35 +0200 | Null_A | (~null_a@2601:645:8700:2290:9c43:41fd:2bc5:221e) (Remote host closed the connection) |
2021-08-02 03:00:14 +0200 | <eggplantade> | Adding a type parameter is generalization. This pattern isn't the usual reason for generalizing a definition though. |
2021-08-02 03:09:10 +0200 | xff0x | (~xff0x@2001:1a81:53aa:2400:d3c1:8423:7882:6d65) (Ping timeout: 272 seconds) |
2021-08-02 03:10:30 +0200 | xff0x | (~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704) |
2021-08-02 03:12:16 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
2021-08-02 03:12:47 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-08-02 03:13:26 +0200 | Null_A | (~null_a@2601:645:8700:2290:694b:df7:8cc3:57c0) |
2021-08-02 03:13:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-08-02 03:17:13 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-02 03:19:39 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Quit: Leaving) |
2021-08-02 03:21:25 +0200 | fawful | (~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2) |
2021-08-02 03:34:52 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-08-02 03:36:06 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-08-02 03:36:35 +0200 | elias__ | (~elias@154.27.37.188.rev.vodafone.pt) |
2021-08-02 03:38:29 +0200 | elias_ | (~elias@154.27.37.188.rev.vodafone.pt) (Ping timeout: 252 seconds) |
2021-08-02 03:46:17 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-08-02 03:46:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 03:48:38 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-02 03:53:46 +0200 | MQ-17J | (~MQ-17J@8.6.144.192) |
2021-08-02 03:55:03 +0200 | alx741 | (~alx741@186.178.108.145) (Quit: alx741) |
2021-08-02 03:55:29 +0200 | euouae | (~euouae@user/euouae) |
2021-08-02 03:57:59 +0200 | zebrag | (~chris@user/zebrag) |
2021-08-02 04:02:36 +0200 | <euouae> | What is a good topic to study in Haskell as a beginner? |
2021-08-02 04:03:42 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection) |
2021-08-02 04:04:27 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
2021-08-02 04:04:32 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-08-02 04:04:54 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds) |
2021-08-02 04:06:57 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-02 04:09:17 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-02 04:11:10 +0200 | <sm> | euouae: installing it |
2021-08-02 04:12:18 +0200 | <sm> | or, better: the tools |
2021-08-02 04:12:36 +0200 | <euouae> | OK so cabal, haddock? |
2021-08-02 04:12:41 +0200 | <euouae> | maybe ghc? |
2021-08-02 04:12:47 +0200 | <sm> | both of these are a bit of a topic into themselves unfortunately |
2021-08-02 04:12:50 +0200 | <sm> | all the tools |
2021-08-02 04:13:08 +0200 | <euouae> | Examples of some others? |
2021-08-02 04:13:14 +0200 | <sm> | it isn't that much to learn and it will save you a lot of pain |
2021-08-02 04:13:25 +0200 | <sm> | stack |
2021-08-02 04:13:41 +0200 | <euouae> | Ok and that concludes it, right? |
2021-08-02 04:13:45 +0200 | <sm> | ghc-pkg |
2021-08-02 04:13:55 +0200 | phma | (phma@2001:5b0:212a:da48:ca78:cb9c:83eb:4c64) (Read error: Connection reset by peer) |
2021-08-02 04:14:01 +0200 | <sm> | well of course there's more but those are a good start |
2021-08-02 04:14:27 +0200 | <euouae> | Hmm, alright. I'll heed your advice |
2021-08-02 04:15:48 +0200 | <sm> | at least skim their user manuals, and understand the concepts of package dbs and the various places haskell libraries and executables can be |
2021-08-02 04:16:40 +0200 | <sm> | also, I like this beginner book: |
2021-08-02 04:16:40 +0200 | <sm> | @where HTAC |
2021-08-02 04:16:40 +0200 | <lambdabot> | "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook> |
2021-08-02 04:18:04 +0200 | arahael1 | (~arahael@124-150-74-227.tpgi.com.au) |
2021-08-02 04:18:19 +0200 | <euouae> | That's a cool publisher |
2021-08-02 04:18:46 +0200 | Arahael | (~arahael@14-200-228-14.tpgi.com.au) (Ping timeout: 272 seconds) |
2021-08-02 04:19:50 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection) |
2021-08-02 04:20:35 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-08-02 04:20:35 +0200 | FinnElija | Guest7086 |
2021-08-02 04:20:35 +0200 | Guest7086 | (~finn_elij@user/finn-elija/x-0085643) (Killed (sodium.libera.chat (Nickname regained by services))) |
2021-08-02 04:20:35 +0200 | finn_elija | FinnElija |
2021-08-02 04:21:01 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-08-02 04:28:20 +0200 | td_ | (~td@94.134.91.166) (Ping timeout: 272 seconds) |
2021-08-02 04:29:33 +0200 | td_ | (~td@muedsl-82-207-238-030.citykom.de) |
2021-08-02 04:31:02 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-02 04:31:06 +0200 | phma | (phma@2001:0:c38c:c38c:cc7:e519:bcd3:2ebd) |
2021-08-02 04:34:09 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-02 04:35:56 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2021-08-02 04:38:43 +0200 | phma_ | (phma@2001:5b0:211b:e2d8:c072:cd43:475:d917) |
2021-08-02 04:39:06 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
2021-08-02 04:39:08 +0200 | phma | (phma@2001:0:c38c:c38c:cc7:e519:bcd3:2ebd) (Ping timeout: 256 seconds) |
2021-08-02 04:45:42 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-02 04:53:31 +0200 | guest86 | (~guest86@2001:8004:1420:14ac:b1cc:c092:84b0:86f6) |
2021-08-02 04:54:18 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds) |
2021-08-02 04:54:53 +0200 | <guest86> | Hello, I am getting back into Haskell after being away from it for a few years. I am trying to interact with a process using System.Process.Typed. The process at some point will print: "INPUT?: " to stdout and I want to be able to enter something via STDIN when that happens. |
2021-08-02 04:55:28 +0200 | <guest86> | https://paste.tomsmeding.com/iFHG9bjw <- I am trying to figure out how to read from stdin until this happens. Is there an easier way. Also, what do I need to do to whileM to have it work in IO? |
2021-08-02 04:56:21 +0200 | hmmmas | (~fidnc@183.217.200.220) |
2021-08-02 04:59:16 +0200 | <monochrom> | Uh, you begin with "x <- hGetLine (getStdout p)", and henceforth you never even take a look at what's in x? |
2021-08-02 04:59:44 +0200 | <monochrom> | I guess this is why everyone else was saying "the unsued-var warning is very informative". |
2021-08-02 04:59:56 +0200 | <guest86> | monochrom in this case I know I can ignore the first line, its a toy example |
2021-08-02 05:01:06 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-08-02 05:01:49 +0200 | <guest86> | The process I am talking toL |
2021-08-02 05:01:51 +0200 | <guest86> | #!/usr/bin/env python3 |
2021-08-02 05:01:52 +0200 | <guest86> | print("Hello there") |
2021-08-02 05:01:52 +0200 | <guest86> | print("INPUT?:", end=' ') |
2021-08-02 05:01:53 +0200 | <guest86> | val = input() |
2021-08-02 05:01:53 +0200 | <guest86> | print(f"You entered:{val}") |
2021-08-02 05:02:12 +0200 | <monochrom> | OK so what's not working? |
2021-08-02 05:02:58 +0200 | <monochrom> | (That is a guiding question.) |
2021-08-02 05:03:09 +0200 | jess | (~jess@libera/staff/jess) |
2021-08-02 05:04:18 +0200 | <monochrom> | (And training people to take the effort to describe observations.) |
2021-08-02 05:07:30 +0200 | <guest86> | Well, the first issue is that |
2021-08-02 05:07:31 +0200 | <guest86> | whileM (not (hIsEOF (getStdout p))) $ do |
2021-08-02 05:08:13 +0200 | <guest86> | because hIsEOF (getStdout p) is IO Bool, and whileM wants a Bool |
2021-08-02 05:09:20 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-02 05:09:30 +0200 | MQ-17J | (~MQ-17J@8.6.144.192) (Ping timeout: 272 seconds) |
2021-08-02 05:09:48 +0200 | <monochrom> | Uh which package does Control.Monad.Loop come from? |
2021-08-02 05:10:09 +0200 | <guest86> | https://hackage.haskell.org/package/monad-loops-0.4.3/docs/Control-Monad-Loops.html |
2021-08-02 05:10:28 +0200 | <monochrom> | Then whileM totally wants IO Bool alright. |
2021-08-02 05:10:35 +0200 | <dsal> | `untilJust` is a pretty cool name. |
2021-08-02 05:10:40 +0200 | <monochrom> | It is "not" that doesn't like IO Bool. |
2021-08-02 05:11:21 +0200 | <guest86> | oh, wow, yeah looking at the compiler output you're totally right |
2021-08-02 05:11:58 +0200 | <monochrom> | You can use "fmap" to bridge the gap. |
2021-08-02 05:12:49 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-02 05:13:56 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds) |
2021-08-02 05:14:12 +0200 | <monochrom> | You will run into the second problem after you fix that. |
2021-08-02 05:14:20 +0200 | <guest86> | thanks |
2021-08-02 05:14:34 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2021-08-02 05:15:38 +0200 | ham | (~ham4@user/ham) (Ping timeout: 265 seconds) |
2021-08-02 05:15:59 +0200 | dsal | watches monochrom play Haskell chess |
2021-08-02 05:16:05 +0200 | ham2 | (~ham4@d8D8627D5.access.telenet.be) |
2021-08-02 05:16:10 +0200 | <dsal> | type checks in three moves |
2021-08-02 05:16:24 +0200 | <monochrom> | haha |
2021-08-02 05:16:43 +0200 | <monochrom> | Well the second problem is mistaking EOF with "no data for now". |
2021-08-02 05:17:11 +0200 | <monochrom> | If the child process doesn't close its stdout, your side will not see EOF. |
2021-08-02 05:17:32 +0200 | <guest86> | So I suppose I can just get the characters until I see "INPUT?: " |
2021-08-02 05:17:48 +0200 | <monochrom> | And most processes, including this one, doesn't close stdout until termination. |
2021-08-02 05:17:58 +0200 | <monochrom> | Yes. |
2021-08-02 05:18:05 +0200 | <guest86> | I guess the issue I was having was that I was using hGetLine, but in this case there isn't a whole line to be gotten |
2021-08-02 05:18:45 +0200 | <guest86> | is hWaitForInput the way to go? |
2021-08-02 05:19:17 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-02 05:19:50 +0200 | <monochrom> | You will realize that you're making an XY problem when you find out that hGetChar already does the waiting. |
2021-08-02 05:20:31 +0200 | <monochrom> | There is a third problem after you fix that. |
2021-08-02 05:21:42 +0200 | <monochrom> | The third problem can only be fixed in the Python script. Or generally child code. Parent code has absolutely no say over this. None. Zilch. |
2021-08-02 05:23:34 +0200 | <pavonia> | What is the third problem? |
2021-08-02 05:24:09 +0200 | <monochrom> | "I see my stdout is a pipe, not a terminal, so let me switch to block buffering. My buffer is a gazillion bytes." |
2021-08-02 05:24:43 +0200 | <monochrom> | This buffering is highly local and private. Even the kernel doesn't know. |
2021-08-02 05:25:01 +0200 | <guest86> | Ah okay, so I think my approach is wrong. |
2021-08-02 05:25:34 +0200 | <monochrom> | The only solution is rewrite child code to switch back to line buffering. Or add explicit "flush" calls. |
2021-08-02 05:25:36 +0200 | <guest86> | What I would like to do is be able to monitor a python script (that I cannot necessarily modify) and send input to it under certain conditions |
2021-08-02 05:26:12 +0200 | <guest86> | Am I taking the right approach? |
2021-08-02 05:26:33 +0200 | <guest86> | I mean, in general, is there a better approach I should be using? |
2021-08-02 05:26:53 +0200 | <monochrom> | Err actually I just recall a non-intrusive solution. You now have to make some syscalls to allocate a pseudo terminal. Then the child sees a terminal and will behave. |
2021-08-02 05:27:49 +0200 | <monochrom> | But even I haven't learned the relevant syscalls. This gets highly technical and unix-specific. |
2021-08-02 05:28:36 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-08-02 05:29:09 +0200 | <monochrom> | dsal had the correct count. :) |
2021-08-02 05:29:17 +0200 | <euouae> | can't you just pipe the script to a file and read from the file, ignoring eof? |
2021-08-02 05:29:34 +0200 | <monochrom> | Same buffering delay. |
2021-08-02 05:29:52 +0200 | <monochrom> | You will find the file empty for a long, long time. |
2021-08-02 05:29:54 +0200 | <guest86> | The script has a line of input (a confirmation code) that I won't have until runtime |
2021-08-02 05:30:38 +0200 | <euouae> | Right... man tty and go from there |
2021-08-02 05:30:57 +0200 | <euouae> | pty* |
2021-08-02 05:31:00 +0200 | <monochrom> | Except now you have to make unix syscalls but you're in Haskell |
2021-08-02 05:31:32 +0200 | <euouae> | No-one said all of it needs to be done in Haskell :P either write that component in C or use FFI |
2021-08-02 05:31:54 +0200 | <guest86> | Yeah good point. I will explore some options. Maybe in this case I can in fact modify the python script |
2021-08-02 05:32:20 +0200 | <guest86> | Actually, I don't think I can. So, I guess I will have to look into pty |
2021-08-02 05:32:58 +0200 | <monochrom> | Oh the standard library has System.Posix.Terminal.openPseudoTerminal. I guess it's already half the way. |
2021-08-02 05:33:04 +0200 | <euouae> | monochrom: You can just use script -c |
2021-08-02 05:33:11 +0200 | <euouae> | https://linux.die.net/man/1/script |
2021-08-02 05:33:47 +0200 | <monochrom> | That's nice too. |
2021-08-02 05:34:01 +0200 | <euouae> | It's always a good day when you can surprise-answer a question with script(1) lol |
2021-08-02 05:34:15 +0200 | <monochrom> | I prefer tee. |
2021-08-02 05:34:26 +0200 | <guest86> | Thanks for the references! |
2021-08-02 05:34:28 +0200 | <monochrom> | But tee is a different use case. |
2021-08-02 05:36:14 +0200 | <monochrom> | If you use openPseudoTerminal, you will still need to read the pty man page, because generally these System.Posix function docs assumes unix syscall knowledge. |
2021-08-02 05:36:54 +0200 | <monochrom> | Won't explain what's so "master" and "slave" about this, you're supposed to already know from unix experience. |
2021-08-02 05:41:41 +0200 | <guest86> | ah okay thanks, I didn't realise that this part was so involved. Lots of learning to do I suppose |
2021-08-02 05:42:09 +0200 | Teacup | (~teacup@user/teacup) (Quit: Teacup) |
2021-08-02 05:42:09 +0200 | <monochrom> | Perhaps use the "script" program as middle-person for now. |
2021-08-02 05:42:28 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-02 05:42:38 +0200 | Teacup | (~teacup@user/teacup) |
2021-08-02 05:43:56 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds) |
2021-08-02 05:46:18 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-08-02 05:47:27 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 276 seconds) |
2021-08-02 05:47:56 +0200 | cjb | (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
2021-08-02 05:51:08 +0200 | <aegon> | hmm, what does ~ mean in a signature and what does GHC.Exts fromList do :| |
2021-08-02 05:51:30 +0200 | <aegon> | i've been looking at the haddock and it seems like it can convert a list of item a to an item b that is convertable to from a |
2021-08-02 05:51:44 +0200 | <aegon> | but i'm not sure if i'm getting that right and I can't seem to make ghci happy playing with it |
2021-08-02 05:51:46 +0200 | <Axman6> | ~ is type equality, so a ~ Map k v is saying that a is the same as Map k v |
2021-08-02 05:52:47 +0200 | <Axman6> | @src @hoogle fromList |
2021-08-02 05:52:48 +0200 | <lambdabot> | Source not found. Sorry. |
2021-08-02 05:53:17 +0200 | <Axman6> | @src IsList |
2021-08-02 05:53:17 +0200 | <lambdabot> | Source not found. |
2021-08-02 05:53:20 +0200 | <Axman6> | :( |
2021-08-02 05:54:15 +0200 | <Axman6> | anyway, the IsList class is what's used by the OverloadedLists extension, which lets you do things like write [(True, 1),(False,7)] :: Map Bool Int |
2021-08-02 05:55:32 +0200 | <Axman6> | it turns [...] from being syntax sugar for constructing lists, to being syntax sugar for constructing other types which imeplement the IsList class, and [foo,bar] gets translated into froomList [foo,bar], much like how 1 is translated to fromInteger 1 |
2021-08-02 05:57:17 +0200 | <aegon> | Axman6: what does it look like to hook into that machinery? This maches up with how i think it's being used (turning lists into Tensor literals in Hasktorch) but reading through their haddock thats generated locally I can't find any mention of IsList for the Tensor data type |
2021-08-02 05:57:58 +0200 | <Axman6> | maybe try loading up hasktorch in ghci and running :info IsList to find where the instance is coming from |
2021-08-02 05:59:20 +0200 | <aegon> | good idea! |
2021-08-02 06:01:35 +0200 | <Axman6> | where are you seeing the use of ~ btw? |
2021-08-02 06:03:35 +0200 | hendursaga | (~weechat@user/hendursaga) (Remote host closed the connection) |
2021-08-02 06:04:02 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-08-02 06:04:23 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-08-02 06:05:02 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-08-02 06:05:29 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-08-02 06:07:36 +0200 | <sim590> | It's weird, now when I'm compiling a project that used to compile, I'm getting this: <command line>: can't load .so/.DLL for: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libpanel.so (-lpanelw: cannot open shared object file: No such file or directory). |
2021-08-02 06:08:01 +0200 | <sim590> | But `readlink -f /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libpanel.so` does give an existing file `/usr/lib/libpanel.so`. |
2021-08-02 06:09:10 +0200 | <aegon> | Axman6: its in this function. Everything seems to be happening in it. I wish I could get fromList to behave in ghci to poke at it |
2021-08-02 06:09:39 +0200 | <sim590> | `/usr/lib/libpanelw.so` does also exist, so I'm not sure what's wrong. |
2021-08-02 06:09:52 +0200 | Null_A | (~null_a@2601:645:8700:2290:694b:df7:8cc3:57c0) (Read error: Connection reset by peer) |
2021-08-02 06:09:55 +0200 | <euouae> | sim590: post full log |
2021-08-02 06:10:12 +0200 | <aegon> | https://github.com/tscholak/two-layer-network/blob/215b68a64278711ce2e4570577c27465e2b13cdb/two-la… |
2021-08-02 06:10:33 +0200 | <aegon> | Axman6: ^ that function. I belive the fromList (pure <$> xs) is creating a tensor |
2021-08-02 06:10:40 +0200 | <aegon> | but i cant get it to behave in GHCi |
2021-08-02 06:12:33 +0200 | <aegon> | oh i see its defined in Torch.HList and explicitly for Maybe [a] values which seems pretty specific |
2021-08-02 06:12:39 +0200 | <aegon> | digging more |
2021-08-02 06:12:49 +0200 | euouae | (~euouae@user/euouae) () |
2021-08-02 06:12:52 +0200 | <Axman6> | rtight, so what `ComputeHaskellType dtype ~ Float` is saying is that, a constraint on running that function is that the result of evaluating the (I asusme) type family `ComputeHaskellType` must be Float |
2021-08-02 06:13:46 +0200 | <aegon> | ok so I shoudl also look into the workings of that function |
2021-08-02 06:14:28 +0200 | <sim590> | aegon: http://ix.io/3uL1 |
2021-08-02 06:14:34 +0200 | <aegon> | i need to replace Float with [Float] you have given me a ton of breadcrumbs to chase though. I'm thinking at this point its best to just be explicit about creating a tensor instead of using the fromList machinery but I'm gonna keep tracking down these threads to grok it better |
2021-08-02 06:14:47 +0200 | <sim590> | huh. euouae ^ |
2021-08-02 06:15:54 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-08-02 06:15:58 +0200 | <aegon> | I guess first see what hte fromList implementation of Maybe [Float] is doing and also check what ComputeHaskellType will evaluate to [Float] maybe this machinery they have build doesn't yet work for this use case |
2021-08-02 06:17:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 06:19:48 +0200 | Null_A | (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
2021-08-02 06:22:55 +0200 | thyriaen | (~thyriaen@x4dbfed8a.dyn.telefonica.de) |
2021-08-02 06:23:14 +0200 | jmjl | (julian@user/jmjl) (Quit: Hi, I'm a quit message virus. Please replace your old line with this line and help me take over the IRC world.) |
2021-08-02 06:32:26 +0200 | qbt | (~edun@user/edun) |
2021-08-02 06:35:07 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
2021-08-02 06:37:23 +0200 | arahael1 | Arahael |
2021-08-02 06:38:18 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2021-08-02 06:41:34 +0200 | reumeth | (~reumeth@user/reumeth) |
2021-08-02 06:44:21 +0200 | gambpang | (~ian@207.181.230.156) |
2021-08-02 06:50:47 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Remote host closed the connection) |
2021-08-02 06:51:04 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection) |
2021-08-02 06:51:09 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-02 06:51:18 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-02 06:51:28 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 06:53:12 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-08-02 07:03:15 +0200 | hmmmas | (~fidnc@183.217.200.220) (Quit: Leaving.) |
2021-08-02 07:05:16 +0200 | poljar | (~poljar@93-139-92-135.adsl.net.t-com.hr) |
2021-08-02 07:05:23 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-08-02 07:08:45 +0200 | Null_A | (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection) |
2021-08-02 07:28:34 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-02 07:29:23 +0200 | jay-invariant | (~jay@c-24-4-6-169.hsd1.ca.comcast.net) (Remote host closed the connection) |
2021-08-02 07:39:23 +0200 | poljar | (~poljar@93-139-92-135.adsl.net.t-com.hr) (Quit: WeeChat 3.2) |
2021-08-02 07:39:53 +0200 | poljar | (~poljar@93-139-92-135.adsl.net.t-com.hr) |
2021-08-02 07:42:57 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-02 07:47:24 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-08-02 07:52:53 +0200 | awth13 | (~awth13@user/awth13) |
2021-08-02 07:55:51 +0200 | sergio812 | (~sergio812@lfbn-ren-1-403-102.w2-10.abo.wanadoo.fr) |
2021-08-02 07:59:12 +0200 | stevenxl | (uid133530@id-133530.highgate.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-02 08:00:59 +0200 | chris_ | (~chris@81.96.113.213) |
2021-08-02 08:04:48 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 265 seconds) |
2021-08-02 08:06:49 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-08-02 08:11:39 +0200 | michalz | (~michalz@185.246.204.61) |
2021-08-02 08:17:10 +0200 | euouae | (~euouae@user/euouae) |
2021-08-02 08:17:17 +0200 | <euouae> | What is the meaning of ()? E..g IO () ? |
2021-08-02 08:17:29 +0200 | <dminuoso> | euouae: That's the unit type. |
2021-08-02 08:17:39 +0200 | <dminuoso> | It might as well been named Unit, e.g. `IO Unit` |
2021-08-02 08:17:52 +0200 | <dminuoso> | It's sole data constructor is.. confusingly, also named () |
2021-08-02 08:17:57 +0200 | <euouae> | Why is `IO ()` useful |
2021-08-02 08:18:09 +0200 | michalz | (~michalz@185.246.204.61) (Remote host closed the connection) |
2021-08-02 08:18:20 +0200 | <dminuoso> | euouae: `IO ()` is an action that doesn't produce any result (well, it produces the unit result, but that has trivially no information) |
2021-08-02 08:18:32 +0200 | <dminuoso> | It's roughly equivalent to a C function `void f(...)` |
2021-08-02 08:18:33 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-08-02 08:18:50 +0200 | <dminuoso> | % :t putStrLn |
2021-08-02 08:18:51 +0200 | <euouae> | you can throw away the result of an IO action right? |
2021-08-02 08:18:51 +0200 | <yahb> | dminuoso: String -> IO () |
2021-08-02 08:18:57 +0200 | <dminuoso> | Yes. |
2021-08-02 08:19:23 +0200 | <euouae> | So there's always a projection `M a -> M t` |
2021-08-02 08:19:30 +0200 | <euouae> | Sorry, `M a -> M ()` |
2021-08-02 08:19:36 +0200 | <dminuoso> | Correct |
2021-08-02 08:19:40 +0200 | <Maxdamantus> | You can't have an `IO` action that emits no value, so the value `()` is used as a placeholder. |
2021-08-02 08:19:45 +0200 | <dminuoso> | % :t () <$ putStrLn "foo" -- euouae |
2021-08-02 08:19:45 +0200 | <yahb> | dminuoso: IO () |
2021-08-02 08:19:55 +0200 | <dminuoso> | This combinator is also, very confusingly, named `void` in base |
2021-08-02 08:19:58 +0200 | <dminuoso> | % :t void |
2021-08-02 08:19:58 +0200 | <yahb> | dminuoso: Functor f => f a -> f () |
2021-08-02 08:20:02 +0200 | <euouae> | Which means that function taking `M ()` may as well take `M a`, it's just a hint that they do nothing with `a` |
2021-08-02 08:20:08 +0200 | <dminuoso> | euouae: Precisely. |
2021-08-02 08:20:14 +0200 | <dminuoso> | You're spot on. |
2021-08-02 08:20:21 +0200 | <euouae> | However, they can't take `M a`, right? |
2021-08-02 08:20:30 +0200 | <dminuoso> | Also correct. |
2021-08-02 08:20:36 +0200 | <dminuoso> | Which is why `void` exists. |
2021-08-02 08:20:37 +0200 | <euouae> | Alright, thank you for clarifying everything :) |
2021-08-02 08:20:57 +0200 | <dminuoso> | It's for massaging values like IO actions into the right type, for when some other function demands say `IO ()` |
2021-08-02 08:21:10 +0200 | <dminuoso> | But you can also just write `() <$ foo` if you like |
2021-08-02 08:21:51 +0200 | <euouae> | But what does `() <$ putStrLn "Hello"` print |
2021-08-02 08:22:02 +0200 | <dminuoso> | Oh, well to be fair that's a silly thing to do |
2021-08-02 08:22:10 +0200 | <dminuoso> | % :T () <$ getLine |
2021-08-02 08:22:10 +0200 | <yahb> | dminuoso: unknown command ':T'; use :? for help. |
2021-08-02 08:22:12 +0200 | <dminuoso> | % :t () <$ getLine |
2021-08-02 08:22:12 +0200 | <yahb> | dminuoso: IO () |
2021-08-02 08:22:14 +0200 | <dminuoso> | This is a etter example |
2021-08-02 08:22:19 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-08-02 08:22:45 +0200 | <euouae> | I see |
2021-08-02 08:22:47 +0200 | <dminuoso> | euouae: It sitll prints "Hello". The example is poor because putStrLn at the end already produces IO (). |
2021-08-02 08:23:04 +0200 | <dminuoso> | But with getLine, you still get the effect of consuing a string on stdin, but it throws away the result |
2021-08-02 08:23:20 +0200 | <euouae> | Right the type information is different than the side ffects |
2021-08-02 08:23:31 +0200 | <dminuoso> | Right. |
2021-08-02 08:23:32 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2021-08-02 08:23:33 +0200 | <euouae> | in some sense at least. of course IO is always there |
2021-08-02 08:23:34 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-08-02 08:25:43 +0200 | <dminuoso> | euouae: Right, this is the beauty of this parametrized IO type. We separate the side-effect (IO) from the result of carrying out that side-effect. |
2021-08-02 08:26:04 +0200 | <dminuoso> | Now, of course we cant know what exact side-effects actually happen inside IO. And this is where the idea of effect systems begins. |
2021-08-02 08:26:13 +0200 | <dibblego> | IO is unrelated to side-effects |
2021-08-02 08:27:06 +0200 | gambpang | (~ian@207.181.230.156) (Ping timeout: 272 seconds) |
2021-08-02 08:27:22 +0200 | gambpang | (~ian@207.181.230.156) |
2021-08-02 08:28:31 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-02 08:34:13 +0200 | guest86 | (~guest86@2001:8004:1420:14ac:b1cc:c092:84b0:86f6) (Ping timeout: 246 seconds) |
2021-08-02 08:36:15 +0200 | <aegon> | Axman6: if your still around i found it out. This is the wierdest syntax yet fromJust (fromList x) is the way to get it from a list that has been built up by a function |
2021-08-02 08:36:33 +0200 | <aegon> | is the fromJust part of IsList stuff or is that something specific that the Hasktorch implementation did :? |
2021-08-02 08:38:10 +0200 | <Axman6> | :t fromJust |
2021-08-02 08:38:11 +0200 | <lambdabot> | Maybe a -> a |
2021-08-02 08:38:38 +0200 | <euouae> | dminuoso: Is this related? http://okmij.org/ftp/Haskell/extensible/exteff.pdf |
2021-08-02 08:38:41 +0200 | <Axman6> | I guess there's a IsList instnce for Maybe? that code looks quite confusing though |
2021-08-02 08:39:41 +0200 | <dminuoso> | euouae: Yes, this is one example. |
2021-08-02 08:42:05 +0200 | <euouae> | dminuoso: Ok I don't see it myself, but I trust that it's being researched :P I'll probably be learning the basics of cabal and the rest of the tools for now :) |
2021-08-02 08:42:12 +0200 | phma_ | (phma@2001:5b0:211b:e2d8:c072:cd43:475:d917) (Read error: Connection reset by peer) |
2021-08-02 08:42:54 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-02 08:43:08 +0200 | <dminuoso> | euouae: Yeah. Much in the effect systems is ongoing research and experimentation, and in Haskell in particular it's mostly limited to custom effects (in the sense of how do we compose various monadic effects together in an extensible and declarative way). |
2021-08-02 08:43:08 +0200 | phma_ | (phma@2001:5b0:210d:4948:1e1a:34b5:d23e:1981) |
2021-08-02 08:47:47 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 08:55:08 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-08-02 08:57:07 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9504b8b6f59e7f78d4aa.dip0.t-ipconnect.de) |
2021-08-02 09:01:27 +0200 | <sergio812> | I’m having trouble with QuickCheck’s “collect” when testing IO code... |
2021-08-02 09:01:37 +0200 | <sergio812> | I can easily modify a basic property like “prop_pure list = myImpl list === refImpl list” to add case distribution like so “prop_pure list = collect (length list) $ myImpl list === refImpl list”, and all works fine. |
2021-08-02 09:02:03 +0200 | <sergio812> | Now, how should I do to add case distribution to IO code like “prop_io list = monadicIO $ do { res <- run $ myImplIO list; assert $ res == refImpl list }”? |
2021-08-02 09:02:19 +0200 | <sergio812> | I tried tucking in “collect (length l) $” before “run” or “assert” and GHC complained about expecting type “PropertyM IO Int” or “PropertyM IO a0”, while actual type is “Property”. |
2021-08-02 09:02:20 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:4a3f:fe34:92c5:875c) |
2021-08-02 09:02:33 +0200 | <sergio812> | I tried tucking in “collect (length l) $” after “run” or “assert” and GHC complained about expecting type “IO Int” or “Bool”, while actual type is “Property”. |
2021-08-02 09:02:42 +0200 | <sergio812> | Can I use “collect” for IO code? If so, how? If not, how can I add case distribution? |
2021-08-02 09:04:56 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-08-02 09:10:29 +0200 | fendor | (~fendor@77.119.222.253.wireless.dyn.drei.com) |
2021-08-02 09:11:12 +0200 | <c_wraith> | sergio812: Why are you trying to do it inside the do block? |
2021-08-02 09:11:23 +0200 | <c_wraith> | sergio812: it would work just fine if you did it outside |
2021-08-02 09:12:15 +0200 | <nshepperd> | sergio812: i think you're meant to use 'monitor' in io tests |
2021-08-02 09:12:38 +0200 | <nshepperd> | sergio812: https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/Test-QuickCheck-Monadic.html#v:monitor |
2021-08-02 09:13:40 +0200 | <sergio812> | c_wraith: you mean, tuck in "collect (length list) $" before "monadicIO"? |
2021-08-02 09:14:09 +0200 | <c_wraith> | oh, if it is a scoping error, then yes. monitor is what you want |
2021-08-02 09:14:36 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds) |
2021-08-02 09:14:52 +0200 | <sergio812> | c_wraith: you're probably right that I can make do with putting it outside on this example |
2021-08-02 09:16:40 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-08-02 09:16:41 +0200 | <sergio812> | nshepperd: thank you for pointing me to "monitor"! |
2021-08-02 09:17:13 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Remote host closed the connection) |
2021-08-02 09:17:26 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-08-02 09:20:10 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds) |
2021-08-02 09:21:52 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-02 09:21:52 +0200 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer) |
2021-08-02 09:22:03 +0200 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-08-02 09:22:58 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-08-02 09:24:06 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-08-02 09:24:06 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 272 seconds) |
2021-08-02 09:24:21 +0200 | <mastarija> | Do we have something like the "Alternative" type class, but that is related to "Semigroup" instead of "Monoid". I'd really like an instance of the Alternative, but without that annoying "empty" |
2021-08-02 09:24:48 +0200 | <dminuoso> | mastarija: Check out semigroupoids |
2021-08-02 09:24:51 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-08-02 09:25:05 +0200 | <mastarija> | dminuoso, nothing in base, huh? |
2021-08-02 09:25:08 +0200 | <dminuoso> | Right |
2021-08-02 09:25:17 +0200 | <dminuoso> | https://hackage.haskell.org/package/semigroupoids-5.3.5/docs/Data-Functor-Alt.html |
2021-08-02 09:25:29 +0200 | <dminuoso> | mastarija: ^- this is one of the reasons quite a few packages depend on semigroupoids. :) |
2021-08-02 09:25:36 +0200 | <mastarija> | :D |
2021-08-02 09:25:48 +0200 | <mastarija> | I guess mine will too |
2021-08-02 09:29:55 +0200 | jay-invariant | (~jay@c-24-4-6-169.hsd1.ca.comcast.net) |
2021-08-02 09:30:06 +0200 | <dibblego> | Either is a good example instance |
2021-08-02 09:31:03 +0200 | <mastarija> | Would it be fine, if I write in my library, you are free to use the "empty", but if you do, you might loose the data you've been accumulating? |
2021-08-02 09:31:22 +0200 | <dibblego> | as long as it is lawful, sure |
2021-08-02 09:31:29 +0200 | <mastarija> | Yes, it is. |
2021-08-02 09:31:37 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-02 09:32:19 +0200 | <mastarija> | I mean, everything checks out, it's just that "empty" that's a thorn in my eyes, and there's no way to introduce it through my DSL other than explicitly writing "empty" somewhere in the code |
2021-08-02 09:32:37 +0200 | <mastarija> | Could I use custom error messages somehow in that case? |
2021-08-02 09:32:57 +0200 | <mastarija> | So that compiler warns the user in advance if he typed empty instead of mempty? |
2021-08-02 09:32:58 +0200 | <dibblego> | you might want to show the example |
2021-08-02 09:33:20 +0200 | <mastarija> | data Wrong e = Neutral | Inert e | Wrong e |
2021-08-02 09:33:31 +0200 | <mastarija> | My error aggregation type |
2021-08-02 09:33:48 +0200 | <mastarija> | Neutral is added purely because of empty |
2021-08-02 09:33:53 +0200 | <dibblego> | FYI, that's iso to data Wrong e = Neutral | Blah e Bool |
2021-08-02 09:34:10 +0200 | <mastarija> | Yes |
2021-08-02 09:34:26 +0200 | <dibblego> | my opinion: if there is a bug because of typing the wrong thing in a nominal system -> use parametricity more |
2021-08-02 09:34:42 +0200 | <mastarija> | Ideally, it would be data Wrong e = Inert e | Wrong e |
2021-08-02 09:34:53 +0200 | <dibblego> | well do that as well if it helps |
2021-08-02 09:35:04 +0200 | <mastarija> | dibblego, not sure what you mean by parametricity |
2021-08-02 09:35:26 +0200 | <dibblego> | x :: Alternative f => f a; x = mempty -- fails to compile |
2021-08-02 09:35:38 +0200 | kuribas | (~user@ptr-25vy0i94rzok8s66yz2.18120a2.ip6.access.telenet.be) |
2021-08-02 09:36:09 +0200 | <kuribas> | would it be possible to get C-like performance for dealing with binary data formats? |
2021-08-02 09:36:15 +0200 | <kuribas> | In C I can just cast a buffer to a datatype. |
2021-08-02 09:36:26 +0200 | <euouae> | There's unboxed types |
2021-08-02 09:36:44 +0200 | <kuribas> | However, in haskell instead of just deserialising, I could take a strict bytestring and use accessor functions. |
2021-08-02 09:36:58 +0200 | mastarija_ | (~mastarija@31.217.8.174) |
2021-08-02 09:37:14 +0200 | <mastarija_> | why does this nickserv keep changing my username? |
2021-08-02 09:37:21 +0200 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
2021-08-02 09:37:28 +0200 | <euouae> | You're dropping your connection mastarija_ |
2021-08-02 09:37:42 +0200 | <mastarija_> | Hm... didn't used to happen. |
2021-08-02 09:38:00 +0200 | <euouae> | kuribas: You can use GHCs unboxed types, wouldn't that be what you need in terms of performance? |
2021-08-02 09:38:20 +0200 | <kuribas> | euouae: the bytestring is irregular, like, not a list of integers, but a index, different regions, etc... |
2021-08-02 09:38:33 +0200 | <kuribas> | like a binary file format... |
2021-08-02 09:39:12 +0200 | <euouae> | It can be an array of unboxed bytes which you can then interpret as you'd like |
2021-08-02 09:39:28 +0200 | <kuribas> | yes, something like that... |
2021-08-02 09:40:34 +0200 | mastarija | (~mastarija@31.217.8.174) (Ping timeout: 272 seconds) |
2021-08-02 09:41:43 +0200 | <euouae> | You need to benchmark and see whether you need that |
2021-08-02 09:41:53 +0200 | <euouae> | Have you determined that your code is slow as is? |
2021-08-02 09:41:59 +0200 | <nshepperd> | use Storable and hope the memcpys get optimised away? |
2021-08-02 09:42:15 +0200 | <kuribas> | hmm, bytestring doesn't have O(1) conversion from C Ptr? |
2021-08-02 09:43:14 +0200 | <kuribas> | Maybe I need Vector.Storable.Vector Word8 then... |
2021-08-02 09:45:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 09:46:21 +0200 | mastarija_ | (~mastarija@31.217.8.174) (Quit: Leaving) |
2021-08-02 09:47:03 +0200 | chele | (~chele@user/chele) |
2021-08-02 09:47:28 +0200 | <euouae> | is it possible to work with Haskell offline? |
2021-08-02 09:47:40 +0200 | <dminuoso> | Why shouldn't it? |
2021-08-02 09:47:49 +0200 | <euouae> | I.e. have cabal and/or stack use the cached modules |
2021-08-02 09:48:04 +0200 | <euouae> | and also access the docs from haddock for base? |
2021-08-02 09:48:13 +0200 | <maerwald[m]> | Cabal has an `--offline` switch |
2021-08-02 09:48:18 +0200 | <euouae> | Nice |
2021-08-02 09:48:27 +0200 | <kuribas> | ah, unsafeUseAsCString is O(1) |
2021-08-02 09:48:29 +0200 | <euouae> | Ok that probably does it. Thanks |
2021-08-02 09:48:30 +0200 | <dminuoso> | Also, davean has build a thing while they were offline for a prolonged time. |
2021-08-02 09:48:33 +0200 | <maerwald[m]> | Haddock db will need to be built afair |
2021-08-02 09:48:37 +0200 | <dminuoso> | But I dont recall the name of that project |
2021-08-02 09:49:42 +0200 | <euouae> | Alright, g2g, thank you for the help. |
2021-08-02 09:49:45 +0200 | euouae | (~euouae@user/euouae) (Quit: Client closed) |
2021-08-02 09:50:32 +0200 | <merijn> | Most extreme scenario you can just host a local mirror of Hackage :p |
2021-08-02 09:51:19 +0200 | <dminuoso> | Yeah, and davean build something akin to that |
2021-08-02 09:51:35 +0200 | <dminuoso> | But hackage is quite a beast that cant just be run. It's very annoying |
2021-08-02 09:55:53 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-08-02 09:57:38 +0200 | <maerwald[m]> | This should be made easier |
2021-08-02 09:58:18 +0200 | gambpang | (~ian@207.181.230.156) (Ping timeout: 272 seconds) |
2021-08-02 09:58:34 +0200 | gambpang | (~ian@207.181.230.156) |
2021-08-02 09:58:46 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 10:00:25 +0200 | <kuribas> | hmm, maybe I can use GADTs to get safe indexes. For example data MyFields a where Field1 :: Field Int8; Field2 :: Field Word16, then some magic to calculate offsets... |
2021-08-02 10:03:58 +0200 | <kuribas> | better than manually calculating offsets... |
2021-08-02 10:05:35 +0200 | <kuribas> | Maybe a TH function that creates a function "readMyField :: ByteString -> MyFields a -> a" |
2021-08-02 10:05:55 +0200 | <kuribas> | (or generics, but that doesn't seem to work with GADTs). |
2021-08-02 10:06:05 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-08-02 10:08:26 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
2021-08-02 10:10:22 +0200 | <kuribas> | of course the idea is that this becomes inlined, and reduced to a single indexed bytestring read. |
2021-08-02 10:12:39 +0200 | <merijn> | kuribas: Why not use, like, binary? |
2021-08-02 10:12:57 +0200 | <kuribas> | merijn: because that implies copying. |
2021-08-02 10:13:33 +0200 | <merijn> | How so? |
2021-08-02 10:14:08 +0200 | <kuribas> | merijn: because I need to deserialize the whole thing, no? |
2021-08-02 10:14:20 +0200 | <kuribas> | merijn: where I want only a single field, for example. |
2021-08-02 10:14:23 +0200 | <merijn> | It Depends (TM) |
2021-08-02 10:14:45 +0200 | <merijn> | tbh, if you want to index specific byte locations it sounds like you just want Storable |
2021-08-02 10:14:53 +0200 | earthy | (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) (Ping timeout: 255 seconds) |
2021-08-02 10:15:27 +0200 | <kuribas> | merijn: that doesn't solve the problem of finding a single field, does it? |
2021-08-02 10:16:13 +0200 | <merijn> | I think I'm missing context here |
2021-08-02 10:16:47 +0200 | aegon | (~mike@174.127.249.180) (Quit: leaving) |
2021-08-02 10:17:17 +0200 | <kuribas> | merijn: in my example above, say I want Field2, not Field1 |
2021-08-02 10:17:22 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-02 10:17:26 +0200 | zeenk | (~zeenk@2a02:2f04:a211:a800:553b:3cb0:5ea1:7e83) |
2021-08-02 10:17:47 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-02 10:17:50 +0200 | <kuribas> | here it's only two fields, but in reality it may be a big buffer with several indirections. |
2021-08-02 10:18:26 +0200 | <merijn> | there is no example above |
2021-08-02 10:18:34 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 272 seconds) |
2021-08-02 10:18:45 +0200 | <merijn> | There's just a vague handwave of a GADT with no relation to any specific memory layout/whatever |
2021-08-02 10:20:00 +0200 | <kuribas> | merijn: the layout is the order of the data type. |
2021-08-02 10:21:06 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2021-08-02 10:21:12 +0200 | <kuribas> | So struct MyFields { char field1; unsigned short field2 }. |
2021-08-02 10:22:31 +0200 | <merijn> | You just said you had indirections, though, so that can't be right |
2021-08-02 10:23:05 +0200 | <kuribas> | not in this example |
2021-08-02 10:25:19 +0200 | <kuribas> | merijn: even without indirection, binary will not help |
2021-08-02 10:25:22 +0200 | <kuribas> | or Storable |
2021-08-02 10:25:58 +0200 | <merijn> | How will Storable not help? |
2021-08-02 10:26:50 +0200 | michalz | (~michalz@185.246.204.40) |
2021-08-02 10:28:37 +0200 | <merijn> | In fact, storable is really the *only* way to arbitrary indexing |
2021-08-02 10:29:20 +0200 | <dminuoso> | Storable has some really odd UX problems. :( |
2021-08-02 10:30:23 +0200 | <merijn> | hmm? |
2021-08-02 10:30:23 +0200 | <kuribas> | merijn: show me how how to get field2 using storable, without deserializing the whole thing? |
2021-08-02 10:30:40 +0200 | <merijn> | kuribas: Storable lets you just do arbitrary pointer offsets |
2021-08-02 10:31:07 +0200 | <kuribas> | merijn: but the whole idea of my construction is to **not** calculate pointer offsets. |
2021-08-02 10:31:12 +0200 | <kuribas> | Well, not manually. |
2021-08-02 10:31:19 +0200 | <merijn> | kuribas: Sucks to be you then |
2021-08-02 10:31:27 +0200 | <kuribas> | heh, what? |
2021-08-02 10:31:30 +0200 | <merijn> | You can try c2hsc or hsc2hs |
2021-08-02 10:31:36 +0200 | <merijn> | And pray to god it happens to work |
2021-08-02 10:32:08 +0200 | <merijn> | kuribas: You cannot automatically figure out field offsets |
2021-08-02 10:32:22 +0200 | <kuribas> | merijn: you can? It's just summing the offsets. |
2021-08-02 10:32:36 +0200 | <merijn> | It's not possible to correctly. There's a bunch of "best effort" attempts like c2hsc, etc |
2021-08-02 10:32:40 +0200 | <kuribas> | a TH function can do that. |
2021-08-02 10:32:44 +0200 | <merijn> | kuribas: And who defines those offsets? |
2021-08-02 10:32:47 +0200 | <kuribas> | I do? |
2021-08-02 10:33:32 +0200 | <kuribas> | merijn: or are you trying to say that C offsets aren't well defined? |
2021-08-02 10:33:48 +0200 | <merijn> | kuribas: They aren't, because the sizes aren't well defined |
2021-08-02 10:34:21 +0200 | <kuribas> | merijn: the size of Int8 and Word16 seems pretty well defined to me ;-) |
2021-08-02 10:34:33 +0200 | <merijn> | kuribas: Well, no, because those aren't C types |
2021-08-02 10:34:49 +0200 | <kuribas> | sure, so I'll use a typedef with defined sizes? |
2021-08-02 10:35:05 +0200 | <sergio812> | If it's a C/C++ data structure, sizes aren't well defined. |
2021-08-02 10:35:07 +0200 | <merijn> | kuribas: And then you gotta account for padding |
2021-08-02 10:35:20 +0200 | <merijn> | kuribas: Compilers can (and do!) insert padding bytes into structures |
2021-08-02 10:35:24 +0200 | <dminuoso> | merijn: You have a bunch of things that transitively end up doing things like `sizeOf (undefined :: a)`, even though there's values of type `a` around. So you can't trivially handle things like VLAs |
2021-08-02 10:35:37 +0200 | <dminuoso> | at least not while using Foreign |
2021-08-02 10:35:42 +0200 | <kuribas> | merijn: so you cannot cast a ptr in C to a struct? |
2021-08-02 10:35:54 +0200 | <dminuoso> | And it's annoying because it's solveable. |
2021-08-02 10:36:00 +0200 | <merijn> | kuribas: The way c2hsc works is that it generates your struct as C code, generates code that prints out byte offsets for each field and then inserts those into the hsc code |
2021-08-02 10:36:13 +0200 | <merijn> | kuribas: Because that's the only way it will ever interoperate with C |
2021-08-02 10:36:21 +0200 | <merijn> | kuribas: Depends on what pointer |
2021-08-02 10:36:25 +0200 | <kuribas> | merijn: well, luckily I don't even need to go to C if I use this... |
2021-08-02 10:36:27 +0200 | <sergio812> | But if it's a binary format stored on files, the C/C++ implementation probably use typedefs that guarantee(TM) you'll have consistent sizes |
2021-08-02 10:36:39 +0200 | <sergio812> | but they may not be known from Haskell land... |
2021-08-02 10:37:01 +0200 | <kuribas> | merijn: I was of the impression that people cast ptrs read from binary files to C structs... |
2021-08-02 10:37:08 +0200 | <merijn> | kuribas: Yeah, morons do |
2021-08-02 10:37:31 +0200 | <dminuoso> | 10:35:43 kuribas | merijn: so you cannot cast a ptr in C to a struct? <- depends. In simplified terms the C standard defines that you may not access an object through a pointer of an incompatible (i.e. different) type. |
2021-08-02 10:37:34 +0200 | <merijn> | kuribas: "casting ptrs read from binary files" makes no sense, tbh |
2021-08-02 10:38:13 +0200 | <kuribas> | merijn: of course you have to deal with byte ordering. But in my case I assume the byte ordering stays the same... |
2021-08-02 10:38:14 +0200 | <merijn> | You can have a ptr to bytes read from a file and you can (well, imagine some very big scare quotes around that "can") cast that pointer to something |
2021-08-02 10:38:32 +0200 | <merijn> | kuribas: Struct padding is different from ABI to ABI |
2021-08-02 10:38:36 +0200 | <kuribas> | merijn: as it's only for storage, not for distribution. |
2021-08-02 10:39:07 +0200 | <kuribas> | merijn: aren't there pragmas for dealing with padding etc... ? |
2021-08-02 10:39:16 +0200 | <merijn> | kuribas: The only people who dump out struct by "serialise bytes from a pointer" are people who want to hate themselves 3 years from now |
2021-08-02 10:39:41 +0200 | <merijn> | kuribas: You can adds lots of things to make dumb things seem somewhat more reasonable :p |
2021-08-02 10:40:11 +0200 | <merijn> | kuribas: tbh, my first reaction would be to question your very initial assumption that you cannot afford "binary" because it copie |
2021-08-02 10:40:13 +0200 | <kuribas> | So in that case, my haskell solution will be faster than C :) |
2021-08-02 10:40:22 +0200 | <merijn> | Why do you think the overhead of copying will be at all relevant? |
2021-08-02 10:40:37 +0200 | <merijn> | i.e. how big is your data? how sparse is your accessing? how often do you load stuff? |
2021-08-02 10:41:09 +0200 | <kuribas> | merijn: it's chunked time series data. First I look up the timeseries range in the index, then the index points to another buffer with the actual data. |
2021-08-02 10:41:14 +0200 | reumeth | (~reumeth@user/reumeth) (Ping timeout: 256 seconds) |
2021-08-02 10:41:59 +0200 | <merijn> | kuribas: I mean, binary has a "skip" combinator |
2021-08-02 10:42:22 +0200 | <merijn> | I don't really see how that indirection would really form a problem if you have an accurate byte offset |
2021-08-02 10:42:40 +0200 | <kuribas> | merijn: accurate byte offset is the problem... |
2021-08-02 10:42:43 +0200 | <merijn> | Your binary parser doesn't really have to parse your entire format |
2021-08-02 10:42:58 +0200 | <merijn> | kuribas: Well, you said you could manually define it |
2021-08-02 10:43:44 +0200 | <merijn> | tbh, the question is still ill-specified as it is unclear whether this is 1) an pre-existing well defined format or 2) a format you're defining and implementing yourself |
2021-08-02 10:43:54 +0200 | <kuribas> | merijn: the latter |
2021-08-02 10:44:16 +0200 | <merijn> | Then you can just define it as whatever is convenient |
2021-08-02 10:44:43 +0200 | <kuribas> | merijn: btw, I wrote a library for reading font formats using binary. |
2021-08-02 10:44:48 +0200 | <kuribas> | It isn't all that clean... |
2021-08-02 10:45:26 +0200 | <kuribas> | lot's of manual byte fiddling... |
2021-08-02 10:45:40 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-02 10:47:02 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-08-02 10:47:56 +0200 | <kuribas> | merijn: in any case, binary and storable solve a different problem from the one I solved above, which is calculating offsets in a safer way. |
2021-08-02 10:48:10 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds) |
2021-08-02 10:48:32 +0200 | <merijn> | If you are defining a format yourself you can define the format to make the offset easy and just do that? |
2021-08-02 10:48:40 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-08-02 10:48:41 +0200 | <merijn> | I don't understand the problem in that case |
2021-08-02 10:49:04 +0200 | <merijn> | "How do I calculate offsets?" 'well, I dunno man, that depends on how you defined your format...' |
2021-08-02 10:49:26 +0200 | <kuribas> | I mean, I know how to calculate offsets, but I'd prefer the compiler to do it for me... |
2021-08-02 10:50:12 +0200 | <merijn> | You have to define your format somewhere anywhere, so just define the sizes there and then you can just compute it? |
2021-08-02 10:50:31 +0200 | <merijn> | I literally don't understand the problem you're trying to describe |
2021-08-02 10:50:55 +0200 | <merijn> | If you've defined the format, you already have the sizes defined somewhere, so you can just, like, sum them in a function and done? |
2021-08-02 10:51:18 +0200 | <kuribas> | "getField bs WriteLogHead" is more descriptive than "getFieldAt bs 16" |
2021-08-02 10:52:30 +0200 | <merijn> | So define a variable "writeLogHead" whose value is the sum off all the preceding fields? |
2021-08-02 10:53:03 +0200 | <kuribas> | or like, don't, and let the compiler do the sum? |
2021-08-02 10:53:15 +0200 | <kuribas> | why would I want to manually sum byte offsets? |
2021-08-02 10:53:59 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-02 10:54:08 +0200 | <merijn> | Well, if you wanna write TH code the loops over record fields, inspects their types, computes sizes from that, and sums them, I'm not stopping you |
2021-08-02 10:55:11 +0200 | <merijn> | I mean, it'll take you 3-5 days of hating yourself to figure out the TH code, it will compile slower, no one else on the team will understand it and it'll mess up your compile times *and* ability to cross-compile, but if that seems less effort than "writing out the offsets once in a file"...nobody's stopping you |
2021-08-02 10:56:00 +0200 | <mastarija> | So, I'm looking at this graph of typeclasses on typeclassopedia, https://wiki.haskell.org/File:Typeclassopedia-diagram.png |
2021-08-02 10:56:08 +0200 | <mastarija> | And it says "if there is an arrow from Foo to Bar it means that every Bar is (or should be, or can be made into) a Foo" |
2021-08-02 10:56:16 +0200 | <mastarija> | But that doesn't check out |
2021-08-02 10:56:22 +0200 | <merijn> | mastarija: How so? |
2021-08-02 10:56:25 +0200 | <mastarija> | Arrows should be in the opposite direction |
2021-08-02 10:56:33 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 258 seconds) |
2021-08-02 10:56:36 +0200 | <mastarija> | Oh... |
2021-08-02 10:56:38 +0200 | <merijn> | mastarija: No |
2021-08-02 10:56:43 +0200 | <mastarija> | No, I read it wrong |
2021-08-02 10:56:47 +0200 | <merijn> | mastarija: :) |
2021-08-02 10:56:50 +0200 | <mastarija> | xD |
2021-08-02 10:56:58 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-02 10:57:09 +0200 | <mastarija> | But I do think arrows should be reverse :D |
2021-08-02 10:57:13 +0200 | <merijn> | mastarija: Effectively the arrows are "this is a subset of" |
2021-08-02 10:57:33 +0200 | <mastarija> | Yes, but my intuition is "Superset" |
2021-08-02 10:57:33 +0200 | <merijn> | mastarija: I think there's something to be said for both arrow directions |
2021-08-02 10:57:54 +0200 | <merijn> | mastarija: In inheritance you usually point from the superclass to subclass too |
2021-08-02 10:58:10 +0200 | <merijn> | So it seems fairly natural to have arrows from superset to subset |
2021-08-02 10:58:20 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 10:58:42 +0200 | <merijn> | It's also how hierarchies are normally represented |
2021-08-02 10:58:43 +0200 | <mastarija> | Yes.. I guess it kind of depends on the context you're coming from |
2021-08-02 11:00:44 +0200 | reumeth | (~reumeth@user/reumeth) |
2021-08-02 11:00:45 +0200 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2021-08-02 11:01:08 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) |
2021-08-02 11:01:14 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-08-02 11:03:08 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-02 11:03:22 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds) |
2021-08-02 11:03:43 +0200 | gehmehgeh_ | (~user@user/gehmehgeh) |
2021-08-02 11:04:10 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-08-02 11:04:49 +0200 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2021-08-02 11:05:14 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-08-02 11:05:16 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 244 seconds) |
2021-08-02 11:05:21 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-02 11:12:01 +0200 | <kuribas> | dminuoso: Storable should use at least Proxy, instead of undefined... |
2021-08-02 11:12:16 +0200 | gehmehgeh_ | gehmehgeh |
2021-08-02 11:12:17 +0200 | <kuribas> | dminuoso: but it was probably created before Proxy... |
2021-08-02 11:12:31 +0200 | <dminuoso[m]> | kuribas: It should use the value itself. |
2021-08-02 11:12:34 +0200 | <dminuoso[m]> | Otherwise you cant do things like VLAs |
2021-08-02 11:13:23 +0200 | <kuribas> | what's vla? |
2021-08-02 11:14:49 +0200 | <dminuoso[m]> | variable length array |
2021-08-02 11:15:51 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Remote host closed the connection) |
2021-08-02 11:20:15 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds) |
2021-08-02 11:20:37 +0200 | mei | (~mei@user/mei) |
2021-08-02 11:20:57 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-08-02 11:22:00 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 265 seconds) |
2021-08-02 11:22:25 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 11:29:34 +0200 | sergio812 | (~sergio812@lfbn-ren-1-403-102.w2-10.abo.wanadoo.fr) (Ping timeout: 246 seconds) |
2021-08-02 11:29:55 +0200 | __monty__ | (~toonn@user/toonn) |
2021-08-02 11:30:46 +0200 | Reyu[M] | (~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection) |
2021-08-02 11:31:24 +0200 | Reyu[M] | (~reyureyuz@matrix.reyuzenfold.com) |
2021-08-02 11:31:58 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 11:32:12 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 11:37:55 +0200 | mastarija_ | (~mastarija@31.217.8.174) |
2021-08-02 11:39:34 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 11:40:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-02 11:41:17 +0200 | mastarija | (~mastarija@31.217.8.174) (Ping timeout: 252 seconds) |
2021-08-02 11:42:34 +0200 | jespada | (~jespada@90.254.247.46) |
2021-08-02 11:43:22 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 11:44:37 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 11:44:42 +0200 | mei | (~mei@user/mei) (Ping timeout: 272 seconds) |
2021-08-02 11:44:49 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-02 11:45:45 +0200 | dminuoso | (~dminuoso@user/dminuoso) (Quit: ZNC 1.7.5 - https://znc.in) |
2021-08-02 11:46:02 +0200 | dminuoso | (~dminuoso@user/dminuoso) |
2021-08-02 11:46:11 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 11:46:35 +0200 | pe200012 | (~pe200012@113.105.10.33) |
2021-08-02 11:47:01 +0200 | dminuoso | (~dminuoso@user/dminuoso) (Client Quit) |
2021-08-02 11:47:18 +0200 | dminuoso | (~dminuoso@user/dminuoso) |
2021-08-02 11:47:59 +0200 | berberman_ | (~berberman@user/berberman) (Ping timeout: 252 seconds) |
2021-08-02 11:48:31 +0200 | berberman | (~berberman@user/berberman) |
2021-08-02 11:49:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-08-02 11:49:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 11:49:46 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2021-08-02 11:50:32 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
2021-08-02 11:51:36 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-08-02 11:52:25 +0200 | <Taneb> | As a mild curiosity thing, are there any widely used libraries on Hackage with one- or two-character names? |
2021-08-02 11:54:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-02 11:54:53 +0200 | <nshepperd> | ad and gl are the only ones that come to mind. not sure how widely used they are |
2021-08-02 11:55:07 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 11:55:08 +0200 | <Taneb> | Ah yeah, I should have thought of those, I've used both of them |
2021-08-02 11:56:19 +0200 | <nshepperd> | edwardk: readme for gl needs an update to point away from freenode :) |
2021-08-02 12:00:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-02 12:00:55 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:03:10 +0200 | anandprabhu | (~anandprab@94.202.243.198) |
2021-08-02 12:03:34 +0200 | mastarija_ | (~mastarija@31.217.8.174) (Ping timeout: 265 seconds) |
2021-08-02 12:03:53 +0200 | <deejaytee> | Taneb: https://pastebin.com/yB6VMKJa these are the ones I got off of Hackage - no idea if any of them are particularly well-used |
2021-08-02 12:03:58 +0200 | ubert | (~Thunderbi@91.141.47.113.wireless.dyn.drei.com) |
2021-08-02 12:05:50 +0200 | <Taneb> | deejaytee: thanks for that |
2021-08-02 12:05:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-02 12:06:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:09:16 +0200 | mastarija_ | (~mastarija@31.217.8.174) |
2021-08-02 12:11:15 +0200 | earthy | (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) |
2021-08-02 12:11:32 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 252 seconds) |
2021-08-02 12:12:28 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-08-02 12:12:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:13:44 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b95041d34620f200961c0.dip0.t-ipconnect.de) |
2021-08-02 12:16:07 +0200 | mastarija__ | (~mastarija@31.217.8.174) |
2021-08-02 12:17:00 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9504b8b6f59e7f78d4aa.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2021-08-02 12:18:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-08-02 12:18:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:19:31 +0200 | <kuribas> | Why does template haskell got such a bad name? |
2021-08-02 12:19:32 +0200 | mastarija_ | (~mastarija@31.217.8.174) (Ping timeout: 272 seconds) |
2021-08-02 12:19:45 +0200 | <kuribas> | I find it easier to get correct TH than correct macros in lisp... |
2021-08-02 12:20:06 +0200 | <kuribas> | probably due to the more structured AST |
2021-08-02 12:20:13 +0200 | jippiedoe | (~david@2a02-a448-48bd-1-6c05-d94f-4fec-758a.fixed6.kpn.net) |
2021-08-02 12:21:13 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 244 seconds) |
2021-08-02 12:21:26 +0200 | <dminuoso> | What makes you think it has a bad name? |
2021-08-02 12:21:29 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-02 12:21:33 +0200 | xsperry | (~as@user/xsperry) (Remote host closed the connection) |
2021-08-02 12:21:54 +0200 | <kuribas> | for example, merijn's comments |
2021-08-02 12:22:06 +0200 | <dminuoso> | Though, I can think of a few things I dislike about TH. Unbounded access to IO means that every time I run `cabal update` I risk running malware on the machine. |
2021-08-02 12:22:32 +0200 | <kuribas> | true, but that's also true for any installer |
2021-08-02 12:22:42 +0200 | <dminuoso> | Is it true for any _compiler_? |
2021-08-02 12:22:54 +0200 | <kuribas> | I don't know :P ... |
2021-08-02 12:23:27 +0200 | <dminuoso> | The problem is not what `cabal update` itself does. But any subsequent `cabal build` or bumping bounds can run arbitrary code on my machine. |
2021-08-02 12:23:52 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-02 12:24:36 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 12:24:45 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:30:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 12:31:00 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:34:26 +0200 | hendursa1 | (~weechat@user/hendursaga) (Remote host closed the connection) |
2021-08-02 12:34:47 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-08-02 12:36:03 +0200 | chris_ | (~chris@81.96.113.213) |
2021-08-02 12:36:38 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 12:37:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:46:18 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 240 seconds) |
2021-08-02 12:46:41 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 12:47:00 +0200 | favonia | (~favonia@user/favonia) |
2021-08-02 12:47:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 12:47:40 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 12:48:47 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:51:12 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 272 seconds) |
2021-08-02 12:51:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2021-08-02 12:54:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
2021-08-02 12:54:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 12:55:38 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-08-02 12:57:57 +0200 | octeep | (~octeep@42-2-223-196.static.netvigator.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-02 13:02:45 +0200 | haskell-lurk | (~haskell-l@78.155.54.115) (Quit: Client closed) |
2021-08-02 13:03:40 +0200 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2021-08-02 13:04:25 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-08-02 13:08:09 +0200 | haskell-lurk | (~haskell-l@78.155.54.115) |
2021-08-02 13:13:30 +0200 | _bin | (~bin@user/bin/x-1583188) (Ping timeout: 240 seconds) |
2021-08-02 13:13:50 +0200 | _bin | (~bin@user/bin/x-1583188) |
2021-08-02 13:14:42 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 240 seconds) |
2021-08-02 13:18:58 +0200 | pe200012 | (~pe200012@113.105.10.33) (Quit: Konversation terminated!) |
2021-08-02 13:20:04 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 13:24:24 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 276 seconds) |
2021-08-02 13:24:46 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 13:26:06 +0200 | mastarija_ | (~mastarija@31.217.8.174) |
2021-08-02 13:26:14 +0200 | pe200012 | (~pe200012@113.105.10.33) |
2021-08-02 13:27:13 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 13:29:36 +0200 | mastarija__ | (~mastarija@31.217.8.174) (Ping timeout: 265 seconds) |
2021-08-02 13:36:24 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 258 seconds) |
2021-08-02 13:36:39 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 13:36:50 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 13:40:38 +0200 | reumeth | (~reumeth@user/reumeth) (Ping timeout: 252 seconds) |
2021-08-02 13:42:37 +0200 | mastarija__ | (~mastarija@31.217.8.174) |
2021-08-02 13:45:59 +0200 | mastarija_ | (~mastarija@31.217.8.174) (Ping timeout: 258 seconds) |
2021-08-02 13:49:45 +0200 | reumeth | (~reumeth@user/reumeth) |
2021-08-02 13:50:52 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 265 seconds) |
2021-08-02 13:51:21 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-08-02 13:51:23 +0200 | jneira | (~jneira@212.8.115.226) (Quit: Client closed) |
2021-08-02 13:51:37 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-02 13:51:54 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 13:56:10 +0200 | poljar1 | (~poljar@93-139-4-196.adsl.net.t-com.hr) |
2021-08-02 13:56:40 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 265 seconds) |
2021-08-02 13:57:42 +0200 | poljar | (~poljar@93-139-92-135.adsl.net.t-com.hr) (Ping timeout: 272 seconds) |
2021-08-02 13:58:20 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-02 14:00:03 +0200 | shailangsa | (~shailangs@host86-186-196-233.range86-186.btcentralplus.com) (Ping timeout: 268 seconds) |
2021-08-02 14:00:25 +0200 | chris_ | (~chris@81.96.113.213) |
2021-08-02 14:00:51 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 14:02:05 +0200 | xff0x | (~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704) (Ping timeout: 252 seconds) |
2021-08-02 14:02:43 +0200 | xff0x | (~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704) |
2021-08-02 14:02:46 +0200 | ubert | (~Thunderbi@91.141.47.113.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
2021-08-02 14:03:42 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) |
2021-08-02 14:06:29 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Ping timeout: 252 seconds) |
2021-08-02 14:10:11 +0200 | Guest72 | (~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
2021-08-02 14:11:28 +0200 | thyriaen | (~thyriaen@x4dbfed8a.dyn.telefonica.de) (Quit: Leaving) |
2021-08-02 14:11:47 +0200 | <Guest72> | is `callback fetch` something well-known and defined in Haskell world? |
2021-08-02 14:13:50 +0200 | <dminuoso> | Probably not. |
2021-08-02 14:14:08 +0200 | <dminuoso> | What exactly are you referring to? The function `callback`? |
2021-08-02 14:14:13 +0200 | <dminuoso> | The value `fetch`? |
2021-08-02 14:16:23 +0200 | Guest72 | rond_ |
2021-08-02 14:18:08 +0200 | alx741 | (~alx741@186.178.108.145) |
2021-08-02 14:18:40 +0200 | <rond_> | `fetch` is a callback; I thought that maybe it's well-defined somewhere; probably not, I need to read more and perhaps I'll come back with follow-up questions |
2021-08-02 14:20:06 +0200 | <merijn> | rond_: tbh at this point I have 0 idea what you're asking, so that makes answering...tricky :p |
2021-08-02 14:20:09 +0200 | <dminuoso> | Well it likely is defined *somewhere* if you're reading it somewhere. :) |
2021-08-02 14:20:28 +0200 | <merijn> | I don't even know what "callback fetch" is in any context |
2021-08-02 14:20:47 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds) |
2021-08-02 14:22:48 +0200 | <rond_> | the "0 idea what you're asking for" fully answers my question. If `fetch` was well-known, then you'd know what's the question about. I.e. you'd recognize `State monad` phrase or alikes :) thank you! |
2021-08-02 14:23:34 +0200 | <merijn> | rond_: State monad terminology is usually get/put |
2021-08-02 14:23:49 +0200 | goepsilongo | (~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!) |
2021-08-02 14:27:36 +0200 | <merijn> | Entirely unrelated question |
2021-08-02 14:28:01 +0200 | <merijn> | If you have a command that takes a file to diff vs a "default" configuration |
2021-08-02 14:28:33 +0200 | <merijn> | Should the file argument be treated as "the old" and the default as "new" or vice versa. |
2021-08-02 14:28:36 +0200 | <sshine> | rond_, is this javascript terminology? in that case, you can get calbacks by passing a function as an argument, and 'fetch' appears to be async browser requests? so... that depends on how you run Haskell in the browser... |
2021-08-02 14:30:17 +0200 | <sshine> | rond_, if you mean how to write concurrent/async code in Haskell, you generally don't use promises. there's basic forking: https://github.com/crabmusket/haskell-simple-concurrency/blob/master/src/tutorial.md -- and then there's a number of abstractions built on top of that. |
2021-08-02 14:30:18 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-02 14:30:27 +0200 | MQ-17J | (~MQ-17J@8.6.144.192) |
2021-08-02 14:30:57 +0200 | shailangsa | (~shailangs@host86-186-196-233.range86-186.btcentralplus.com) |
2021-08-02 14:31:34 +0200 | <rond_> | thank you all! :) It turned out to be a project-specific term; sorry for the confusion! |
2021-08-02 14:33:47 +0200 | <sshine> | ah :) yeah, fetch is a very generic term. |
2021-08-02 14:36:52 +0200 | shailangsa | (~shailangs@host86-186-196-233.range86-186.btcentralplus.com) () |
2021-08-02 14:38:10 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:ccd8:d07e:17cb:5010) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2021-08-02 14:40:49 +0200 | PinealGlandOptic | (~PinealGla@37.115.210.35) (Quit: leaving) |
2021-08-02 14:40:56 +0200 | xff0x | (~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704) (Ping timeout: 256 seconds) |
2021-08-02 14:41:54 +0200 | xff0x | (~xff0x@2001:1a81:53e4:9a00:3689:c5ce:3234:2238) |
2021-08-02 14:43:57 +0200 | Melantha | (~pyon@user/pyon) |
2021-08-02 14:44:16 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
2021-08-02 14:45:06 +0200 | Putonlalla | (~sapekiis@it-cyan.it.jyu.fi) |
2021-08-02 14:45:07 +0200 | fendor_ | (~fendor@178.115.48.162.wireless.dyn.drei.com) |
2021-08-02 14:47:12 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) |
2021-08-02 14:47:37 +0200 | mastarija_ | (~mastarija@31.217.8.174) |
2021-08-02 14:47:46 +0200 | fendor | (~fendor@77.119.222.253.wireless.dyn.drei.com) (Ping timeout: 250 seconds) |
2021-08-02 14:49:23 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 14:49:38 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Killed (zirconium.libera.chat (Nickname regained by services))) |
2021-08-02 14:49:43 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) |
2021-08-02 14:50:42 +0200 | mastarija__ | (~mastarija@31.217.8.174) (Ping timeout: 240 seconds) |
2021-08-02 14:53:50 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-02 14:58:00 +0200 | jolly | (~jolly@208.180.97.158) |
2021-08-02 14:59:38 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 256 seconds) |
2021-08-02 15:00:57 +0200 | ornxka | (~ornxka@user/ornxka) (Ping timeout: 265 seconds) |
2021-08-02 15:01:31 +0200 | ornxka | (~ornxka@user/ornxka) |
2021-08-02 15:02:41 +0200 | mastarija_ | (~mastarija@31.217.8.174) (Ping timeout: 252 seconds) |
2021-08-02 15:03:10 +0200 | acidjnk_new | (~acidjnk@p5487d90a.dip0.t-ipconnect.de) |
2021-08-02 15:03:42 +0200 | <kritzefitz> | merijn, the way you describe it I think the default should be old and the file should be new. But I guess it depends on what exactly the default is used for. |
2021-08-02 15:03:44 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 15:03:59 +0200 | jneira | (~jneira@212.8.115.226) (Quit: Client closed) |
2021-08-02 15:04:40 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-02 15:04:50 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:4a3f:fe34:92c5:875c) (Ping timeout: 272 seconds) |
2021-08-02 15:05:07 +0200 | Alex_test | (~al_test@178.34.150.193) (Quit: ;-) |
2021-08-02 15:05:28 +0200 | AlexZenon | (~alzenon@178.34.150.193) (Quit: ;-) |
2021-08-02 15:05:31 +0200 | AlexNoo | (~AlexNoo@178.34.150.193) (Quit: Leaving) |
2021-08-02 15:06:28 +0200 | Igor | (~Igor@109.252.65.176) |
2021-08-02 15:06:50 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-02 15:07:18 +0200 | shailangsa | (~shailangs@host86-186-196-233.range86-186.btcentralplus.com) |
2021-08-02 15:07:22 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b95041d34620f200961c0.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2021-08-02 15:08:11 +0200 | tungki | (~tngk@subs30-116-206-14-0.three.co.id) |
2021-08-02 15:12:14 +0200 | Igor | (~Igor@109.252.65.176) (Quit: Client closed) |
2021-08-02 15:13:02 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 265 seconds) |
2021-08-02 15:15:03 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 15:16:48 +0200 | AlexZenon | (~alzenon@178.34.150.193) |
2021-08-02 15:20:20 +0200 | markpythonicbitc | (~textual@50.228.44.6) |
2021-08-02 15:21:11 +0200 | Alex_test | (~al_test@178.34.150.193) |
2021-08-02 15:21:22 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 240 seconds) |
2021-08-02 15:21:50 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 15:22:13 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Remote host closed the connection) |
2021-08-02 15:22:42 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) |
2021-08-02 15:22:45 +0200 | AlexNoo | (~AlexNoo@178.34.150.193) |
2021-08-02 15:23:43 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-08-02 15:25:44 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds) |
2021-08-02 15:25:57 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-02 15:26:34 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-02 15:27:52 +0200 | tngk | (~tngk@subs30-116-206-14-53.three.co.id) |
2021-08-02 15:28:33 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds) |
2021-08-02 15:28:54 +0200 | tungki | (~tngk@subs30-116-206-14-0.three.co.id) (Ping timeout: 272 seconds) |
2021-08-02 15:29:11 +0200 | mastarija_ | (~mastarija@31.217.8.174) |
2021-08-02 15:33:49 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-02 15:33:54 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 15:35:45 +0200 | kuribas | (~user@ptr-25vy0i94rzok8s66yz2.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-08-02 15:36:28 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds) |
2021-08-02 15:36:33 +0200 | pesada | (~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625) |
2021-08-02 15:36:52 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 15:37:30 +0200 | anandprabhu | (~anandprab@94.202.243.198) (Quit: Leaving) |
2021-08-02 15:38:26 +0200 | agua | (~agua@2804:18:7d:7d0f:1:0:789f:b031) (Ping timeout: 252 seconds) |
2021-08-02 15:39:42 +0200 | tngk | tungki |
2021-08-02 15:46:38 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 15:47:03 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-02 15:48:20 +0200 | chris_ | (~chris@81.96.113.213) |
2021-08-02 15:48:32 +0200 | tungki | (~tngk@subs30-116-206-14-53.three.co.id) (Ping timeout: 272 seconds) |
2021-08-02 15:51:06 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 15:51:24 +0200 | nvmd | (~nvmd@user/nvmd) |
2021-08-02 15:56:11 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-08-02 15:57:14 +0200 | <boxscape> | is there a canonical word for "value of a singleton type"? |
2021-08-02 15:57:38 +0200 | <boxscape> | ..."singleton"? |
2021-08-02 15:58:43 +0200 | <boxscape> | looking at the documentation of singletons is looks like yes. Somehow I didn't think of that until just now |
2021-08-02 15:59:08 +0200 | <boxscape> | (of using the word "singleton" for it I mean) |
2021-08-02 15:59:26 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-08-02 16:06:16 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 16:07:04 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 16:07:13 +0200 | tungki | (~tngk@subs30-116-206-14-53.three.co.id) |
2021-08-02 16:07:32 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds) |
2021-08-02 16:08:10 +0200 | gambpang | (~ian@207.181.230.156) (Ping timeout: 272 seconds) |
2021-08-02 16:09:03 +0200 | <sshine> | boxscape, "unit"? |
2021-08-02 16:10:17 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 16:10:18 +0200 | <boxscape> | sshine, hm, perhaps. In the particular case I have (writing a comment explaining something about the value) I prefer something that evokes some relationship to singleton types |
2021-08-02 16:10:32 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:10:32 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:14:29 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-08-02 16:15:49 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:16:15 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:17:35 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:20:36 +0200 | <Athas> | boxscape: "the value"! |
2021-08-02 16:20:41 +0200 | <Athas> | There is only one, after all. |
2021-08-02 16:21:17 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:21:49 +0200 | <boxscape> | hm, yes I suppose I could just "the value of a singleton type for <some type variable>" instead of insisting on a single word |
2021-08-02 16:21:56 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-02 16:22:59 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:23:05 +0200 | <deejaytee> | "inhabitant" comes to mind |
2021-08-02 16:24:08 +0200 | <Athas> | Suddenly Bob Harper appears and points out that in Haskell, every type is also inhabited by bottom. |
2021-08-02 16:25:14 +0200 | <deejaytee> | *forms a T with fingers, like a cross without its top* back, back to where you came from, foul bottom! |
2021-08-02 16:25:34 +0200 | <boxscape> | except we now have -XUnliftedData |
2021-08-02 16:25:35 +0200 | <boxscape> | I don't think I've seen anyone use it for singletons though |
2021-08-02 16:26:00 +0200 | <deejaytee> | back to the realm you inhabi-- oh... |
2021-08-02 16:26:11 +0200 | <boxscape> | (actually -XUnliftedDatatypes) |
2021-08-02 16:26:32 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:26:59 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed) |
2021-08-02 16:27:53 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) |
2021-08-02 16:28:16 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:28:30 +0200 | <boxscape> | seems to work just fine with singletons though, maybe it's not even a bad idea to do that |
2021-08-02 16:28:45 +0200 | <merijn> | Athas: Bob Harper is the "Um, Actually..." of FP :p |
2021-08-02 16:28:56 +0200 | <Athas> | merijn: more like the "Objection!" |
2021-08-02 16:29:01 +0200 | mastarija__ | (~mastarija@31.217.8.174) |
2021-08-02 16:30:28 +0200 | <boxscape> | er hold up |
2021-08-02 16:30:30 +0200 | <boxscape> | I got a seg fault trying to do that |
2021-08-02 16:30:30 +0200 | <boxscape> | that's not good |
2021-08-02 16:30:42 +0200 | <boxscape> | should probably recompile from HEAD and see if that still happens |
2021-08-02 16:31:36 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:31:56 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:32:28 +0200 | <raehik> | generic-lens has a really cool typeclass hasType that I can use to make generic statements about required context in a MonadReader. But it doesn't go through multiple layers of records. Is there a method for me to achieve that (while using generic-lens where possible)? |
2021-08-02 16:32:34 +0200 | mastarija_ | (~mastarija@31.217.8.174) (Ping timeout: 256 seconds) |
2021-08-02 16:32:39 +0200 | <raehik> | MWE here https://paste.tomsmeding.com/wemNYUPl |
2021-08-02 16:33:01 +0200 | rond_ | (~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Ping timeout: 246 seconds) |
2021-08-02 16:33:29 +0200 | <boxscape> | (specifically I got the segfault trying https://paste.tomsmeding.com/69xli0tn in ghci) |
2021-08-02 16:33:42 +0200 | Ariakenom | (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
2021-08-02 16:35:16 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-02 16:36:47 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:37:06 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:37:20 +0200 | Patternm1ster | (~georg@li1192-118.members.linode.com) (Quit: leaving) |
2021-08-02 16:37:36 +0200 | Patternmaster | (~georg@li1192-118.members.linode.com) |
2021-08-02 16:38:39 +0200 | dajoer | (~david@user/gvx) (Quit: leaving) |
2021-08-02 16:38:44 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.2) |
2021-08-02 16:38:48 +0200 | <Lycurgus> | pavonia, should you read this, the random individual yesterday basically asked if haskell was a chinese room for functions |
2021-08-02 16:39:15 +0200 | <Lycurgus> | that's the objection |
2021-08-02 16:39:27 +0200 | <Lycurgus> | and memoization doesn't amount to that |
2021-08-02 16:39:27 +0200 | <merijn> | Athas: Now I'm imagining him in a Phoenix Wright gif ;) |
2021-08-02 16:39:29 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:41:36 +0200 | <amesgen[m]> | Does anybody know of existing attempts to create a fuzzer for (at least parseable) Haskell source code? |
2021-08-02 16:41:58 +0200 | fendor_ | fendor |
2021-08-02 16:42:36 +0200 | <Lycurgus> | fuzzer? is that like an obfuscator? |
2021-08-02 16:43:15 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:43:17 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 16:43:30 +0200 | <amesgen[m]> | basically an `Arbitrary` instance for Haskell source code, not really related to obfuscation |
2021-08-02 16:43:45 +0200 | <Athas> | It's not difficult to generate parseable source code when you have a grammar. The problem is that the (vast) majority of those programs would not be type correct. |
2021-08-02 16:44:11 +0200 | <Athas> | It's much easier to do this for C (as in csmith). |
2021-08-02 16:44:20 +0200 | <amesgen[m]> | type correctness is not that important, I want to fuzz source code formatters |
2021-08-02 16:45:18 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:ce6e:8d5b:412c:109f) |
2021-08-02 16:45:23 +0200 | <merijn> | oof |
2021-08-02 16:45:28 +0200 | <merijn> | RIP your sanity then :p |
2021-08-02 16:45:37 +0200 | <merijn> | I don't think such a thing exists atm |
2021-08-02 16:46:02 +0200 | <merijn> | It shouldn't be too hard to invent something, but thinking about testing it gives me nightmares :p |
2021-08-02 16:46:04 +0200 | <amesgen[m]> | I saw something like this for Scala, and it found a lot of weird errors |
2021-08-02 16:46:04 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-08-02 16:46:19 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-08-02 16:46:22 +0200 | Lycurgus | makes a psychological adjustment |
2021-08-02 16:47:33 +0200 | <nshepperd> | (a chinese room for functions? isn't that everything a computer does?) |
2021-08-02 16:47:57 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-08-02 16:48:58 +0200 | <amesgen[m]> | FTR: https://github.com/alexknvl/fuzzball <- the scala (or dotty, rather) fuzzer |
2021-08-02 16:50:33 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 16:50:42 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 16:51:38 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 265 seconds) |
2021-08-02 16:52:56 +0200 | <Lycurgus> | i c, so it's an approach alternative to quickcheck oder; another culture clash thing |
2021-08-02 16:52:58 +0200 | reumeth | (~reumeth@user/reumeth) (Ping timeout: 256 seconds) |
2021-08-02 16:54:42 +0200 | <Lycurgus> | nshepperd, an abstract conceptual computer perhaps |
2021-08-02 16:55:21 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-02 16:55:30 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 265 seconds) |
2021-08-02 16:56:16 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-08-02 16:56:25 +0200 | <Lycurgus> | gedanken versuch vs real thing |
2021-08-02 16:56:34 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 16:56:59 +0200 | mastarija__ | (~mastarija@31.217.8.174) (Quit: Leaving) |
2021-08-02 16:58:50 +0200 | <merijn> | Lycurgus: Not really |
2021-08-02 16:58:57 +0200 | <merijn> | Or maybe |
2021-08-02 16:59:30 +0200 | <merijn> | Lycurgus: quickcheck happens at the "I'm programming level" where you have access to code |
2021-08-02 16:59:47 +0200 | <merijn> | fuzzing is more about "throwing random inputs at programs and see if they crash" |
2021-08-02 17:00:02 +0200 | <merijn> | So it tends to be more black-box |
2021-08-02 17:00:15 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 17:00:47 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 17:02:17 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-02 17:03:26 +0200 | <merijn> | At which point was <$> moved into Prelude? I'm getting a redundant import warning on GHC 8.8 |
2021-08-02 17:03:36 +0200 | <merijn> | (for Control.Applicative) |
2021-08-02 17:03:47 +0200 | chris_ | (~chris@81.96.113.213) |
2021-08-02 17:03:54 +0200 | tungki | (~tngk@subs30-116-206-14-53.three.co.id) (Ping timeout: 240 seconds) |
2021-08-02 17:04:04 +0200 | <Lycurgus> | merijn, exactly |
2021-08-02 17:04:07 +0200 | favonia | (~favonia@user/favonia) (Quit: Leaving) |
2021-08-02 17:04:52 +0200 | <merijn> | Lycurgus: quickcheck is generally more grey/white box testing |
2021-08-02 17:05:40 +0200 | <Lycurgus> | so you think black box hs code testing makes sense? |
2021-08-02 17:06:04 +0200 | <merijn> | He wants to blackbox test Haskell code formatters |
2021-08-02 17:06:04 +0200 | <Athas> | merijn: GHC 7.10 implemented the Functor-Applicative-Monad proposal I think, so surely it was before then? |
2021-08-02 17:06:13 +0200 | phma_ | phma |
2021-08-02 17:06:13 +0200 | <merijn> | Athas: No |
2021-08-02 17:06:20 +0200 | <merijn> | Athas: Because 8.0 compiles fine |
2021-08-02 17:06:25 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-02 17:06:30 +0200 | <merijn> | I don't support pre-8.0 anyway, so I would've removed it then |
2021-08-02 17:06:34 +0200 | <geekosaur> | Athas, no, moving it to Prelude happened later |
2021-08-02 17:06:53 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 17:07:00 +0200 | <merijn> | Lycurgus: Whether those Haskell code formatters are written in Haskell was unspecified and not really relevant for purposes of testing them |
2021-08-02 17:07:02 +0200 | <Athas> | merijn: out of curiosity, what are you hacking on? |
2021-08-02 17:07:08 +0200 | <geekosaur> | but I don't know exactly when |
2021-08-02 17:07:27 +0200 | <merijn> | Athas: Finally updating the CI for some of my packages so I can, you know, release 9.0 and 9.2 compatible versions :p |
2021-08-02 17:08:18 +0200 | <merijn> | I guess it was moved in 8.8, because 8.4 and 8.6 work too >.> |
2021-08-02 17:08:31 +0200 | <Athas> | Oh right, I like your website for this project: http://www.snet-home.org/ |
2021-08-02 17:08:58 +0200 | <merijn> | Athas: That package is dead anyway, stopped getting paid for that in 2012 :p |
2021-08-02 17:10:22 +0200 | Guest72 | (~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
2021-08-02 17:10:34 +0200 | <merijn> | oh, wait |
2021-08-02 17:10:46 +0200 | <merijn> | Maybe the real problem isn't "<$> moved to Prelude |
2021-08-02 17:11:04 +0200 | <merijn> | Maybe my real problem is: "When did -Wunused-imports move into -Wall or -Wcompat" |
2021-08-02 17:11:27 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
2021-08-02 17:11:33 +0200 | <c_wraith> | I remember unused imports being part of -Wall back in 6.8 |
2021-08-02 17:11:52 +0200 | <merijn> | ok, so then it *is* the problem of when was <$> moved :p |
2021-08-02 17:13:23 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 265 seconds) |
2021-08-02 17:14:32 +0200 | <Athas> | I think GHC sometimes tweaks the rules for when an import is unused. |
2021-08-02 17:14:51 +0200 | <Athas> | I was surprised at some point that the property isn't "if this import can be removed and the program still works, then it is redundant". |
2021-08-02 17:14:52 +0200 | <merijn> | Sure, but I'm pretty sure <$> went into Prelude in recent history |
2021-08-02 17:15:29 +0200 | <Athas> | Yeah, sometime between 2013 and 2021, because I remember having to import some module to get it when I first started writing Haskell every day. |
2021-08-02 17:16:54 +0200 | tungki | (~tngk@subs30-116-206-14-53.three.co.id) |
2021-08-02 17:17:02 +0200 | <Athas> | It was added in base 4.8. |
2021-08-02 17:17:06 +0200 | tungki | (~tngk@subs30-116-206-14-53.three.co.id) (Client Quit) |
2021-08-02 17:17:15 +0200 | <Athas> | That's 7.10. |
2021-08-02 17:18:58 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-08-02 17:18:59 +0200 | <merijn> | Then why do my 8.0-8.6 tests work >.< |
2021-08-02 17:19:41 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds) |
2021-08-02 17:21:50 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-02 17:23:17 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
2021-08-02 17:23:51 +0200 | Ariakenom | (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer) |
2021-08-02 17:25:26 +0200 | acidjnk_new | (~acidjnk@p5487d90a.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2021-08-02 17:26:38 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) |
2021-08-02 17:33:02 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 17:34:30 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-08-02 17:34:46 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 17:39:43 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 17:44:22 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 272 seconds) |
2021-08-02 17:46:36 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:ce6e:8d5b:412c:109f) (Quit: WeeChat 2.8) |
2021-08-02 17:46:54 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 272 seconds) |
2021-08-02 17:47:01 +0200 | <lechner> | sm: Hi, I may try to migrate the Debian Wiki from MoinMoin. Have you kept up, by ony chance, on the best work-around for the missing pandoc reader? Thanks! https://github.com/jgm/pandoc/issues/185 |
2021-08-02 17:47:22 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
2021-08-02 17:48:16 +0200 | <merijn> | FML |
2021-08-02 17:48:31 +0200 | <merijn> | Apparently 8.0 doesn't yet support "-Wwarn=" >.> |
2021-08-02 17:48:41 +0200 | mei | (~mei@user/mei) |
2021-08-02 17:50:04 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 17:53:06 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 17:53:28 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 17:53:55 +0200 | mei | (~mei@user/mei) (Quit: mei) |
2021-08-02 17:54:12 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-08-02 17:55:09 +0200 | <myShoggoth> | I will be streaming HF Office Hours in a few minutes! https://www.twitch.tv/myshoggoth |
2021-08-02 17:55:17 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 17:55:33 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:01:40 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 18:01:53 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:02:36 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 276 seconds) |
2021-08-02 18:03:20 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) |
2021-08-02 18:06:06 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 18:06:45 +0200 | euouae | (~euouae@user/euouae) |
2021-08-02 18:07:05 +0200 | <euouae> | Hello is cabal using nix style module system now ? |
2021-08-02 18:07:15 +0200 | <euouae> | my cabal is about a year old and I want to update |
2021-08-02 18:07:47 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 18:08:30 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:08:34 +0200 | markpythonicbitc | (~textual@50.228.44.6) (Ping timeout: 240 seconds) |
2021-08-02 18:09:09 +0200 | <davean> | euouae: Uh, has for years? |
2021-08-02 18:09:26 +0200 | <davean> | since 2016? |
2021-08-02 18:09:33 +0200 | <euouae> | By default now, right ? My man pages say it’s experimental |
2021-08-02 18:09:43 +0200 | <euouae> | I was reading my man pages to learn some cabal |
2021-08-02 18:09:49 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:10:17 +0200 | <euouae> | Is there a way to download docs for offline reading for cabal ? |
2021-08-02 18:10:55 +0200 | <davean> | Think that was more like 2 years ago, not sure the exact date. What version are you on? And what docs do you want? |
2021-08-02 18:11:31 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:11:37 +0200 | <davean> | Yah, looks like nix stuff went default in Aug 2019 |
2021-08-02 18:12:03 +0200 | <euouae> | Right now my laptop is turned off |
2021-08-02 18:12:22 +0200 | <euouae> | I want the latest cabal version and docs |
2021-08-02 18:12:45 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:13:02 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 245 seconds) |
2021-08-02 18:13:15 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 18:13:15 +0200 | <davean> | https://www.haskell.org/cabal/download.html but you can generally just do "cabal install cabal-install" |
2021-08-02 18:13:50 +0200 | <sclv> | for docs: https://readthedocs.org/projects/cabal/downloads/ |
2021-08-02 18:14:16 +0200 | <sclv> | i note there's no downloads for the 3.4 tag tho, not sure how those are created! |
2021-08-02 18:14:55 +0200 | <euouae> | That’s okay thank you |
2021-08-02 18:15:17 +0200 | <euouae> | Can I ask cabal with the dry run to tell me the total MB to be downloaded. |
2021-08-02 18:15:19 +0200 | <euouae> | ? |
2021-08-02 18:15:31 +0200 | <sclv> | no |
2021-08-02 18:15:33 +0200 | gambpang | (~ian@207.181.230.156) |
2021-08-02 18:15:44 +0200 | delYsid | (~user@84-115-55-45.cable.dynamic.surfer.at) |
2021-08-02 18:15:53 +0200 | <sclv> | dry run is an offline mode -- to know how much it would need to download it would need to query sizes |
2021-08-02 18:16:51 +0200 | IgorZhiltsov | (~IgorZhilt@109-252-65-176.nat.spd-mgts.ru) |
2021-08-02 18:17:02 +0200 | <euouae> | Oh ok, but can I query otherwise ? |
2021-08-02 18:17:51 +0200 | <sclv> | there's no feature that tells you ahead of time how much it will download |
2021-08-02 18:17:56 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-08-02 18:18:05 +0200 | <euouae> | Hmm okay |
2021-08-02 18:18:45 +0200 | <euouae> | For a year old installation what can I expect? One GB? |
2021-08-02 18:19:15 +0200 | <sclv> | what do you mean, if you type `cabal install cabal-install`? |
2021-08-02 18:19:15 +0200 | pavonia | (~user@user/siracusa) |
2021-08-02 18:19:37 +0200 | <sclv> | cabal packages are just source, they're tiny |
2021-08-02 18:19:47 +0200 | <sclv> | the cost will largely be in terms of what's generated by ghc in binary size |
2021-08-02 18:20:02 +0200 | econo | (uid147250@user/econo) |
2021-08-02 18:20:08 +0200 | <sclv> | i'd estimate far less than a gig, on the order of a few hundred megs, but its a guess |
2021-08-02 18:20:25 +0200 | <sclv> | or you can just download the binary itself from the link davean gave, which is tiny, and involves no additional footprint |
2021-08-02 18:20:25 +0200 | <euouae> | Nice thank you |
2021-08-02 18:22:03 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:22:14 +0200 | <davean> | euouae: Yah, you're talking single digit MiB on the high side |
2021-08-02 18:22:26 +0200 | <davean> | euouae: I don't think anyone wrote that because no one cared to check :) |
2021-08-02 18:22:33 +0200 | <euouae> | Hehe ooh okay |
2021-08-02 18:22:57 +0200 | <euouae> | Yeah Internet can be expensive in the absence of competition |
2021-08-02 18:23:39 +0200 | <davean> | Understood, Infact I've had that problem, so I actually did a thing to download all of hackage - everything you might install with cabal install - in 1.4GiB |
2021-08-02 18:23:54 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-08-02 18:23:58 +0200 | <davean> | Mine is more expensive in non-monitary cost - access can be limited |
2021-08-02 18:24:13 +0200 | <euouae> | I see |
2021-08-02 18:24:44 +0200 | <euouae> | Ok if all of hackage is that much then I think I’m good hehe |
2021-08-02 18:25:30 +0200 | <davean> | Well I do a lot of compression, but I also include the ancient versions, so its not a bad estimate of how large what you'd touch of it without hte compression is |
2021-08-02 18:25:39 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:25:39 +0200 | <davean> | (If you did a LOT of Haskell) |
2021-08-02 18:25:52 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:26:36 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:26:54 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:26:58 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:27:30 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Ping timeout: 272 seconds) |
2021-08-02 18:29:31 +0200 | IgorZhiltsov | (~IgorZhilt@109-252-65-176.nat.spd-mgts.ru) (Quit: Client closed) |
2021-08-02 18:30:15 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:32:58 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:33:11 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:33:12 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
2021-08-02 18:34:18 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:34:27 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
2021-08-02 18:34:31 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:34:48 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 18:34:53 +0200 | azeem | (~azeem@176.200.220.247) (Ping timeout: 252 seconds) |
2021-08-02 18:35:19 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:36:08 +0200 | <dminuoso> | davean: what was the name of that again? |
2021-08-02 18:36:10 +0200 | azeem | (~azeem@176.200.220.247) |
2021-08-02 18:36:55 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:37:00 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 272 seconds) |
2021-08-02 18:38:18 +0200 | jippiedoe | (~david@2a02-a448-48bd-1-6c05-d94f-4fec-758a.fixed6.kpn.net) (Ping timeout: 250 seconds) |
2021-08-02 18:39:22 +0200 | <davean> | dminuoso: skete |
2021-08-02 18:39:32 +0200 | <davean> | well, skete-haskell specificly for the one for Hackge :-p |
2021-08-02 18:39:43 +0200 | Guest72 | (~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Ping timeout: 246 seconds) |
2021-08-02 18:39:57 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:40:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-02 18:40:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 18:40:39 +0200 | <euouae> | Are lenses “atomic”? |
2021-08-02 18:40:46 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 18:40:56 +0200 | <davean> | euouae: what does that even mean? |
2021-08-02 18:40:56 +0200 | <dminuoso> | What does "atomic" mean? |
2021-08-02 18:41:00 +0200 | <euouae> | or is atomicity someone else’s job? |
2021-08-02 18:41:13 +0200 | <euouae> | well the put get is what I’m thinking of |
2021-08-02 18:41:25 +0200 | <davean> | Thats oen of the laws |
2021-08-02 18:41:28 +0200 | <euouae> | of course the laws are the laws. Maybe they guarantee atomicity |
2021-08-02 18:41:39 +0200 | <davean> | euouae: I think you're confused |
2021-08-02 18:41:47 +0200 | <euouae> | Thread safe is what I’m trying to say |
2021-08-02 18:41:48 +0200 | <davean> | Haskell is a functional language |
2021-08-02 18:42:10 +0200 | <davean> | Yes, thats mostly meaningless - for example you don't mutate in Haskell, you create an edited copy |
2021-08-02 18:42:24 +0200 | <euouae> | Ooh I see, so the changes from put are not reflected elsewhere |
2021-08-02 18:42:39 +0200 | <euouae> | it truly is like the record update |
2021-08-02 18:42:45 +0200 | <davean> | yes |
2021-08-02 18:42:49 +0200 | <davean> | You can have references to stuff, like MVars |
2021-08-02 18:42:52 +0200 | <davean> | and you can lens into MVars |
2021-08-02 18:43:10 +0200 | <davean> | but it works the same way there. Sure the changes are reflected elsewhere, but its the same, you made a copy and updated the reference |
2021-08-02 18:43:21 +0200 | <euouae> | No race conditions ? |
2021-08-02 18:43:46 +0200 | <dminuoso> | euouae: Right, except for the part that they are composable, first-class, and generalize to things like Folds or Traverses - things you dont get from record accessors. :-) |
2021-08-02 18:43:50 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-02 18:43:53 +0200 | <dminuoso> | No race conditions. |
2021-08-02 18:43:56 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-08-02 18:44:34 +0200 | <euouae> | Oh yeah that true, the composabilityhas me stumped |
2021-08-02 18:45:03 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 18:45:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-02 18:45:31 +0200 | <euouae> | As for folds— I don’t know that one yet. It’s cool reading papers though, I find that sometimes they help a lot to read the docs |
2021-08-02 18:45:47 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) |
2021-08-02 18:46:31 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 18:46:42 +0200 | reumeth | (~reumeth@user/reumeth) |
2021-08-02 18:46:43 +0200 | <dminuoso> | % foldMapOf (folded . both . _Just) Sum [(Just 21, Just 21)] |
2021-08-02 18:46:43 +0200 | <yahb> | dminuoso: Sum {getSum = 42} |
2021-08-02 18:47:10 +0200 | <dminuoso> | It's the same idea as foldr. Collapsing an optic that has multiple targets into some value. |
2021-08-02 18:47:26 +0200 | <dminuoso> | Or perhaps better phrased "consuming" |
2021-08-02 18:47:41 +0200 | <euouae> | Oh nice |
2021-08-02 18:47:48 +0200 | <delYsid> | I dont get how re from the lens package is useful. Or reuse, for that matter. If it cant modify, why is reuse _Foo more interesting then uses Foo? |
2021-08-02 18:48:16 +0200 | <delYsid> | er, gets Foo I mean |
2021-08-02 18:48:42 +0200 | chris_ | (~chris@81.96.113.213) |
2021-08-02 18:49:11 +0200 | <delYsid> | How do I change a constructor somewhere deep in a structure? |
2021-08-02 18:49:38 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) |
2021-08-02 18:49:53 +0200 | <dminuoso> | delYsid: With over? |
2021-08-02 18:50:47 +0200 | <dminuoso> | delYsid: Regarding reuse, it's probably more useful for non-trivial prisms. The documentation has a slightly better example |
2021-08-02 18:50:50 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2021-08-02 18:50:53 +0200 | <dminuoso> | % 6 ^.re (_Left.unto succ) |
2021-08-02 18:50:53 +0200 | <yahb> | dminuoso: Left 7 |
2021-08-02 18:51:39 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-08-02 18:52:12 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 18:52:15 +0200 | <dminuoso> | If you happen to already hold the prism in your hand, then I think reuse has some value. But if not, you might as well just use `use (Left . succ)` |
2021-08-02 18:52:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 18:52:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 18:52:58 +0200 | chris_ | (~chris@81.96.113.213) (Ping timeout: 240 seconds) |
2021-08-02 18:53:10 +0200 | <dminuoso> | Or perhaps with some Iso you hold in your hand. |
2021-08-02 18:54:10 +0200 | mei | (~mei@user/mei) |
2021-08-02 18:54:24 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-02 18:54:42 +0200 | pe200012 | (~pe200012@113.105.10.33) (Ping timeout: 245 seconds) |
2021-08-02 18:54:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 18:55:14 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
2021-08-02 19:00:20 +0200 | azeem | (~azeem@176.200.220.247) (Read error: Connection reset by peer) |
2021-08-02 19:01:19 +0200 | jmorris | (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-02 19:01:39 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-08-02 19:02:13 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-08-02 19:03:35 +0200 | mattil | (~mattilinn@87-92-172-201.rev.dnainternet.fi) |
2021-08-02 19:04:13 +0200 | y04nn | (~y04nn@91.193.4.154) |
2021-08-02 19:05:07 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-02 19:05:30 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 272 seconds) |
2021-08-02 19:05:36 +0200 | mattil | (~mattilinn@87-92-172-201.rev.dnainternet.fi) (Remote host closed the connection) |
2021-08-02 19:06:01 +0200 | mattil | (~mattilinn@87-92-172-201.rev.dnainternet.fi) |
2021-08-02 19:07:49 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-02 19:07:59 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-02 19:07:59 +0200 | allbery_b | geekosaur |
2021-08-02 19:08:52 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-08-02 19:11:50 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer) |
2021-08-02 19:15:02 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-08-02 19:16:22 +0200 | <tromp> | i don't understand the compiler error i get on https://paste.ofcode.org/DBck6pC68BLWgyrAcsn9Gq |
2021-08-02 19:16:45 +0200 | <tromp> | Legality.hs:105:27: error: Variable not in scope: args :: t0 [Char] |
2021-08-02 19:16:46 +0200 | <tromp> | | |
2021-08-02 19:16:46 +0200 | <tromp> | 105 | verbose = "-v" `elem` args |
2021-08-02 19:16:46 +0200 | <tromp> | | ^^^^ |
2021-08-02 19:17:11 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
2021-08-02 19:17:19 +0200 | <tromp> | how is args not in scope there? |
2021-08-02 19:17:37 +0200 | <dminuoso> | tromp: You have to use let bindings, the where is part of the main declaration. |
2021-08-02 19:17:57 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
2021-08-02 19:18:00 +0200 | <dminuoso> | i.e. do { args <- getArgs; let legality = map (\fen -> fen ++ "\n " ++ research verbose (readFEN fen)); ... } |
2021-08-02 19:18:47 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-02 19:19:49 +0200 | <tromp> | i tried a let .... in block earlier, but it failed because let and in were at same indentation level |
2021-08-02 19:20:00 +0200 | <tromp> | indenting the in further fixes it |
2021-08-02 19:20:07 +0200 | <dminuoso> | tromp: drop the `in` |
2021-08-02 19:20:16 +0200 | <dminuoso> | do-expressions support a special form of let |
2021-08-02 19:20:32 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Ping timeout: 252 seconds) |
2021-08-02 19:20:34 +0200 | <dminuoso> | % main = do { args <- getArgs; let len = length args; print len } |
2021-08-02 19:20:34 +0200 | <yahb> | dminuoso: ; <interactive>:58:63: error: parse error on input `}' |
2021-08-02 19:21:15 +0200 | <tromp> | i tried |
2021-08-02 19:21:16 +0200 | <tromp> | let legality = map (\fen -> fen ++ "\n " ++ research verbose (readFEN fen)) |
2021-08-02 19:21:16 +0200 | <tromp> | let verbose = "-v" `elem` args |
2021-08-02 19:21:16 +0200 | <tromp> | getContents >>= mapM_ putStrLn . legality . filter (not . null) . lines |
2021-08-02 19:21:37 +0200 | <tromp> | but that fails with error: Variable not in scope: verbose :: Bool |
2021-08-02 19:22:00 +0200 | <tromp> | oh, need to reverse order? |
2021-08-02 19:22:02 +0200 | <dminuoso> | tromp: drop the second let |
2021-08-02 19:22:08 +0200 | <dminuoso> | and keep the alignment |
2021-08-02 19:22:46 +0200 | <dminuoso> | This way let sort of looks like where, allowing you to write multiple potentially recursive definitions, but sitting in the middle of a do expression |
2021-08-02 19:23:12 +0200 | <tromp> | ah yes, that works. thanks! |
2021-08-02 19:31:28 +0200 | nf | (~n@monade.li) (Quit: Fairfarren.) |
2021-08-02 19:31:35 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 19:31:57 +0200 | nf | (~n@monade.li) |
2021-08-02 19:32:17 +0200 | euouae | (~euouae@user/euouae) (Quit: Client closed) |
2021-08-02 19:33:38 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
2021-08-02 19:34:28 +0200 | bgamari | (~bgamari@2001:470:e438::1) (Ping timeout: 256 seconds) |
2021-08-02 19:36:07 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-08-02 19:37:05 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-08-02 19:37:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-02 19:40:58 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 272 seconds) |
2021-08-02 19:41:33 +0200 | boggin | (~mikey@tyhog-gua01a-216.cronon.net) |
2021-08-02 19:44:43 +0200 | mikey | (~mikey@79.140.120.237) |
2021-08-02 19:47:05 +0200 | boggin | (~mikey@tyhog-gua01a-216.cronon.net) (Ping timeout: 258 seconds) |
2021-08-02 19:49:01 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-02 19:51:56 +0200 | euouae | (~euouae@user/euouae) |
2021-08-02 19:53:01 +0200 | <energizer> | I generally favor replacing boolean flag arguments with two different functions. There are some blog posts about that, but they're mostly about, like, java. What do haskellers have to say about this? |
2021-08-02 19:53:12 +0200 | <euouae> | I updated cabal with `cabal install cabal-install` and I get: 'Warning: Could not create a symlink in ~/.cabal/bin for cabal because the file exists there already but is not managed by cabal. You can create a symlink for this executable manually if you wish. The executable file has been installed at ~/.cabal/bin/cabal' |
2021-08-02 19:53:28 +0200 | <euouae> | from 2.4.0.1 to 3.4.0.0 |
2021-08-02 19:53:53 +0200 | bgamari | (~bgamari@72.65.104.136) |
2021-08-02 19:54:04 +0200 | <sclv> | ok so that warning should make sense to you and explain what happened |
2021-08-02 19:54:27 +0200 | <sclv> | The old binary is in the first location and the new one in the second location |
2021-08-02 19:54:35 +0200 | <sclv> | Manage em as you see fit |
2021-08-02 19:54:38 +0200 | <euouae> | Iisn't that the same location? |
2021-08-02 19:55:09 +0200 | <sclv> | hrm, good point? |
2021-08-02 19:56:07 +0200 | <sclv> | The install logs should give more detail where everything ended up |
2021-08-02 19:57:56 +0200 | <euouae> | It ended up in ~/.cabal/bin/cabal, I also checked with --version previously. Ok so the warning is a bit of a dud then right? |
2021-08-02 19:58:18 +0200 | <sclv> | yeah must br |
2021-08-02 19:58:31 +0200 | <euouae> | Do I just need to modify $PATH or is there some other step I need as well to have other tools that use cabal to use 3.4? |
2021-08-02 19:59:04 +0200 | <sclv> | just path |
2021-08-02 19:59:06 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 19:59:18 +0200 | <euouae> | great, thank you |
2021-08-02 19:59:57 +0200 | <sm> | lechner: no, I didn't do any more work on it |
2021-08-02 20:01:55 +0200 | <geekosaur> | energizer: look up "boolean blindness"; much of the discussion is about Haskell, because it's so easy to overcome in Haskell |
2021-08-02 20:03:31 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving) |
2021-08-02 20:03:35 +0200 | MoC | (~moc@user/moc) |
2021-08-02 20:04:00 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
2021-08-02 20:06:15 +0200 | <energizer> | geekosaur: looking |
2021-08-02 20:07:27 +0200 | <monochrom> | I am surprised that there are now even blog posts on using booleans. |
2021-08-02 20:07:53 +0200 | <monochrom> | Is there no end to this infinite descent into depravity? |
2021-08-02 20:08:27 +0200 | <monochrom> | "Hi all I need a blog post that explains the number 1." "Hey there you're in luck I've just written one!" |
2021-08-02 20:10:02 +0200 | <euouae> | flooding the search engines with crappy blog posts is the work of big publishers |
2021-08-02 20:10:22 +0200 | <euouae> | ... at least that's what I came to believe after trying to search for some college stats stuff |
2021-08-02 20:10:55 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-02 20:13:11 +0200 | jess | (~jess@libera/staff/jess) () |
2021-08-02 20:13:25 +0200 | <euouae> | My blog depresses me because it's all wrong and needs a total rewrite |
2021-08-02 20:13:47 +0200 | <monochrom> | Use the subtraction method. >:) |
2021-08-02 20:14:04 +0200 | <euouae> | Remove until it's correct? |
2021-08-02 20:14:30 +0200 | <monochrom> | Every rewrite begins with one bold step of deletion. |
2021-08-02 20:15:12 +0200 | <monochrom> | Even openFile filename WriteMode begins with one bold step of erasure. |
2021-08-02 20:15:24 +0200 | <monochrom> | s/Even/Every/ |
2021-08-02 20:15:44 +0200 | <euouae> | without enthusiasm you don't get those blog posts, and enthusiasm wanes as knowledge increases :P |
2021-08-02 20:17:05 +0200 | <monochrom> | And knowledge wanes as enthusiasm increases. |
2021-08-02 20:17:21 +0200 | <euouae> | :D:D |
2021-08-02 20:17:27 +0200 | haskell-lurk | (~haskell-l@78.155.54.115) (Quit: Client closed) |
2021-08-02 20:17:34 +0200 | <monochrom> | This is why so many blog posts and the haskell wiki are of utterly poor quality in terms of pedagogy. |
2021-08-02 20:18:19 +0200 | <dsal> | energizer: Can you expand on "boolean flag arguments"? Do you mean cli args? Or just function args. Boolean blindness is real, so there's generally a better, clearer way. |
2021-08-02 20:18:50 +0200 | <monochrom> | Well, knowledge of the author doesn't wane. But knowledge that the audience can actually glean from the enthusiastically incoherent writing wanes. |
2021-08-02 20:19:11 +0200 | <energizer> | dsal: yeah i mean function arguments |
2021-08-02 20:19:45 +0200 | <euouae> | monochrom: I'm with you on that. It's something I like thinking about, how to efficiently transmit knowledge |
2021-08-02 20:21:17 +0200 | <dsal> | energizer: Ah, yeah. Even knowing about boolean blindness, I had a function that took a bool I had to look up docs for every time I used it before fixing the api |
2021-08-02 20:22:37 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-08-02 20:22:54 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-08-02 20:23:07 +0200 | <monochrom> | I am happy if a certain parameter really has only two legal values. I'm unhappy if it is hard to remember "so True means what? False means what?" |
2021-08-02 20:23:51 +0200 | <monochrom> | There there are cases where it is easy to remember and/or guess. I don't always object to booleans. |
2021-08-02 20:24:11 +0200 | <monochrom> | s/There there/But there/ # Clearly I have buffering problems. |
2021-08-02 20:25:33 +0200 | <euouae> | hmm my cabal manual is out of sync with the cabal version |
2021-08-02 20:25:35 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2021-08-02 20:25:48 +0200 | <euouae> | Guess I'll download the docs from the link I was given here previously |
2021-08-02 20:26:15 +0200 | <dsal> | Sure, yes. Boolean is not always wrong. I was implementing a protocol that had a bit for resuming sessions. I could never remember whether true meant use an existing one or make a new one. |
2021-08-02 20:26:41 +0200 | <monochrom> | "when :: Bool -> IO a -> IO a" is one of the good cases because the name "when" already helps you, for example. |
2021-08-02 20:26:49 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 20:27:12 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-02 20:27:17 +0200 | <monochrom> | Heh yeah that one is a tougher one. |
2021-08-02 20:27:28 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-08-02 20:27:52 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-02 20:28:05 +0200 | <monochrom> | Clearly, "should I reuse or create?" the answer is "yes". >:) |
2021-08-02 20:29:33 +0200 | <monochrom> | Maybe works better for "coffee or tea?" |
2021-08-02 20:30:26 +0200 | <monochrom> | People in Hong Kong are actually fond of blending coffee with tea, BTW. |
2021-08-02 20:30:34 +0200 | <dsal> | We're trained to map binary concepts to true/false/file_not_found and never look to see if there's a better way. |
2021-08-02 20:31:22 +0200 | <euouae> | quantum coffee |
2021-08-02 20:32:08 +0200 | gambpang | (~ian@207.181.230.156) (Ping timeout: 252 seconds) |
2021-08-02 20:32:59 +0200 | <euouae> | I loved discovering how Maybe is an Applicative that can be summed |
2021-08-02 20:33:31 +0200 | <euouae> | as someone who likes boolean tricks... not entirely related to boolean blindness I suppose |
2021-08-02 20:33:48 +0200 | <euouae> | but you could emulate Maybe with a tuple (Bool, a) |
2021-08-02 20:34:17 +0200 | <sclv> | not really |
2021-08-02 20:34:34 +0200 | <sclv> | for `Nothing` what do you put in the `a` slot? |
2021-08-02 20:34:51 +0200 | <euouae> | That right |
2021-08-02 20:34:53 +0200 | <sclv> | you need a sum, not a product |
2021-08-02 20:35:01 +0200 | <sclv> | so `Maybe a =~ Either () a` |
2021-08-02 20:35:15 +0200 | <euouae> | okay so fair enough, this is another kind of blindness |
2021-08-02 20:35:27 +0200 | <euouae> | just because you have isomorphism of types doesn't mean you should always choose the same representative |
2021-08-02 20:38:10 +0200 | michael92342 | (~mikey@tyhog-gua01a-216.cronon.net) |
2021-08-02 20:39:17 +0200 | <euouae> | although i have cabal 3.4, in cabal init I get cabal 2.4 mentioned |
2021-08-02 20:39:28 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Quit: Atum_) |
2021-08-02 20:39:36 +0200 | <euouae> | In the cabal file of my project, cabal-version: 2.4 |
2021-08-02 20:39:45 +0200 | <sclv> | that's not cabal-install version |
2021-08-02 20:39:48 +0200 | <sclv> | that's version spec for the cabal file itself! |
2021-08-02 20:39:58 +0200 | <euouae> | Ah alright |
2021-08-02 20:40:11 +0200 | <euouae> | It jsut happened to coincide with my previous cabal version |
2021-08-02 20:40:12 +0200 | <sclv> | Those evolve at a different pace, and the init doesn't pick latest by default -- rather it tries to maintain a backwards compat range |
2021-08-02 20:40:25 +0200 | <sclv> | if you use newer features, cabal might warn you that it needs bumping |
2021-08-02 20:40:38 +0200 | <euouae> | nice |
2021-08-02 20:40:47 +0200 | <sclv> | yeah, they used to coincide, but it was a bad idea to have protocol and exe versions evolve in lockstep |
2021-08-02 20:41:08 +0200 | mikey | (~mikey@79.140.120.237) (Ping timeout: 272 seconds) |
2021-08-02 20:41:29 +0200 | <euouae> | I also got an idex error |
2021-08-02 20:42:08 +0200 | <euouae> | Warning: Parsing the index cache failed (Data.Binary.Get.runGet at position 16; Non-matching structure hashes: ... expected: ...). Trying to regenerate the index cache... |
2021-08-02 20:42:18 +0200 | <euouae> | Is this related to cache stored out of my project directory |
2021-08-02 20:42:58 +0200 | <euouae> | Hmm I think so. I tried a totally new project and got no warnings |
2021-08-02 20:43:09 +0200 | <euouae> | alright I'll go now. Thanks for all the help |
2021-08-02 20:43:10 +0200 | euouae | (~euouae@user/euouae) (Quit: euouae) |
2021-08-02 20:43:43 +0200 | <monochrom> | This is cabal's own cache somewhere in $HOME/.cabal, and it is about data saved by "cabal update". |
2021-08-02 20:44:18 +0200 | <monochrom> | You get this warning (OK, I get this warning) when I switch between two versions of cabal-install. |
2021-08-02 20:44:35 +0200 | <sclv> | they left :-) |
2021-08-02 20:44:45 +0200 | <monochrom> | Ah darn. |
2021-08-02 20:45:05 +0200 | <sclv> | i will note this irritates me when i'm developing cabal and keep switching between my installed and my testing version |
2021-08-02 20:45:15 +0200 | <sclv> | i know i could pass some flags to the test version to set a different repo, but its a pita |
2021-08-02 20:45:26 +0200 | <sclv> | (also sometimes nix-shell will switch out cabal install versions under me) |
2021-08-02 20:46:31 +0200 | <monochrom> | That gets pretty irritating, yeah. |
2021-08-02 20:47:28 +0200 | MQ-17J | (~MQ-17J@8.6.144.192) (Ping timeout: 272 seconds) |
2021-08-02 20:49:22 +0200 | <sclv> | just file a ticket :-) https://github.com/haskell/cabal/issues/7502 |
2021-08-02 20:49:42 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 245 seconds) |
2021-08-02 20:51:09 +0200 | bruceleewees | (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Remote host closed the connection) |
2021-08-02 20:52:00 +0200 | boggin | (~mikey@79.140.120.237) |
2021-08-02 20:52:11 +0200 | michael92342 | (~mikey@tyhog-gua01a-216.cronon.net) (Quit: Leaving) |
2021-08-02 21:00:37 +0200 | haskell-lurk | (~haskell-l@78.155.54.115) |
2021-08-02 21:02:36 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds) |
2021-08-02 21:03:03 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-08-02 21:03:17 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-08-02 21:06:31 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 21:08:22 +0200 | y04nn | (~y04nn@91.193.4.154) (Ping timeout: 272 seconds) |
2021-08-02 21:08:58 +0200 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-08-02 21:09:40 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-08-02 21:13:43 +0200 | <maerwald[m]> | I vote for reviving sandboxes |
2021-08-02 21:14:04 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 272 seconds) |
2021-08-02 21:17:17 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-02 21:17:29 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-02 21:18:33 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds) |
2021-08-02 21:18:52 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-08-02 21:24:16 +0200 | berberman_ | (~berberman@user/berberman) |
2021-08-02 21:24:18 +0200 | berberman | (~berberman@user/berberman) (Ping timeout: 240 seconds) |
2021-08-02 21:28:00 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 272 seconds) |
2021-08-02 21:29:56 +0200 | MoC | (~moc@user/moc) |
2021-08-02 21:32:28 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-02 21:33:05 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed) |
2021-08-02 21:33:59 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) |
2021-08-02 21:35:33 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-02 21:38:05 +0200 | <sclv> | that won't affect this issue at all |
2021-08-02 21:40:04 +0200 | nf | (~n@monade.li) (Quit: Fairfarren.) |
2021-08-02 21:40:06 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 21:40:17 +0200 | nf | (~n@monade.li) |
2021-08-02 21:40:31 +0200 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-08-02 21:40:33 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 258 seconds) |
2021-08-02 21:41:26 +0200 | mattil | (~mattilinn@87-92-172-201.rev.dnainternet.fi) (Quit: Leaving) |
2021-08-02 21:42:26 +0200 | alx741 | (~alx741@186.178.108.145) (Ping timeout: 252 seconds) |
2021-08-02 21:44:27 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-08-02 21:45:33 +0200 | y04nn | (~y04nn@91.193.4.154) |
2021-08-02 21:45:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
2021-08-02 21:46:24 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-02 21:46:35 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-02 21:49:53 +0200 | <thomasjm[m]> | hi all -- i made a little tool to help you profile your builds and show how long it takes GHC to compile each module in a pretty bar graph. feedback and bug reports welcome: https://github.com/codedownio/time-ghc-modules |
2021-08-02 21:55:41 +0200 | alx741 | (~alx741@181.196.69.121) |
2021-08-02 22:01:54 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-02 22:05:06 +0200 | <dsal> | This is neat. |
2021-08-02 22:05:31 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-02 22:07:00 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
2021-08-02 22:09:54 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds) |
2021-08-02 22:09:55 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-02 22:10:47 +0200 | <maerwald[m]> | Sorry, simplifier and parser have the same color in the example pic |
2021-08-02 22:10:59 +0200 | <maerwald[m]> | Which one is the expensive one? |
2021-08-02 22:11:54 +0200 | <dsal> | It looks like the colors are in order. |
2021-08-02 22:12:32 +0200 | <thomasjm[m]> | right, they're ordered in the legend by overall expensiveness. if you load the HTML report you can mouse over and tooltips will appear |
2021-08-02 22:13:05 +0200 | <Hecate> | thomasjm[m]: beautiful too, thank you so much :) |
2021-08-02 22:13:14 +0200 | <maerwald[m]> | Does the simplifier do cross module work? |
2021-08-02 22:13:20 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-08-02 22:15:34 +0200 | y04nn | (~y04nn@91.193.4.154) (Remote host closed the connection) |
2021-08-02 22:15:41 +0200 | <thomasjm[m]> | beats me, i wrote this so people who understand GHC can make my stuff build faster :P |
2021-08-02 22:15:59 +0200 | <dsal> | Maybe you should stop simplifying. |
2021-08-02 22:21:29 +0200 | vysn | (~vysn@user/vysn) |
2021-08-02 22:22:18 +0200 | <koz> | > foldMap show ("foo", 5) |
2021-08-02 22:22:19 +0200 | <lambdabot> | "5" |
2021-08-02 22:22:22 +0200 | <koz> | Sweet. |
2021-08-02 22:24:12 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-08-02 22:24:50 +0200 | agua | (~agua@2804:18:46:c3e6:1:0:7de0:dd8f) |
2021-08-02 22:25:08 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-08-02 22:26:16 +0200 | Core3678 | (~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625) |
2021-08-02 22:26:30 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9591e9224ac295505d06.dip0.t-ipconnect.de) |
2021-08-02 22:26:44 +0200 | pesada | (~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625) (Ping timeout: 256 seconds) |
2021-08-02 22:27:32 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 272 seconds) |
2021-08-02 22:28:27 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds) |
2021-08-02 22:29:26 +0200 | agua | (~agua@2804:18:46:c3e6:1:0:7de0:dd8f) (Ping timeout: 272 seconds) |
2021-08-02 22:31:56 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2) |
2021-08-02 22:33:55 +0200 | xrel | (~xrel@69.233.98.238) |
2021-08-02 22:34:12 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-02 22:37:44 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2021-08-02 22:38:04 +0200 | reumeth | (~reumeth@user/reumeth) (Ping timeout: 256 seconds) |
2021-08-02 22:38:18 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) |
2021-08-02 22:38:21 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-02 22:39:41 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-02 22:40:14 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-02 22:42:40 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
2021-08-02 22:44:34 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
2021-08-02 22:45:53 +0200 | <dsal> | I'm not sure how I feel about that... |
2021-08-02 22:46:27 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2021-08-02 22:46:34 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2021-08-02 22:47:03 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) |
2021-08-02 22:49:42 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2021-08-02 22:50:16 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Client Quit) |
2021-08-02 22:50:54 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) |
2021-08-02 22:51:04 +0200 | <johnw> | ("foo",5) is 5 with some contextual info |
2021-08-02 22:51:06 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-02 22:52:37 +0200 | <dsal> | Yeah, I think I've used it that way. Some thing are obvious if you look at them from one angle, but bizarre if you look from another. |
2021-08-02 22:53:47 +0200 | <dsal> | > view each . fmap show $ ("five", 5) |
2021-08-02 22:53:48 +0200 | <lambdabot> | "five5" |
2021-08-02 22:53:54 +0200 | <raehik> | I'm continually getting this mysterious "The exact Name 'f' is not in scope" error while trying to use deriving via. Anyone know what's going on? |
2021-08-02 22:54:15 +0200 | <dsal> | Is the exact Name 'f' in scope? |
2021-08-02 22:55:01 +0200 | <raehik> | :t f says nothing in scope |
2021-08-02 22:55:02 +0200 | <lambdabot> | error: parse error on input ‘in’ |
2021-08-02 22:55:20 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
2021-08-02 22:55:24 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2021-08-02 22:55:43 +0200 | <raehik> | I wrote one typeclass and did some standalone deriving vias for it. now I just wrote another, and I'm getting this error (which I was also getting previously, but thought it was due to multi params type classes) |
2021-08-02 22:56:16 +0200 | <raehik> | they're exactly the same apart from the function sig and name, totally lost from the error msg |
2021-08-02 22:56:32 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2021-08-02 22:56:44 +0200 | drd | (~drd@151.37.160.53) |
2021-08-02 23:00:27 +0200 | <raehik> | is there some deriving via magic going on that doesn't like lenses?? that's the only thing I can think of |
2021-08-02 23:02:39 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Remote host closed the connection) |
2021-08-02 23:03:17 +0200 | fendor | (~fendor@178.115.48.162.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-02 23:06:32 +0200 | <raehik> | urgh. I have no idea. Stupid Template Haskell stuff, really weird |
2021-08-02 23:07:00 +0200 | <raehik> | I separate the TH (only makeLenses!) and it Just Works. sigh |
2021-08-02 23:08:14 +0200 | <Hecate> | raehik: lesson of the day, TH is quirky and opaque |
2021-08-02 23:08:27 +0200 | <raehik> | oh no, I was wrong, ok less mad |
2021-08-02 23:08:35 +0200 | <raehik> | it *is* still broken and it wasn't TH. lol |
2021-08-02 23:08:59 +0200 | <raehik> | now it tells me "it was probably TH" but the module doesn't even have it enabled. stunning |
2021-08-02 23:12:08 +0200 | <dsal> | TH changes a few things. |
2021-08-02 23:13:43 +0200 | <c_wraith> | TH makes declaration order matter :( |
2021-08-02 23:14:24 +0200 | <raehik> | I know that TH impacts how things run. There is now no TH in this module, but the error message is quite useless |
2021-08-02 23:14:58 +0200 | <raehik> | I can't find any info on debugging deriving via online (I didn't know it could emit such errors) |
2021-08-02 23:15:26 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) |
2021-08-02 23:15:40 +0200 | son0p | (~ff@181.136.122.143) (Ping timeout: 272 seconds) |
2021-08-02 23:17:40 +0200 | <raehik> | ohhh hold on, 'f' might be from the lens |
2021-08-02 23:17:54 +0200 | <raehik> | now I'm remembering you can't stuff lenses into typeclasses without a second thought |
2021-08-02 23:20:19 +0200 | <raehik> | Lord help me with GHC's error messages. that was it, me forgetting lenses and typeclasses are |
2021-08-02 23:22:45 +0200 | <monochrom> | Perhaps start with no lens. |
2021-08-02 23:23:13 +0200 | <dminuoso> | raehik: If you insist on what lens offers, you can also consider the `optics` package |
2021-08-02 23:23:18 +0200 | <dminuoso> | Which neatly hides the implementation behind newtypes |
2021-08-02 23:28:55 +0200 | <raehik> | monochrom: I did start with no lenses! I figured being able to stuff a lens inside my HasX typeclasses might be interesting, so they could be used for MonadState as well as Reader |
2021-08-02 23:29:41 +0200 | <raehik> | dminuoso: I've looked *at* optics before but never into it. I'm still a relatively new Haskeller. would you recommend it over the lens pkg? |
2021-08-02 23:30:10 +0200 | <geekosaur> | ifnothing else, it has better error messages than lens |
2021-08-02 23:30:43 +0200 | <c_wraith> | on the other hand, the lack of extensibility feels so limitng |
2021-08-02 23:30:47 +0200 | <c_wraith> | or even limiting |
2021-08-02 23:30:52 +0200 | <c_wraith> | all it can do is accessors |
2021-08-02 23:31:26 +0200 | <dminuoso> | raehik: Personally I prefer it for a multitude of reasons. |
2021-08-02 23:31:37 +0200 | <dminuoso> | And I would recommend it over lens. |
2021-08-02 23:31:45 +0200 | <dminuoso> | But it's just personal preference, really |
2021-08-02 23:32:18 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 240 seconds) |
2021-08-02 23:32:49 +0200 | xrel | (~xrel@69.233.98.238) (Quit: nyaa~) |
2021-08-02 23:32:50 +0200 | <c_wraith> | anyone know offhand whether any of the proposed designs for dependent haskell allow putting pi types on instance declarations? |
2021-08-02 23:33:00 +0200 | <raehik> | thanks all, I'll remember them next time I'm using lenses. maybe I'll give one of the talks I bookmarked a shot |
2021-08-02 23:33:59 +0200 | <dminuoso> | c_wraith: What do you mean by "all it can do it accessors"? |
2021-08-02 23:36:06 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-08-02 23:36:52 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-08-02 23:36:52 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2021-08-02 23:37:29 +0200 | markpythonicbitc | (~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) |
2021-08-02 23:37:35 +0200 | <dsal> | I think last time I looked at optics, it didn't support prisms, which is kind of an important thing for many of my use cases. |
2021-08-02 23:37:41 +0200 | <c_wraith> | dminuoso: there's no equivalent of holesOf for when you're doing non-deterministic algorithms. There's no ability to extend it to embed additional effects in the traversal process like... uh shoot, I haven't released that library yet. |
2021-08-02 23:38:04 +0200 | <c_wraith> | The library works, I just hate writing enough documentation to tell people what it does :) |
2021-08-02 23:38:10 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-02 23:38:10 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-02 23:38:13 +0200 | allbery_b | geekosaur |
2021-08-02 23:39:23 +0200 | <c_wraith> | basically, optics is closed. It can only do what its authors build into it. lens is open, and you can add all sorts of stuff in ways that remain compatible with it. |
2021-08-02 23:40:22 +0200 | <dminuoso> | dsal: You should look again. |
2021-08-02 23:40:47 +0200 | <dsal> | Ooh, I was thinking about microlens |
2021-08-02 23:41:16 +0200 | <dminuoso> | c_wraith: Fair enough, yeah it doesnt cater to extravagant/exotic needs. :-) |
2021-08-02 23:41:29 +0200 | <dminuoso> | I think for mere mortals it's a great library. |
2021-08-02 23:41:41 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-08-02 23:41:52 +0200 | <arkho> | GHC will not import Data.Scientific into my module, stating that it's not safe. What does this mean? How can I fix it? |
2021-08-02 23:41:58 +0200 | <raehik> | <- mere mortal :) |
2021-08-02 23:43:45 +0200 | <arkho> | Or is that a question for #ghc ? |
2021-08-02 23:44:02 +0200 | <dminuoso> | Sounds like you have safe haskell enabled |
2021-08-02 23:45:26 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 272 seconds) |
2021-08-02 23:45:26 +0200 | bgamari | (~bgamari@72.65.104.136) (Ping timeout: 272 seconds) |
2021-08-02 23:46:31 +0200 | boggin | (~mikey@79.140.120.237) (Remote host closed the connection) |
2021-08-02 23:47:08 +0200 | <arkho> | Is this a global thing that I can disable? Or do I have to change source files? |
2021-08-02 23:48:27 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-02 23:48:59 +0200 | acidjnk_new3 | (~acidjnk@p5487d90a.dip0.t-ipconnect.de) |
2021-08-02 23:50:18 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-02 23:50:35 +0200 | <geekosaur> | ?? this is something that you would have had to explicitly enable, so why are you asking us? |
2021-08-02 23:50:35 +0200 | <lambdabot> | Plugin `compose' failed with: user error (Unknown command: "") |
2021-08-02 23:51:08 +0200 | <arkho> | Because it's not my code, it's a dependency of a package I'm trying to install. |
2021-08-02 23:51:59 +0200 | <arkho> | It won't build because it can't import that module, and I don't know what to do with that. |
2021-08-02 23:52:12 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9591e9224ac295505d06.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2021-08-02 23:54:56 +0200 | <arkho> | My main question is, is it a Cabal thing, a GHC thing, or a Haskell thing? Where's the switch? |
2021-08-02 23:55:11 +0200 | <davean> | It depends on where you turned it on |
2021-08-02 23:55:40 +0200 | <arkho> | I don't recall ever doing that. |
2021-08-02 23:57:21 +0200 | <geekosaur> | in any case, scientific 0.3.7.0 claims to be Safe Haskell-safe, so you should make sure you're using that version with Safe Haskell |
2021-08-02 23:57:52 +0200 | mastarija_ | (~mastarija@31.217.8.174) |