Logs: liberachat/#haskell
| 2021-05-22 23:51:11 | × | Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa) |
| 2021-05-22 23:52:35 | → | sm joins (~sm@172.56.44.219) |
| 2021-05-22 23:52:35 | × | sm quits (~sm@172.56.44.219) (Changing host) |
| 2021-05-22 23:52:35 | → | sm joins (~sm@plaintextaccounting/sm) |
| 2021-05-22 23:52:59 | <felixphew> | many people either run a "bouncer" like znc that stays permanently connected to IRC and keeps history, or simply leave an IRC client running all the time (often on a remote server) |
| 2021-05-22 23:53:40 | <felixphew> | also, many channels keep a public log - this one included: https://ircbrowse.tomsmeding.com/browse/lchaskell |
| 2021-05-22 23:54:39 | <FreeVariable> | It's okay if you happen to have a simple question and to ask it during a favourable time window. But searchability, discoverability, and overall social experience is awful. |
| 2021-05-22 23:55:00 | <FreeVariable> | I guess that's not the point of pure IRCs chats, I get it. |
| 2021-05-22 23:55:59 | <monochrom> | Social experience eh? |
| 2021-05-22 23:56:15 | × | FreeVariable quits (1f0aa548@107.161.19.109) (Quit: Connection closed) |
| 2021-05-22 23:56:38 | <monochrom> | If my friends are at a pub and I join them late, I don't expect a replay. |
| 2021-05-22 23:56:56 | <monochrom> | And that is not an awful social experience. |
| 2021-05-22 23:57:08 | × | Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:88fc:3def:1205:9c05) (Read error: Connection reset by peer) |
| 2021-05-22 23:57:44 | <monochrom> | And that is real life. Not this Facebook make-believe. |
| 2021-05-22 23:59:34 | × | sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 264 seconds) |
| 2021-05-23 00:00:32 | <yushyin> | they left ;D the irony that they won't see your answers after rejoin |
| 2021-05-23 00:00:45 | <monochrom> | haha |
| 2021-05-23 00:01:21 | <monochrom> | Why did they even come in the first place? Never saw them on Freenode. |
| 2021-05-23 00:02:52 | <felixphew> | heard about new IRC net, gave it a try, saw Haskell (this is one of the bigger channels rn so you'd be near the top of the /list) and joined, presumably |
| 2021-05-23 00:04:17 | × | fryguybob quits (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Quit: leaving) |
| 2021-05-23 00:05:54 | <boxscape> | maybe, but only if they confused "server" with "channel", since they specifically said "whenever I go to this channel" |
| 2021-05-23 00:07:23 | → | ubuntu_ joins (~ubuntu@ec2-13-49-142-87.eu-north-1.compute.amazonaws.com) |
| 2021-05-23 00:07:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 2021-05-23 00:12:39 | × | ubuntu_ quits (~ubuntu@ec2-13-49-142-87.eu-north-1.compute.amazonaws.com) (Quit: leaving) |
| 2021-05-23 00:13:28 | → | Guest5439 joins (~ubuntu@ec2-13-49-142-87.eu-north-1.compute.amazonaws.com) |
| 2021-05-23 00:14:45 | → | seven_three joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:16:31 | ← | seven_three parts (~user@pool-96-252-123-136.bstnma.fios.verizon.net) () |
| 2021-05-23 00:17:17 | → | seven_three joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:22:30 | × | Gurkenglas__ quits (~Gurkengla@dslb-088-075-022-175.088.075.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 2021-05-23 00:30:19 | <boxscape> | hm, so, if you want to have an action of type `IO A` that doesn't produce the `A` value every time you use it, somewhere in its definition you have to use unsafePerformIO (or another unsafe function), is that right? |
| 2021-05-23 00:30:46 | <mniip> | no? |
| 2021-05-23 00:30:50 | <boxscape> | example? |
| 2021-05-23 00:30:57 | <mniip> | I'm not sure what you mean though |
| 2021-05-23 00:31:32 | <boxscape> | like I do `do {x <- foo; y <- foo; pure (x, y)}`, and the two elements of the tuple are different |
| 2021-05-23 00:31:48 | <boxscape> | my assertion is that `foo`'s implementation must use unsafePerformIO, directly or indirectly |
| 2021-05-23 00:32:05 | seven_three | is now known as YY |
| 2021-05-23 00:32:35 | YY | is now known as Guest9574 |
| 2021-05-23 00:32:41 | <ChaiTRex> | boxscape: No, if foo :: IO Whatever, then it can produce different Whatever values each time it's called. |
| 2021-05-23 00:32:44 | Guest9574 | is now known as X1 |
| 2021-05-23 00:32:51 | <ChaiTRex> | Like getLine :: IO String |
| 2021-05-23 00:32:58 | <boxscape> | getLine uses unsafePerformIO |
| 2021-05-23 00:32:59 | X1 | is now known as three_seven |
| 2021-05-23 00:33:02 | <ChaiTRex> | Produces different lines based on what's typed. |
| 2021-05-23 00:33:04 | <boxscape> | stdin is defined with it |
| 2021-05-23 00:33:15 | <boxscape> | https://hackage.haskell.org/package/base-4.15.0.0/docs/src/GHC-IO-Handle-FD.html#stdin |
| 2021-05-23 00:33:29 | → | nnm__ joins (~nnm@109.252.72.186) |
| 2021-05-23 00:33:35 | × | three_seven quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Quit: ERC (IRC client for Emacs 27.2)) |
| 2021-05-23 00:33:41 | <boxscape> | (and `getLine` calls hGetLine `stdin`) |
| 2021-05-23 00:33:49 | × | nnm_ quits (~nnm@2a00:1370:811d:8e45:e6a3:c3d2:f62c:e07) (Read error: Connection reset by peer) |
| 2021-05-23 00:33:49 | <boxscape> | err, `hGetLine stdin` |
| 2021-05-23 00:34:19 | × | hgolden quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Quit: Konversation terminated!) |
| 2021-05-23 00:34:38 | <ChaiTRex> | stdin isn't IO Handle. |
| 2021-05-23 00:34:48 | <ChaiTRex> | It's Handle |
| 2021-05-23 00:34:50 | <boxscape> | no, but getLine is IO Srring |
| 2021-05-23 00:34:52 | <boxscape> | IO String |
| 2021-05-23 00:35:00 | <boxscape> | and getLine uses stdin in it's implementation |
| 2021-05-23 00:35:07 | <boxscape> | so it indirectly calls unsafePerformIO |
| 2021-05-23 00:36:03 | <boxscape> | ...though I guess you could hardcode stdin to some specific value, hope that it's right, and then it would work without unsafePerformIO, hm |
| 2021-05-23 00:36:24 | <monochrom> | This is an interesting observation but you need to sharpen your mind way more to see what it really means. |
| 2021-05-23 00:36:33 | <ChaiTRex> | You can also use the stdin definition without unsafePerformIO |
| 2021-05-23 00:36:41 | → | seven_three joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:36:45 | seven_three | is now known as _37 |
| 2021-05-23 00:36:53 | <boxscape> | oh. |
| 2021-05-23 00:36:55 | <boxscape> | true |
| 2021-05-23 00:36:55 | <monochrom> | For starters "have" is very open-ended. |
| 2021-05-23 00:37:02 | <ChaiTRex> | do { stdin <- stdinDefintionWithoutUnsafePerformIO; ... } |
| 2021-05-23 00:37:23 | <ChaiTRex> | So, no, you don't need unsafePerformIO, strictly speaking. |
| 2021-05-23 00:37:27 | <boxscape> | yeah |
| 2021-05-23 00:37:50 | → | WikiLycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 2021-05-23 00:37:57 | × | _37 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit) |
| 2021-05-23 00:38:26 | → | seven_three joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:38:42 | <monochrom> | The role of unsafePerformIO in this case is only to make stdin available at the top level. |
| 2021-05-23 00:38:44 | × | seven_three quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Remote host closed the connection) |
| 2021-05-23 00:39:28 | → | justsomeguy joins (~chris@24.96.241.90) |
| 2021-05-23 00:39:36 | → | _37 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:39:40 | <boxscape> | right, okay |
| 2021-05-23 00:41:24 | × | _37 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit) |
| 2021-05-23 00:41:59 | → | _73 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:43:17 | × | pe200012 quits (~pe200012@218.107.17.245) (Ping timeout: 272 seconds) |
| 2021-05-23 00:43:25 | × | _73 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit) |
| 2021-05-23 00:43:51 | → | seven_three joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:44:49 | × | seven_three quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit) |
| 2021-05-23 00:45:05 | × | nighmi quits (~felix@port-92-196-54-216.dynamic.as20676.net) (Quit: WeeChat 3.0.1) |
| 2021-05-23 00:45:10 | → | _73 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:46:16 | <hpc> | alternatively, you could imagine the fact that stdin is initialized before main gains control, and in another world haskell programs might start with "main stdin stdout stderr ... = do" |
| 2021-05-23 00:46:33 | × | _73 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit) |
| 2021-05-23 00:46:40 | × | sprog quits (~1860f15a@ircip2.mibbit.com) (Quit: https://mibbit.com Online IRC Client) |
| 2021-05-23 00:46:59 | → | _37 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 2021-05-23 00:48:03 | × | _37 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit) |
| 2021-05-23 00:52:38 | <boxscape> | funnily enough the other example I just thought off that is of type `IO Something` is randomIO, but that *also* uses unsafePerformIO |
| 2021-05-23 00:52:55 | <boxscape> | but I think if you were to read from a file on the harddrive, it wouldn't need unsafePerformIO |
| 2021-05-23 00:53:00 | <boxscape> | s/off/of |
| 2021-05-23 00:53:14 | <boxscape> | (and of course the file could change) |
| 2021-05-23 00:53:28 | → | fryguybob joins (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) |
| 2021-05-23 00:55:57 | <hpc> | boxscape: there's an even better example, i forget what module it's in but there's a top-level definition of your operating system |
| 2021-05-23 00:56:17 | → | ddellacosta joins (~ddellacos@86.106.121.100) |
| 2021-05-23 00:56:17 | <hpc> | i forget if it's at build-time or runtime, and if it has IO in the type, but it's something to contemplate |
| 2021-05-23 00:56:35 | <boxscape> | hm |
| 2021-05-23 00:57:20 | <monochrom> | System.Info.os? That one is compiled-time. Basically a cheesy CPP. |
| 2021-05-23 00:58:04 | <hpc> | ah, boring |
All times are in UTC.