Logs: freenode/#haskell
| 2020-09-17 09:27:53 | <Taneb> | I'm not sure the question is well defined: "lazy" is normally defined as there exist some functions such that f _|_ /= _|_. In a total language, there is no _|_ so we can't decide if the language is lazy or not |
| 2020-09-17 09:28:01 | → | someuser123 joins (59b76050@a89-183-96-80.net-htp.de) |
| 2020-09-17 09:28:25 | × | ph88^ quits (~ph88@ip5f5af726.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds) |
| 2020-09-17 09:29:03 | <lortabac> | Taneb: you can still talk about the order of evaluation and sharing, can't you? |
| 2020-09-17 09:29:19 | → | eric joins (~eric@2804:431:c7d4:b75:19f7:ea85:5be8:4c8e) |
| 2020-09-17 09:29:37 | <someuser123> | is there a conventional name for a function `m a -> a` where `m` is a monad? |
| 2020-09-17 09:30:21 | <dminuoso> | someuser123: Cokleisli Arrow |
| 2020-09-17 09:30:27 | <dminuoso> | fsvo of "conventional" |
| 2020-09-17 09:30:28 | <merijn> | someuser123: "nonexistent" :) |
| 2020-09-17 09:32:00 | × | gestone quits (~gestone@c-73-97-137-216.hsd1.wa.comcast.net) (Ping timeout: 272 seconds) |
| 2020-09-17 09:33:26 | <dminuoso> | Oh wait, heh. Well that only works if m was a comonad. :) |
| 2020-09-17 09:34:02 | → | v0d1ch joins (~v0d1ch@cable-178-148-120-241.dynamic.sbb.rs) |
| 2020-09-17 09:34:16 | <maerwald> | quiz question: what does `LimitTo` in persistent do if you pass 0? |
| 2020-09-17 09:34:17 | <dminuoso> | someuser123: Do you mean `m` as some *particular* monad, or just any monad? |
| 2020-09-17 09:35:21 | → | cpressey joins (~cpressey@79-72-201-114.dynamic.dsl.as9105.com) |
| 2020-09-17 09:35:41 | × | eric quits (~eric@2804:431:c7d4:b75:19f7:ea85:5be8:4c8e) (Ping timeout: 272 seconds) |
| 2020-09-17 09:35:43 | <someuser123> | I'm thinking of a monad like Maybe that is used to capture computation which can fail |
| 2020-09-17 09:36:23 | <edwardk> | lortabac: laziness in a total language is the differents between 'terminates' and 'terminates in my lifetime' |
| 2020-09-17 09:36:54 | <kuribas> | someuser123: Maybe has fromJust which you shouldn't use |
| 2020-09-17 09:37:17 | <kuribas> | someuser123: use fromMaybe instead |
| 2020-09-17 09:37:27 | <someuser123> | kuribas: why not? |
| 2020-09-17 09:37:45 | <merijn> | someuser123: Because it's bad and broken and you will regret it :p |
| 2020-09-17 09:37:47 | <kuribas> | someuser123: because it will crash on Nothing |
| 2020-09-17 09:37:49 | <maerwald> | someuser123: it's fine to use in local context or where you don't mind something to crash |
| 2020-09-17 09:38:20 | <merijn> | maerwald: What local context is it fine in? |
| 2020-09-17 09:38:34 | <maerwald> | merijn: where you have local proof that it's never Nothing |
| 2020-09-17 09:38:37 | <kuribas> | it's never fine to crash without meaningful error message |
| 2020-09-17 09:38:40 | <kuribas> | or stack trace |
| 2020-09-17 09:38:52 | <lortabac> | edwardk: can you expand? I'm not sure I understand |
| 2020-09-17 09:39:08 | <merijn> | maerwald: I don't see many case where you have both such a proof and still can't skip the maybe |
| 2020-09-17 09:39:43 | <edwardk> | termination checking in a fancy total language might take until the sun explodes. its pretty easy to build tings that theoretically terminate, but won't terminate in my lifetime. |
| 2020-09-17 09:40:15 | <edwardk> | laziness lets you skip some of the evaluation of parts, so while sure those parts will terminate eventually, it might be nice to not do that work at all |
| 2020-09-17 09:40:27 | <maerwald> | merijn: I'm not sure I follow. |
| 2020-09-17 09:41:45 | <merijn> | maerwald: I can't really think of any case where I have a proof that it's not Nothing where I can't simple skip going through Maybe (and thus fromJust) |
| 2020-09-17 09:41:47 | <maerwald> | if you have a regex building function that might return Nothing, but there is no user input and you've verified it compiles at runtime, there's no point going through hoops just to satisfy the totality illusion |
| 2020-09-17 09:42:14 | <merijn> | maerwald: Then you want |
| 2020-09-17 09:42:20 | <merijn> | @hackage validated-literals ;) |
| 2020-09-17 09:42:20 | <lambdabot> | https://hackage.haskell.org/package/validated-literals ;) |
| 2020-09-17 09:42:27 | <maerwald> | I'm aware of that, this was an example |
| 2020-09-17 09:42:31 | <lortabac> | edwardk: ok I see, thanks |
| 2020-09-17 09:43:04 | <edwardk> | as an example, when writing a dependent type checker itself, i wind up having to eval terms to normal form. but those terms often carry around things like unerased type info. _eval_ doesn't care, but maybe they might appear in the final normal form |
| 2020-09-17 09:43:22 | <edwardk> | but i should lazily skip past crunching those things down in case i don't need to compute those answers |
| 2020-09-17 09:43:49 | <edwardk> | sure it'd terminate but it'd bloat the memory footprint of the proof process and significantly slow it down |
| 2020-09-17 09:43:58 | <kuribas> | maerwald: if you have many regexes, change one of those then you don't know which one blew up. |
| 2020-09-17 09:44:30 | <maerwald> | then don't use it |
| 2020-09-17 09:44:44 | <kuribas> | maerwald: and if you know which one blew, it doesn't say what's wrong with it. |
| 2020-09-17 09:44:51 | → | Franciman joins (~Franciman@acqua.team) |
| 2020-09-17 09:45:16 | → | rapskalian joins (~user@2601:804:8400:5750:6d07:cb01:64a9:36bb) |
| 2020-09-17 09:46:27 | <Unhammer> | Upgraded from 8.6.5 to 8.8.4, project compile time went from 3m to 2m30s, compile after changing single (TH) file from 30s to 24s :-) and the windows binary size went from 53MB to 43MB. That's pretty nice :-) |
| 2020-09-17 09:47:15 | <merijn> | Unhammer: You can probably drastically shrink further |
| 2020-09-17 09:47:26 | <merijn> | Unhammer: Enable split-sections |
| 2020-09-17 09:47:34 | <maerwald> | does windows support split-sections? |
| 2020-09-17 09:47:40 | <Unhammer> | on windows? |
| 2020-09-17 09:47:45 | × | Lycurgus quits (~niemand@98.4.96.130) (Quit: Exeunt) |
| 2020-09-17 09:47:45 | <merijn> | hmm, not sure? |
| 2020-09-17 09:47:50 | <merijn> | Only one way to find out :p |
| 2020-09-17 09:47:55 | × | da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:37d7:55fb:4d37:ffc2:715b) (Ping timeout: 240 seconds) |
| 2020-09-17 09:48:02 | <merijn> | Unhammer: Also, don't forget to strip |
| 2020-09-17 09:48:16 | → | gestone joins (~gestone@c-73-97-137-216.hsd1.wa.comcast.net) |
| 2020-09-17 09:48:26 | <Unhammer> | I think stack does that for me |
| 2020-09-17 09:48:28 | <Unhammer> | on stack install |
| 2020-09-17 09:48:56 | <Unhammer> | yeah, the one in "dist" is 64M, and the one in "install" doesn't get smaller when stripping |
| 2020-09-17 09:49:04 | <merijn> | hmmm |
| 2020-09-17 09:49:55 | × | rapskalian quits (~user@2601:804:8400:5750:6d07:cb01:64a9:36bb) (Ping timeout: 244 seconds) |
| 2020-09-17 09:50:28 | hackage | Z-Data 0.1.1.0 - array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.1.0 (winterland) |
| 2020-09-17 09:50:46 | <Unhammer> | oh I need to rebuild all deps to try split-sections … guess I'll wait, need to do some actual work instead of faffing around with compiler versions =P |
| 2020-09-17 09:51:24 | <merijn> | Unhammer: Yeah, you do |
| 2020-09-17 09:51:35 | <merijn> | Unhammer: It makes *massive* difference, though |
| 2020-09-17 09:52:07 | <merijn> | Unhammer: Like, 10x on my executables |
| 2020-09-17 09:52:54 | × | gestone quits (~gestone@c-73-97-137-216.hsd1.wa.comcast.net) (Ping timeout: 272 seconds) |
| 2020-09-17 09:54:17 | <kuribas> | merijn: why doesn't it do this by default? |
| 2020-09-17 09:54:41 | × | alp_ quits (~alp@2a01:e0a:58b:4920:90ae:a5d:9349:f8d8) (Ping timeout: 272 seconds) |
| 2020-09-17 09:55:24 | <merijn> | kuribas: Because it's fairly new, doesn't work on all platforms, etc. |
| 2020-09-17 09:55:28 | <Unhammer> | https://gitlab.haskell.org/ghc/ghc/-/issues/11445 |
| 2020-09-17 09:55:48 | <merijn> | hmm, older than I thought :p |
| 2020-09-17 09:56:15 | <Unhammer> | does it work to put it in global stack.yaml ? |
| 2020-09-17 09:56:36 | <phadej> | merijn: IIRC it was broken / not working somewhere somewhat |
| 2020-09-17 09:57:03 | <merijn> | It doesn't work on macOS |
| 2020-09-17 09:57:11 | <maerwald> | merijn: you don't need it there |
| 2020-09-17 09:57:23 | <merijn> | maerwald: I know, but GHC error exited when you specified it |
| 2020-09-17 09:57:29 | <maerwald> | yep |
| 2020-09-17 09:57:32 | <merijn> | (now fixed after I whined about it) |
| 2020-09-17 09:57:45 | <merijn> | Now it's just a warning on macOS |
| 2020-09-17 09:58:42 | <phadej> | a problem is that GHC doesn't tell whether it's supported |
| 2020-09-17 09:58:53 | <phadej> | there is ("Object splitting supported","YES") entry, which is about -split-objs |
| 2020-09-17 09:58:57 | <phadej> | but not for -split-sections |
| 2020-09-17 09:59:46 | <phadej> | GHC is not very uniform in how it exposes features |
| 2020-09-17 10:00:04 | <phadej> | (to allow auto-configuration, vs. hardcoding stuff about particular compiler versions into Cabal) |
| 2020-09-17 10:01:22 | <phadej> | an example |
| 2020-09-17 10:01:24 | <phadej> | it tells |
| 2020-09-17 10:01:24 | <phadej> | ,("unlit command","/opt/ghc/8.10.1/lib/ghc-8.10.1/bin/unlit") |
| 2020-09-17 10:01:30 | <phadej> | but doesn't tell e.g. `ghc-pkg command` |
| 2020-09-17 10:01:37 | <phadej> | so Cabal have to use heuristics to find one |
| 2020-09-17 10:01:59 | <phadej> | (where I have no idea what's use case to knowing where is unlit command :P) |
| 2020-09-17 10:02:19 | <merijn> | phadej: Sounds like we need a ticket about all missing things there and add them to GHC |
| 2020-09-17 10:03:03 | <phadej> | merijn: one needs a pedantic person looking after that |
| 2020-09-17 10:03:12 | × | yahb quits (xsbot@haskell/bot/yahb) (Ping timeout: 256 seconds) |
| 2020-09-17 10:03:23 | → | yahb joins (xsbot@178.219.36.155) |
| 2020-09-17 10:03:23 | × | yahb quits (xsbot@178.219.36.155) (Changing host) |
| 2020-09-17 10:03:23 | → | yahb joins (xsbot@haskell/bot/yahb) |
All times are in UTC.