2022-04-27 00:03:39 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
2022-04-27 00:04:09 +0200 | malinoskj2906 | (~malinoskj@48.170-avail-pool-cc.sccoast.net) |
2022-04-27 00:04:13 +0200 | malinoskj290 | (~malinoskj@48.170-avail-pool-cc.sccoast.net) (Read error: Connection reset by peer) |
2022-04-27 00:05:26 +0200 | anomal | (~anomal@87.227.196.109) |
2022-04-27 00:07:11 +0200 | acidjnk | (~acidjnk@p200300d0c73b45335982c41922b7b0a0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-27 00:07:58 +0200 | kuribas | (~user@ptr-17d51enjtkmzpg60wq1.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2022-04-27 00:11:58 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 00:12:46 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer) |
2022-04-27 00:13:18 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-27 00:16:07 +0200 | xff0x_ | (~xff0x@om126167099166.29.openmobile.ne.jp) |
2022-04-27 00:16:57 +0200 | dolio | (~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-27 00:17:43 +0200 | dolio | (~dolio@130.44.130.54) |
2022-04-27 00:17:56 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 246 seconds) |
2022-04-27 00:19:06 +0200 | raym | (~raym@user/raym) (Ping timeout: 272 seconds) |
2022-04-27 00:19:36 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 00:21:47 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2022-04-27 00:24:04 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-04-27 00:24:25 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-04-27 00:24:34 +0200 | raym | (~raym@user/raym) |
2022-04-27 00:25:57 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 276 seconds) |
2022-04-27 00:29:24 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 00:34:24 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
2022-04-27 00:39:04 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 00:42:38 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 00:45:35 +0200 | dhil | (~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net) (Ping timeout: 246 seconds) |
2022-04-27 00:46:48 +0200 | fendor_ | (~fendor@178.115.43.124.wireless.dyn.drei.com) (Remote host closed the connection) |
2022-04-27 00:47:45 +0200 | bshelden | (~bshelden@S010664777d493f93.vf.shawcable.net) () |
2022-04-27 00:50:28 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2022-04-27 00:51:48 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds) |
2022-04-27 00:56:17 +0200 | <EvanR> | "this field must be named 'stuff' because it really could be anything" sounds like my first day at my first PHP job |
2022-04-27 00:56:37 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-04-27 00:56:37 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-04-27 00:56:37 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-04-27 00:56:37 +0200 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-04-27 00:56:39 +0200 | <EvanR> | and it wasn't at google |
2022-04-27 00:57:37 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Remote host closed the connection) |
2022-04-27 00:58:01 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 00:58:43 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-04-27 01:02:25 +0200 | gentauro | (~gentauro@user/gentauro) |
2022-04-27 01:03:00 +0200 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-04-27 01:04:14 +0200 | <Henson> | shlevy[m]: was it even possible to build Nix packages when the results from GHC were non-deterministic? I mean, they could build, but would their store hashes be different every time? |
2022-04-27 01:06:54 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 276 seconds) |
2022-04-27 01:07:39 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-04-27 01:07:49 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Remote host closed the connection) |
2022-04-27 01:08:14 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 01:13:03 +0200 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2022-04-27 01:16:56 +0200 | <shlevy[m]> | <Henson> "shlevy: was it even possible..." <- No, because the store hashes are not* determined based on the hash of the result, they are determined based on the hash of the inputs + the build script |
2022-04-27 01:16:56 +0200 | <shlevy[m]> | *: Slight oversimplification, some builds are determined based on the hash (e.g. fetching a tarball from the internet) and very recently there's a "content-addressed" store feature which is not essential to this point. |
2022-04-27 01:24:04 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-27 01:24:55 +0200 | <Henson> | shlevy[m]: ok, so the store hashes could be the same, even though the hash out the outputs were different. I think at NixCon 2020 Eelco mentioned something about this, and how they were working on content-based hashing. |
2022-04-27 01:27:00 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-04-27 01:30:33 +0200 | <meejah> | iirc, the store hashes are a hash of the config / nix-expression? |
2022-04-27 01:31:22 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2022-04-27 01:33:12 +0200 | lisq | (~quassel@lis.moe) (Quit: lisq) |
2022-04-27 01:46:47 +0200 | <Guest91> | Looks like I have as many packages installed with cabal as I'm going to get. Many thanks for all the help! |
2022-04-27 01:47:46 +0200 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
2022-04-27 01:47:51 +0200 | <geekosaur> | the ones you can't reinstall you can copy and edit their package registration files, then "ghc-pkg recache --global" |
2022-04-27 01:47:52 +0200 | vysn | (~vysn@user/vysn) |
2022-04-27 01:52:39 +0200 | abrantesasf | (~abrantesa@189.115.192.139) (Remote host closed the connection) |
2022-04-27 01:58:15 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 276 seconds) |
2022-04-27 02:02:21 +0200 | <Guest91> | Hrm, I will try that if anyone squawks a lot. But one is a package that the instructor wrote and which looks like it needs updating, so I think I can potentially use this as a prod. |
2022-04-27 02:03:48 +0200 | <geekosaur> | mm, right, if it's a different ghc version that won't fly |
2022-04-27 02:04:16 +0200 | <geekosaur> | thought you meant stuff like base or ghc-prim you can't rebuild, you can only copy |
2022-04-27 02:05:50 +0200 | <Guest91> | Ah, no, none of those. And at least two of them look like they might be abandoned dependencies for other things, not in direct use. |
2022-04-27 02:07:21 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Ping timeout: 276 seconds) |
2022-04-27 02:08:10 +0200 | <dons> | morning all. |
2022-04-27 02:08:16 +0200 | <jackdk> | morning dons. |
2022-04-27 02:08:32 +0200 | <sclv> | mornin |
2022-04-27 02:10:45 +0200 | Guest91 | (~Guest91@caliga.eecs.tufts.edu) (Quit: Client closed) |
2022-04-27 02:18:03 +0200 | <geekosaur> | o/ |
2022-04-27 02:18:56 +0200 | lis | (~quassel@lis.moe) |
2022-04-27 02:19:10 +0200 | <Axman6> | o/ |
2022-04-27 02:20:14 +0200 | anomal | (~anomal@87.227.196.109) (Remote host closed the connection) |
2022-04-27 02:22:26 +0200 | stackdroid18 | (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
2022-04-27 02:24:14 +0200 | xff0x_ | (~xff0x@om126167099166.29.openmobile.ne.jp) (Read error: Connection reset by peer) |
2022-04-27 02:32:19 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds) |
2022-04-27 02:32:25 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-04-27 02:32:25 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-04-27 02:32:25 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-04-27 02:32:43 +0200 | xkuru | (~xkuru@user/xkuru) |
2022-04-27 02:38:23 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 02:39:25 +0200 | <exarkun> | does (=<<) have a common name |
2022-04-27 02:39:53 +0200 | <Bulby[m]> | extend? |
2022-04-27 02:40:19 +0200 | <hpc> | (>>=) is "bind", so i would probably say "flip bind" |
2022-04-27 02:40:43 +0200 | <geekosaur> | Bulby[m], extend is something else |
2022-04-27 02:40:46 +0200 | <hpc> | honestly, the way i say most haskell stuff out loud is "i need a whiteboard" |
2022-04-27 02:40:56 +0200 | <geekosaur> | ^ |
2022-04-27 02:41:06 +0200 | <Bulby[m]> | always mix them up |
2022-04-27 02:41:06 +0200 | <Bulby[m]> | oh that's monad, not the dual of monadd |
2022-04-27 02:41:08 +0200 | <exarkun> | hpc: :) |
2022-04-27 02:41:09 +0200 | off^ | (~off@50.227.69.228) |
2022-04-27 02:41:22 +0200 | <geekosaur> | right, it's just flipped (>>=), not comonad |
2022-04-27 02:42:48 +0200 | <Bulby[m]> | what are comands again |
2022-04-27 02:43:35 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2022-04-27 02:45:32 +0200 | <Axman6> | @hoogle Comonad |
2022-04-27 02:45:33 +0200 | <lambdabot> | module Control.Comonad |
2022-04-27 02:45:33 +0200 | <lambdabot> | Control.Comonad class Functor w => Comonad w |
2022-04-27 02:45:33 +0200 | <lambdabot> | module Rebase.Control.Comonad |
2022-04-27 02:46:07 +0200 | <Bulby[m]> | not helpful... please define it in english |
2022-04-27 02:46:23 +0200 | <Axman6> | ok, just hold on a second there champ |
2022-04-27 02:47:16 +0200 | <Axman6> | @hoogle (=>>) |
2022-04-27 02:47:16 +0200 | <lambdabot> | Control.Comonad (=>>) :: Comonad w => w a -> (w a -> b) -> w b |
2022-04-27 02:47:16 +0200 | <lambdabot> | Rebase.Prelude (=>>) :: Comonad w => w a -> (w a -> b) -> w b |
2022-04-27 02:47:16 +0200 | <lambdabot> | Language.Fixpoint.Misc (=>>) :: Monad m => m b -> (b -> m a) -> m b |
2022-04-27 02:48:00 +0200 | <Axman6> | https://hackage.haskell.org/package/comonad-5.0.8/docs/Control-Comonad.html |
2022-04-27 02:48:38 +0200 | <Bulby[m]> | i mean that is extreme technically speak to me |
2022-04-27 02:48:46 +0200 | <EvanR> | comonads are like space suits at a nightclub |
2022-04-27 02:48:50 +0200 | <Bulby[m]> | s/technically/technical/ |
2022-04-27 02:48:53 +0200 | <Bulby[m]> | WHAT |
2022-04-27 02:49:07 +0200 | <EvanR> | not to be confused with burritos |
2022-04-27 02:49:16 +0200 | <Axman6> | yeah that's the most accurate answer, particularly if you're going to be so rude |
2022-04-27 02:49:29 +0200 | gurkenglas | (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
2022-04-27 02:49:31 +0200 | <Bulby[m]> | oops |
2022-04-27 02:49:45 +0200 | vonfry | (~user@139.227.167.170) |
2022-04-27 02:49:50 +0200 | <Bulby[m]> | yeah saying "not helpful" is rude 😓 |
2022-04-27 02:49:55 +0200 | <Axman6> | it sure is |
2022-04-27 02:49:59 +0200 | lis | (~quassel@lis.moe) (Quit: lis) |
2022-04-27 02:50:08 +0200 | lis | (~quassel@lis.moe) |
2022-04-27 02:50:23 +0200 | <Bulby[m]> | oh well. i'll see if i can find some blog post about it |
2022-04-27 02:50:25 +0200 | <Axman6> | partricularly when you are perfectly capable of using Google or your search engione of choice instead of demending others explain topics to you |
2022-04-27 02:50:36 +0200 | <exarkun> | Bulby[m]: An answer isn't intrinsically helpful or not. It might be helpful to you, or not. You might explain what you don't understand about it. |
2022-04-27 02:50:59 +0200 | dostoevsky | (~5c42c5384@user/dostoevsky) |
2022-04-27 02:51:04 +0200 | <Bulby[m]> | ah |
2022-04-27 02:51:26 +0200 | <EvanR> | this metadiscussion may indicate no one has a good explanation of comonads in a macro right now |
2022-04-27 02:51:34 +0200 | <Bulby[m]> | those answers weren't insightful because they were just type signatures - I would like an explanation of a concept |
2022-04-27 02:51:50 +0200 | lis | lisq |
2022-04-27 02:51:59 +0200 | <exarkun> | Some might say that the type signatures fully encapsulate the concept. |
2022-04-27 02:52:05 +0200 | <Axman6> | They weren't answers to your question, they were me looking to find where the code is that contains the answers |
2022-04-27 02:52:11 +0200 | <EvanR> | they are similar to monads in that they at their heart an algebraic concept made of signatures and laws |
2022-04-27 02:52:26 +0200 | <Bulby[m]> | well I am not fully trained in reading type signatures 😅 |
2022-04-27 02:52:32 +0200 | <EvanR> | and not something which works by analogy, as hilarious as the nightclub post was |
2022-04-27 02:52:38 +0200 | <Axman6> | then you may not be ready to understand comonads |
2022-04-27 02:53:11 +0200 | <Bulby[m]> | you're right I only half grasp a lot of concepts.... not really "grok" it |
2022-04-27 02:53:17 +0200 | <EvanR> | one way to get closer to an abstract idea is to look at examples, of which there are not many for comonads (in haskell) |
2022-04-27 02:54:13 +0200 | <EvanR> | example 1 is the Store comonad which is a data structure paid with a pointer into the structure |
2022-04-27 02:54:34 +0200 | <EvanR> | example 2 is an infinite stream |
2022-04-27 02:54:40 +0200 | <Axman6> | NonEmpty is probably the first interesting instance people run into |
2022-04-27 02:55:03 +0200 | <EvanR> | s/paid/paired/ |
2022-04-27 02:55:08 +0200 | <Bulby[m]> | what about an empty list makes it not a comonad |
2022-04-27 02:55:22 +0200 | <Axman6> | can you write extract :: [a] -> a? |
2022-04-27 02:55:31 +0200 | <Bulby[m]> | oh |
2022-04-27 02:55:37 +0200 | <EvanR> | the normal list type can't be a comonad |
2022-04-27 02:55:37 +0200 | <Bulby[m]> | i see |
2022-04-27 02:55:55 +0200 | <Bulby[m]> | NonEmpty is the thing constructed with :| right |
2022-04-27 02:56:14 +0200 | <EvanR> | since empty is possible and stops you from implementing extract. Something other languages might cheat at and return null, breaking the abstraction |
2022-04-27 02:56:22 +0200 | <Axman6> | how about you have a go at writing the Comonad instance for NonEmpty - extract :: NonEmpty a -> a shoiuld be easy |
2022-04-27 02:56:28 +0200 | <Bulby[m]> | WE HATE NULL |
2022-04-27 02:56:44 +0200 | <geekosaur> | we don't hate it, we just make it announce itself with Maybe |
2022-04-27 02:56:49 +0200 | <Axman6> | duplicate :: NonEmpty a -> NonEmpty (NonEmpty a) is more interesting, there's many functions with that type |
2022-04-27 02:56:56 +0200 | <geekosaur> | instead of just popping up out of nowhere |
2022-04-27 02:57:04 +0200 | <Bulby[m]> | Axman6: obviously would be head (or the non empty equivilant) |
2022-04-27 02:57:11 +0200 | <Bulby[m]> | geekosaur: maybe is amazing |
2022-04-27 02:57:17 +0200 | <Bulby[m]> | which is why rust is also amazing |
2022-04-27 02:57:20 +0200 | <Bulby[m]> | no null |
2022-04-27 02:57:23 +0200 | <Bulby[m]> | but option |
2022-04-27 02:57:24 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 276 seconds) |
2022-04-27 02:57:42 +0200 | <EvanR> | i wish people would steal more stuff from haskell than just Maybe xD |
2022-04-27 02:57:59 +0200 | <Bulby[m]> | \o/ yes |
2022-04-27 02:58:16 +0200 | <Axman6> | like a decent type system |
2022-04-27 02:58:36 +0200 | <EvanR> | is haskell the treasure cave in alladin, and Maybe is the magic lamp you should touch nothing but |
2022-04-27 02:58:45 +0200 | <monochrom> | heh |
2022-04-27 02:58:57 +0200 | <Bulby[m]> | Axman6: (NonEmpty a) = [a] : [] ? |
2022-04-27 02:59:01 +0200 | <Bulby[m]> | oops |
2022-04-27 02:59:08 +0200 | <Bulby[m]> | pretend that's a :| |
2022-04-27 02:59:14 +0200 | <Axman6> | data But = But; lamp = Nothing :: Maybe But |
2022-04-27 02:59:17 +0200 | <monochrom> | I don't even hate partial functions, really. |
2022-04-27 02:59:54 +0200 | <monochrom> | But yeah null is more annoying than partial functions. |
2022-04-27 02:59:55 +0200 | <Axman6> | duplicate (a :| xs) = ? :| ?? |
2022-04-27 03:00:15 +0200 | <monochrom> | OK, I feel that way, but I guess it's subjective. |
2022-04-27 03:00:43 +0200 | <jackdk> | Lenses. They should definitely steal lenses (and the other optics). |
2022-04-27 03:00:51 +0200 | <EvanR> | partial functions would be cool if they were guaranteed to crash not loop |
2022-04-27 03:01:03 +0200 | <Axman6> | yeah oop dot syntax is so limited |
2022-04-27 03:01:35 +0200 | <jackdk> | I remember writing ruby years ago, and wanting a function `hget :: k -> Map k v -> v`. When I discovered lens, it was like I'd finally found what I was looking for, implemented by people who thought about the problem thoroughly. |
2022-04-27 03:01:37 +0200 | <monochrom> | Although, recently on discourse a beginner was wondering why head is not [a] -> [a]. They might be thinking straight actually. :) |
2022-04-27 03:02:25 +0200 | <EvanR> | [a] is Maybe on ACID |
2022-04-27 03:02:35 +0200 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-04-27 03:02:49 +0200 | <Axman6> | not sure how durable it is EvanR |
2022-04-27 03:02:52 +0200 | <EvanR> | lol |
2022-04-27 03:03:12 +0200 | <EvanR> | based |
2022-04-27 03:03:27 +0200 | mmhat | (~mmh@55d4c7b7.access.ecotel.net) (Quit: WeeChat 3.5) |
2022-04-27 03:10:23 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 256 seconds) |
2022-04-27 03:10:27 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-04-27 03:16:34 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-04-27 03:16:55 +0200 | nattiestnate | (~nate@202.138.250.13) |
2022-04-27 03:17:04 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Read error: Connection reset by peer) |
2022-04-27 03:17:24 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 03:19:51 +0200 | frost | (~frost@user/frost) |
2022-04-27 03:21:05 +0200 | xff0x_ | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
2022-04-27 03:24:06 +0200 | <jackdk> | EvanR: [a] is Maybe (Cofree Maybe a) :) |
2022-04-27 03:24:45 +0200 | off^ | (~off@50.227.69.228) (Remote host closed the connection) |
2022-04-27 03:28:51 +0200 | slack1256 | (~slack1256@191.126.227.217) |
2022-04-27 03:29:48 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-04-27 03:30:18 +0200 | <dibblego> | [] can be semi-comonad though |
2022-04-27 03:30:50 +0200 | <jackdk> | I think that's called Extend in semigroupoids |
2022-04-27 03:35:11 +0200 | <EvanR> | semi-comonad as a thing changes the question from "what is a _" to "why should I care" because it sounds like you can make up a name for any damn thing xD |
2022-04-27 03:41:02 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 03:43:40 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2022-04-27 03:50:00 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Ping timeout: 272 seconds) |
2022-04-27 03:50:20 +0200 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-04-27 03:50:59 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 03:52:53 +0200 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2022-04-27 03:53:33 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-04-27 03:53:38 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds) |
2022-04-27 03:54:56 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds) |
2022-04-27 03:56:33 +0200 | andrey__ | (~andrey@p200300dbcf089700a418461232068800.dip0.t-ipconnect.de) |
2022-04-27 03:59:05 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-04-27 03:59:08 +0200 | andrey_ | (~andrey@p200300dbcf1dd700efb6dcb1d2488e69.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-27 04:01:09 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-04-27 04:02:38 +0200 | Sgeo_ | (~Sgeo@user/sgeo) (Ping timeout: 246 seconds) |
2022-04-27 04:11:56 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-04-27 04:13:51 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2022-04-27 04:14:01 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-04-27 04:14:17 +0200 | tremon | (~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
2022-04-27 04:15:19 +0200 | vonfry | (~user@139.227.167.170) (Ping timeout: 240 seconds) |
2022-04-27 04:17:15 +0200 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer) |
2022-04-27 04:18:59 +0200 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) |
2022-04-27 04:21:24 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-04-27 04:21:24 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-04-27 04:21:24 +0200 | finn_elija | FinnElija |
2022-04-27 04:30:55 +0200 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-04-27 04:35:32 +0200 | td_ | (~td@94.134.91.110) (Ping timeout: 246 seconds) |
2022-04-27 04:37:40 +0200 | td_ | (~td@muedsl-82-207-238-136.citykom.de) |
2022-04-27 04:38:39 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
2022-04-27 04:39:24 +0200 | inversed_ | (~inversed@94.13.111.159) (Ping timeout: 272 seconds) |
2022-04-27 04:40:03 +0200 | fraznel | (~fuag1@174.127.249.180) |
2022-04-27 04:40:55 +0200 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-04-27 04:41:02 +0200 | <fraznel> | hey all, purely academic question. What if I have a structure that has multiple viable implementations of foldable such as a binary tree and i have resion that some would be preferred in some situations over others. Is there a language extension or other way of providing multiple instances of foldable nad selecting one explicitly at the call site? |
2022-04-27 04:41:52 +0200 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-04-27 04:43:55 +0200 | <[Leary]> | fraznel: That's pretty much what newtypes are for. |
2022-04-27 04:43:56 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
2022-04-27 04:44:04 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-04-27 04:44:59 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) |
2022-04-27 04:45:53 +0200 | <abastro[m]> | I guess one coukd have `LeftFold Tree` and `RightFold Tree` |
2022-04-27 04:46:06 +0200 | <monochrom> | We solved "Integer is a monoid by + but also a monoid by *" by devising the newtype wrappers Sum and Product. |
2022-04-27 04:46:16 +0200 | <monochrom> | Or maybe worked around, heh. |
2022-04-27 04:46:40 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-04-27 04:47:36 +0200 | <fraznel> | so only through newtypes does an implementation of foldable exist? |
2022-04-27 04:47:42 +0200 | <abastro[m]> | Hey but at least it is functional workaround :D |
2022-04-27 04:47:56 +0200 | <monochrom> | No, only through newtype can you offer multiple choices. |
2022-04-27 04:48:35 +0200 | <monochrom> | If there is no rivaling "standard", we would not newtype-wrap it. Consider Integer and Ord. |
2022-04-27 04:49:34 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-04-27 04:49:49 +0200 | goepsilongo_ | (~goepsilon@2603-7000-ab00-62ed-2999-d4f9-6568-086f.res6.spectrum.com) |
2022-04-27 04:49:51 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) (Ping timeout: 276 seconds) |
2022-04-27 04:50:16 +0200 | <fraznel> | can i look at source that uses this technique somewhere? hmm, i'm not understanding how newtype works maybe, wouldn't that mean that you would have to have Tree be infix foldable by default but LeftFold Tree havea left instance of foldable etc? |
2022-04-27 04:50:39 +0200 | <abastro[m]> | Oh I should have rather said |
2022-04-27 04:50:50 +0200 | goepsilongo | (~goepsilon@2603-7000-ab00-62ed-8077-381b-a4b0-5dd2.res6.spectrum.com) (Ping timeout: 250 seconds) |
2022-04-27 04:50:57 +0200 | <abastro[m]> | newtype LeftTree = LT Tree |
2022-04-27 04:50:57 +0200 | <abastro[m]> | newtype RightTree = RT Tree |
2022-04-27 04:51:12 +0200 | <abastro[m]> | And implement Foldable instances for LT Tree and RT Tree |
2022-04-27 04:51:28 +0200 | <abastro[m]> | (Now I see why DeriveFoldable/DeriveTraversable is controversial) |
2022-04-27 04:51:56 +0200 | <fraznel> | oh i see now, makes sense :) |
2022-04-27 04:53:00 +0200 | <abastro[m]> | <del>DeriveFoldable is opinionated, we need remove ree</del> |
2022-04-27 04:53:25 +0200 | <abastro[m]> | Btw, for Monoid, there are single instance possible for product types. Why do we not have DeriveMonoid? |
2022-04-27 04:55:01 +0200 | <abastro[m]> | Also DeriveEnum |
2022-04-27 04:55:09 +0200 | <abastro[m]> | (For sum type) |
2022-04-27 04:55:56 +0200 | <[Leary]> | fraznel: BTW, you might find that existing newtypes already give you what you want; e.g. via something like dualFoldMap f = getDual . foldMap (Dual . f) |
2022-04-27 04:56:59 +0200 | <abastro[m]> | Is Foldable instance of Dual sufficiently efficient? |
2022-04-27 04:57:13 +0200 | <abastro[m]> | You know.. e.g. on list, it won't work well. |
2022-04-27 04:58:43 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving) |
2022-04-27 04:58:47 +0200 | mbuf | (~Shakthi@122.174.175.185) |
2022-04-27 04:58:53 +0200 | <[Leary]> | We're only using the Monoid instance of Dual, with the a single Foldable instance for the Tree. The performance should be the same as regular foldMap. |
2022-04-27 04:59:26 +0200 | <abastro[m]> | Oh |
2022-04-27 04:59:32 +0200 | <abastro[m]> | I missed that part |
2022-04-27 05:00:08 +0200 | <abastro[m]> | Wait, consider how foldr is implemented |
2022-04-27 05:01:26 +0200 | <abastro[m]> | toList would be even more intrusive |
2022-04-27 05:02:04 +0200 | <fraznel> | I'm not comfy with what the dual of something means, would be into reading any blog post or etc to get used to it. Whatever i read probably wont stick until i find a reason to use it. I thought dual was a category thing that you had to evaluate, can you auto get the dual instances of anything or does it need a "dual" like instance |
2022-04-27 05:02:48 +0200 | <[Leary]> | If Tree is a simple binary tree, then dualFoldMap just sees the reversed tree. Dual a <> Dual b = b <> a. That's all you really need to know here. |
2022-04-27 05:02:53 +0200 | <abastro[m]> | I think dual is just there being interpreted like "Reverse" |
2022-04-27 05:03:16 +0200 | inversed | (~inversed@94.13.111.159) |
2022-04-27 05:03:31 +0200 | <[Leary]> | Err, = Dual (b <> a). |
2022-04-27 05:03:48 +0200 | notzmv | (~zmv@user/notzmv) |
2022-04-27 05:04:05 +0200 | <abastro[m]> | Hm having only `dualFoldMap` avoids problem of foldr/toList |
2022-04-27 05:05:26 +0200 | <fraznel> | in Dual a <> Dual b = Dual (b <> a) why is the Dual qualifier needed in the right hand side |
2022-04-27 05:06:03 +0200 | <fraznel> | if Dual is reverse, oh, nvm |
2022-04-27 05:07:25 +0200 | <monochrom> | both sides need the same wrapper for types to match up. |
2022-04-27 05:07:54 +0200 | <abastro[m]> | Perhaps it has another categorical meaning but I only know about part where it means reverse. "Dual" is overloaded term in math, as well. |
2022-04-27 05:08:41 +0200 | <fraznel> | i miss workin in haskell |
2022-04-27 05:08:42 +0200 | <abastro[m]> | Group dual, category dual, point <-> line dual ... |
2022-04-27 05:09:11 +0200 | <monochrom> | Yeah I think this one is named Dual because the author ran out of good names. |
2022-04-27 05:09:13 +0200 | <fraznel> | the first time i saw Dual was reading about co-monads in a post by ekmett so i think I lumped it in with co-monad stuff in my mind |
2022-04-27 05:09:37 +0200 | <monochrom> | DON'T TRUST MEANINGFUL NAMES |
2022-04-27 05:10:14 +0200 | <abastro[m]> | Hahahahaha |
2022-04-27 05:10:24 +0200 | <abastro[m]> | Naming gives meaning to both the object and the name |
2022-04-27 05:12:38 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 246 seconds) |
2022-04-27 05:13:48 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Ping timeout: 250 seconds) |
2022-04-27 05:14:28 +0200 | <abastro[m]> | "Dual" and "Co-" are two incredibly overloaded terms in matu |
2022-04-27 05:14:32 +0200 | <abastro[m]> | Math* |
2022-04-27 05:15:24 +0200 | [Leary] | (~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) (Remote host closed the connection) |
2022-04-27 05:15:28 +0200 | <fraznel> | good to know, next time i run into co or dual i'll go straight to the instance definitions to reason about em :P |
2022-04-27 05:20:53 +0200 | kimjetwav | (~user@2607:fea8:2362:b400:5885:9431:ca89:9663) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)) |
2022-04-27 05:21:34 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 05:22:11 +0200 | <fraznel> | thanks for the help grokking that stuff :) |
2022-04-27 05:23:07 +0200 | abrantesasf | (~abrantesa@179.217.49.34) |
2022-04-27 05:24:25 +0200 | abrantesasf | (~abrantesa@179.217.49.34) (Remote host closed the connection) |
2022-04-27 05:25:40 +0200 | hexfive | (~eric@50.35.83.177) |
2022-04-27 05:27:44 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 05:32:06 +0200 | abastro | (~abab9579@192.249.26.179) |
2022-04-27 05:33:39 +0200 | <dmj`> | "meaningful names considered harmful" |
2022-04-27 05:34:42 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 276 seconds) |
2022-04-27 05:34:56 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) |
2022-04-27 05:39:59 +0200 | abastro | (~abab9579@192.249.26.179) (Ping timeout: 256 seconds) |
2022-04-27 05:42:37 +0200 | vicfred | (~vicfred@user/vicfred) |
2022-04-27 05:47:33 +0200 | searemind | (~searemind@122.161.49.249) |
2022-04-27 05:48:02 +0200 | searemind | (~searemind@122.161.49.249) (Client Quit) |
2022-04-27 05:48:49 +0200 | abrantesasf | (~abrantesa@179.217.49.34) |
2022-04-27 05:49:33 +0200 | abrantesasf | (~abrantesa@179.217.49.34) (Remote host closed the connection) |
2022-04-27 05:52:44 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) |
2022-04-27 05:52:52 +0200 | <EvanR> | it seems tricky to come up with and use unmeaningful names, since they gain meaning through use |
2022-04-27 05:53:19 +0200 | nattiestnate | (~nate@202.138.250.13) (Quit: WeeChat 3.5) |
2022-04-27 05:53:35 +0200 | nattiestnate | (~nate@202.138.250.10) |
2022-04-27 05:53:46 +0200 | goepsilongo_ | (~goepsilon@2603-7000-ab00-62ed-2999-d4f9-6568-086f.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com) |
2022-04-27 05:56:59 +0200 | jhagborg | (~jhagborg@068-187-237-099.res.spectrum.com) (Client Quit) |
2022-04-27 05:57:19 +0200 | vonfry | (~user@139.227.167.170) |
2022-04-27 05:57:36 +0200 | vonfry | (~user@139.227.167.170) (Remote host closed the connection) |
2022-04-27 06:00:17 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-04-27 06:00:38 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-04-27 06:01:11 +0200 | jargon | (~jargon@174-22-223-120.phnx.qwest.net) |
2022-04-27 06:03:50 +0200 | nattiestnate | (~nate@202.138.250.10) (Quit: WeeChat 3.5) |
2022-04-27 06:11:23 +0200 | irfan | (~irfan@user/irfan) |
2022-04-27 06:13:29 +0200 | <Andrew> | "IO Monad" |
2022-04-27 06:13:56 +0200 | <Andrew> | https://blog.jle.im/entry/io-monad-considered-harmful.html |
2022-04-27 06:14:12 +0200 | <Andrew> | I mean, it is technically a monad behind |
2022-04-27 06:14:20 +0200 | <Andrew> | But there's very little monadic about it |
2022-04-27 06:18:30 +0200 | <monochrom> | Yeah I just say IO. |
2022-04-27 06:19:16 +0200 | <monochrom> | No one teaches school arithmetic by saying "the integer ring" all the time. It's just the integers. |
2022-04-27 06:19:24 +0200 | cdman | (~dcm@27.2.218.68) |
2022-04-27 06:19:24 +0200 | cdman | (~dcm@27.2.218.68) (Changing host) |
2022-04-27 06:19:24 +0200 | cdman | (~dcm@user/dmc/x-4369397) |
2022-04-27 06:23:16 +0200 | <monochrom> | The R^3 differentiable Hausdorf manifold Lesbegue measurable Euclidean metric inner product vector space, defender of the faith, king of Narnia, emperor of the Lone Islands and other realms. >:) |
2022-04-27 06:29:38 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::aa1d) (Ping timeout: 250 seconds) |
2022-04-27 06:34:17 +0200 | jargon | (~jargon@174-22-223-120.phnx.qwest.net) (Remote host closed the connection) |
2022-04-27 06:34:49 +0200 | jargon | (~jargon@174-22-223-120.phnx.qwest.net) |
2022-04-27 06:37:50 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) |
2022-04-27 06:47:54 +0200 | <parsnip> | i thought it was the integer module? |
2022-04-27 06:50:12 +0200 | <Inst[m]> | does anyone know if there's a way to get Haskell to have automatic case fallthrough? |
2022-04-27 06:50:13 +0200 | <Inst[m]> | i.e, if I have a partial function, and I have stacked case-ofs |
2022-04-27 06:50:27 +0200 | <Axman6> | There's not a whole lot that you can do with IO that's useful without using the monad interface to it though |
2022-04-27 06:50:41 +0200 | <Inst[m]> | right now, I'm using case k of {a -> y; _-> case k of {... |
2022-04-27 06:51:16 +0200 | <monochrom> | Axman6: Same could be said of the integer ordered ring but meh. |
2022-04-27 06:51:34 +0200 | <monochrom> | and defender of the faith. |
2022-04-27 06:51:39 +0200 | <monochrom> | I mean >:) |
2022-04-27 06:53:28 +0200 | <monochrom> | integer ordered module principle ideal unique factorization domain ring >:) |
2022-04-27 06:53:39 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) (Ping timeout: 240 seconds) |
2022-04-27 06:54:41 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-27 06:55:43 +0200 | img | (~img@user/img) |
2022-04-27 06:56:11 +0200 | <monochrom> | Ugh, s/module/torsion-free module/ haha |
2022-04-27 06:57:18 +0200 | img | (~img@user/img) (Client Quit) |
2022-04-27 06:57:37 +0200 | <Axman6> | geez man, so loose with your language! be more careful :P |
2022-04-27 06:57:49 +0200 | <Axman6> | Someone might not know what you're talking about! |
2022-04-27 06:58:44 +0200 | img | (~img@user/img) |
2022-04-27 07:04:14 +0200 | <EvanR> | The IO javascript callback chain |
2022-04-27 07:04:40 +0200 | <EvanR> | (know your audience, I guess) |
2022-04-27 07:07:35 +0200 | [Leary] | (~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) |
2022-04-27 07:10:11 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-04-27 07:14:26 +0200 | liz | (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal) |
2022-04-27 07:18:01 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-04-27 07:20:08 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 07:24:04 +0200 | raym | (~raym@user/raym) (Ping timeout: 272 seconds) |
2022-04-27 07:24:19 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-04-27 07:29:26 +0200 | raym | (~raym@user/raym) |
2022-04-27 07:34:26 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-04-27 07:34:35 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-27 07:35:51 +0200 | michalz | (~michalz@185.246.204.125) |
2022-04-27 07:35:58 +0200 | img | (~img@user/img) |
2022-04-27 07:45:34 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-04-27 07:46:06 +0200 | jargon | (~jargon@174-22-223-120.phnx.qwest.net) (Remote host closed the connection) |
2022-04-27 07:46:11 +0200 | slack1256 | (~slack1256@191.126.227.217) (Remote host closed the connection) |
2022-04-27 07:47:48 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-27 07:48:27 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-27 07:49:51 +0200 | img | (~img@user/img) |
2022-04-27 07:52:35 +0200 | son0p | (~ff@181.136.122.143) (Ping timeout: 256 seconds) |
2022-04-27 07:58:16 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 272 seconds) |
2022-04-27 08:00:12 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-04-27 08:10:43 +0200 | [Leary] | (~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) (Ping timeout: 256 seconds) |
2022-04-27 08:15:23 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) |
2022-04-27 08:18:13 +0200 | briandaed | (~briandaed@109.95.142.93.r.toneticgroup.pl) |
2022-04-27 08:19:34 +0200 | <jonathanx> | Re:lenses. I've been looking into IndexedTraversals, but I'm considering bailing out. I'd like some help implementing the following= "deIndexed :: IndexedTraversal' Int (Vector a) a -> Lens.Traversal' (Vector a) (Int, a)" |
2022-04-27 08:19:50 +0200 | <jonathanx> | Is there a Control.Lens function(s) to do that conversion? |
2022-04-27 08:19:54 +0200 | [Leary] | (~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) |
2022-04-27 08:31:22 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f733:1b0a:d908:7e84) |
2022-04-27 08:33:30 +0200 | benin | (~benin@183.82.204.110) |
2022-04-27 08:36:24 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-04-27 08:38:42 +0200 | <Axman6> | you could do that as a Getter, but not a Traversal |
2022-04-27 08:38:54 +0200 | <Axman6> | unless you really want to be able to change indixes of things |
2022-04-27 08:39:00 +0200 | <Axman6> | indices* |
2022-04-27 08:39:35 +0200 | mmhat | (~mmh@55d4cafc.access.ecotel.net) |
2022-04-27 08:41:26 +0200 | <jonathanx> | Nope, I dont. Hm. |
2022-04-27 08:44:20 +0200 | <jackdk> | Axman6: or as a Fold? |
2022-04-27 08:44:34 +0200 | <Axman6> | possibly |
2022-04-27 08:44:53 +0200 | <Axman6> | Can't remember what the difference is |
2022-04-27 08:44:55 +0200 | fraznel | (~fuag1@174.127.249.180) (Quit: Leaving) |
2022-04-27 08:48:44 +0200 | <jackdk> | Fold lets you compute any monoidal summary over the things you visit, getter locks you to getting the first |
2022-04-27 08:48:47 +0200 | <jackdk> | AIUI |
2022-04-27 08:48:59 +0200 | <Axman6> | Maybe I meant Getting? |
2022-04-27 08:49:21 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 08:52:16 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-04-27 08:58:36 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-04-27 08:59:19 +0200 | mikoto-chan | (~mikoto-ch@84.199.144.235) |
2022-04-27 09:00:17 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-04-27 09:00:19 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 09:06:15 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-04-27 09:06:17 +0200 | abastro | (~abab9579@192.249.26.146) |
2022-04-27 09:08:29 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-04-27 09:12:44 +0200 | alp_ | (~alp@user/alp) |
2022-04-27 09:16:10 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 272 seconds) |
2022-04-27 09:17:59 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) (Ping timeout: 240 seconds) |
2022-04-27 09:20:49 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-04-27 09:24:58 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-04-27 09:25:34 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 09:27:16 +0200 | <jackdk> | % :i Fold |
2022-04-27 09:27:34 +0200 | <jackdk> | where is yahb? |
2022-04-27 09:28:41 +0200 | coot | (~coot@213.134.190.95) |
2022-04-27 09:30:36 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-04-27 09:31:03 +0200 | <Axman6> | jonathanx: There is a fairly fundamental difference between those two types - the former attached an Int to each a in the vector, and gives you the ability to change that a, but the index is immutable. The latter claimes to let you also change indices (which would be quite interesting if you didn't need to ensure that you had one index for every element of the input vector |
2022-04-27 09:32:01 +0200 | chele | (~chele@user/chele) |
2022-04-27 09:32:20 +0200 | <dminuoso> | jonathanx: mind my asking, why exactly do you want this deIndexed in the first place? |
2022-04-27 09:32:33 +0200 | <dminuoso> | I have a very vague idea of why you might think you need it, it's a smell |
2022-04-27 09:33:22 +0200 | coot | (~coot@213.134.190.95) (Client Quit) |
2022-04-27 09:34:28 +0200 | <dminuoso> | I suspect what you're truly looking for is (<.) or (.>) instead. |
2022-04-27 09:35:39 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-04-27 09:36:09 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-04-27 09:36:49 +0200 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-04-27 09:41:03 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 276 seconds) |
2022-04-27 09:46:01 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2022-04-27 09:48:11 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-04-27 09:51:42 +0200 | acidjnk | (~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) |
2022-04-27 10:02:28 +0200 | son0p | (~ff@181.136.122.143) |
2022-04-27 10:05:28 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-04-27 10:06:39 +0200 | haskl | (~haskl@user/haskl) (Ping timeout: 240 seconds) |
2022-04-27 10:08:48 +0200 | haskl | (~haskl@user/haskl) |
2022-04-27 10:09:40 +0200 | ccntrq | (~Thunderbi@2a01:e34:eccb:b060:ae12:4cae:f662:1bed) |
2022-04-27 10:11:54 +0200 | cosimone | (~user@93-44-185-79.ip98.fastwebnet.it) (Ping timeout: 272 seconds) |
2022-04-27 10:12:30 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-04-27 10:14:43 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-04-27 10:16:10 +0200 | dextaa4 | (~dextaa@user/dextaa) |
2022-04-27 10:16:30 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-04-27 10:20:12 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
2022-04-27 10:24:52 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 10:26:34 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
2022-04-27 10:26:46 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-04-27 10:31:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-27 10:32:13 +0200 | dextaa4 | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-04-27 10:36:49 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) |
2022-04-27 10:41:40 +0200 | dextaa4 | (~dextaa@user/dextaa) |
2022-04-27 10:42:29 +0200 | xaotuk | (~sasha@net88-34-245-109.mbb.telenor.rs) |
2022-04-27 10:53:03 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-04-27 10:55:03 +0200 | mikoto-chan | (~mikoto-ch@84.199.144.235) (Ping timeout: 256 seconds) |
2022-04-27 10:57:58 +0200 | dextaa4 | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-04-27 10:57:59 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds) |
2022-04-27 11:02:18 +0200 | krappix | (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) |
2022-04-27 11:03:37 +0200 | mikoto-chan | (~mikoto-ch@37.230.126.249) |
2022-04-27 11:04:28 +0200 | abastro | (~abab9579@192.249.26.146) (Ping timeout: 272 seconds) |
2022-04-27 11:05:59 +0200 | <krappix> | Hello, there is a way to debug a haskell app with stack or cabal ? For example, app installed by cabal, I want to run this app and put some breakpoint in Main.hs in order to figure out how this app work when I run it. |
2022-04-27 11:07:35 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) |
2022-04-27 11:12:27 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-04-27 11:19:51 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 11:22:41 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 11:24:15 +0200 | kspalaiologos | (~kspalaiol@user/kspalaiologos) |
2022-04-27 11:25:03 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
2022-04-27 11:28:12 +0200 | chddr | (~Thunderbi@91.226.35.182) |
2022-04-27 11:29:39 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2022-04-27 11:31:33 +0200 | <kuribas> | hmm, in idris you could make liftA_N, where liftA_N 2 == liftA2, liftA_N 3 == liftA3, etc.. |
2022-04-27 11:31:51 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-04-27 11:32:08 +0200 | <kuribas> | or zipWithN, where zipWithN 1 == map, etc... |
2022-04-27 11:32:08 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 11:32:15 +0200 | ubert1 | (~Thunderbi@2a02:8109:9880:303c:2c6d:3d80:b801:5482) |
2022-04-27 11:34:31 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 11:36:07 +0200 | <abastro[m]> | kuribas: this is the main purpose of dependent types, isn't it? |
2022-04-27 11:36:35 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2022-04-27 11:37:20 +0200 | <Maxdamantus> | Not really, because that doesn't depend on runtime values. |
2022-04-27 11:37:56 +0200 | <Maxdamantus> | You could do it in Haskell by making types that represent natural numbers. |
2022-04-27 11:38:07 +0200 | mikoto-chan | (~mikoto-ch@37.230.126.249) (Ping timeout: 256 seconds) |
2022-04-27 11:38:08 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-04-27 11:39:37 +0200 | <kuribas> | you could do it with type families in haskell. |
2022-04-27 11:40:08 +0200 | <Maxdamantus> | (technically, when you make the `zipWithN` that kuribas is talking about in Idris, it will use dependent types, but you might end up always calling `zipWithN` with static `Nat` values, so it's not a very good demonstration of dependent types) |
2022-04-27 11:40:11 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 260 seconds) |
2022-04-27 11:40:12 +0200 | <kuribas> | abastro[m]: it's one way to use them |
2022-04-27 11:40:39 +0200 | mikoto-chan | (~mikoto-ch@84.199.144.235) |
2022-04-27 11:40:49 +0200 | <kuribas> | Maxdamantus: what's a "static" Nat value? |
2022-04-27 11:41:42 +0200 | <kuribas> | the difference is that in haskell it would need a type level Nat, while in idris you pass a value level Nat. |
2022-04-27 11:42:41 +0200 | <Maxdamantus> | Sure, so that's why it does technically use dependent types, but since you might always use static values it probably isn't a very good use of them. |
2022-04-27 11:42:52 +0200 | <Maxdamantus> | same thing with `the` |
2022-04-27 11:42:53 +0200 | <kuribas> | well, the concept of type level Nat doesn't exist in idris of course. |
2022-04-27 11:43:05 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-27 11:43:48 +0200 | <Maxdamantus> | `the` in Idris uses dynamic typing, but most uses of it probably correspond with `::` in Haskell, which doesn't require dependent typing. |
2022-04-27 11:43:49 +0200 | abastro | (~abab9579@192.249.26.146) |
2022-04-27 11:44:21 +0200 | <Maxdamantus> | the : (t: Type) -> t -> t |
2022-04-27 11:44:39 +0200 | <Maxdamantus> | er, s/dynamic/dependent/ |
2022-04-27 11:45:10 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 11:45:41 +0200 | <kuribas> | part of what makes dependent types interesting is not what you cannot do without it, but also what becomes more ergonomic. |
2022-04-27 11:45:48 +0200 | <kuribas> | Type level programming isn't very ergonomic in haskell. |
2022-04-27 11:46:10 +0200 | <kuribas> | It's fine for simple problems, but can become hairy quickly. |
2022-04-27 11:46:14 +0200 | cosimone | (~user@93-44-185-79.ip98.fastwebnet.it) |
2022-04-27 11:46:28 +0200 | <kuribas> | For example, extending servant. |
2022-04-27 11:46:54 +0200 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2022-04-27 11:46:57 +0200 | <kuribas> | Using servant is fairly easy, but customizing it for your own needs is pretty complicated. |
2022-04-27 11:48:45 +0200 | <kuribas> | A lot of dependently typed stuff can be hacked with haskell, but it usually isn't pretty. |
2022-04-27 11:48:46 +0200 | xaotuk | (~sasha@net88-34-245-109.mbb.telenor.rs) (Read error: Connection reset by peer) |
2022-04-27 11:48:55 +0200 | <kuribas> | For example "singletons". |
2022-04-27 11:49:11 +0200 | <kuribas> | The singleton problem especially arises because type and value level are distinct. |
2022-04-27 11:50:18 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2022-04-27 11:50:44 +0200 | gurkenglas | (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
2022-04-27 11:57:02 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 272 seconds) |
2022-04-27 11:57:43 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 12:01:21 +0200 | mikoto-chan | (~mikoto-ch@84.199.144.235) (Ping timeout: 256 seconds) |
2022-04-27 12:01:57 +0200 | Flow | (~none@gentoo/developer/flow) (Remote host closed the connection) |
2022-04-27 12:02:07 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
2022-04-27 12:03:09 +0200 | <abastro> | Well I've been to arguments that one does not need singletons-y stuffs |
2022-04-27 12:05:36 +0200 | krappix | (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) (Ping timeout: 252 seconds) |
2022-04-27 12:08:01 +0200 | Flow | (~none@gentoo/developer/flow) |
2022-04-27 12:09:27 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-04-27 12:13:01 +0200 | <chddr> | Hi! Does anyone have a good knowledge of System.Process and is willing to help a little? :) |
2022-04-27 12:14:57 +0200 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-27 12:15:49 +0200 | rembo10 | (~rembo10@main.remulis.com) |
2022-04-27 12:15:51 +0200 | <chddr> | I can't understand an issue, when I create a process with `std_out = CreatePipe`, then it seems that the output of my process is buffered and hGetLine on output handle blocks the execution of the rest of the program (hSetBuffering to NoBuffering doesn't help) |
2022-04-27 12:15:52 +0200 | <chddr> | But if I specify std_out = Inherit, I can see as my program is executed that it prints in the same places where it buffered before |
2022-04-27 12:17:24 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f733:1b0a:d908:7e84) (Ping timeout: 240 seconds) |
2022-04-27 12:17:26 +0200 | Brandon_1X | (~brandon@178-79-138-117.ip.linodeusercontent.com) |
2022-04-27 12:17:27 +0200 | <chddr> | But I want to access std_out of my process as a separate handle, i don't need it printed to std_out of the rest of a program. Any ideas what might be the problem here? |
2022-04-27 12:17:37 +0200 | Brandon_1X | (~brandon@178-79-138-117.ip.linodeusercontent.com) (Client Quit) |
2022-04-27 12:22:11 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2022-04-27 12:24:38 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-27 12:26:13 +0200 | andrey | (~andrey@p200300dbcf1ab3003d09e35965a7a51b.dip0.t-ipconnect.de) |
2022-04-27 12:28:43 +0200 | andrey__ | (~andrey@p200300dbcf089700a418461232068800.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-27 12:29:58 +0200 | xff0x_ | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds) |
2022-04-27 12:31:08 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 12:31:25 +0200 | Everything | (~Everythin@37.115.210.35) |
2022-04-27 12:35:50 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-27 12:37:00 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:2363:e5e:a843:8cf3) |
2022-04-27 12:38:27 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-27 12:39:51 +0200 | img | (~img@user/img) |
2022-04-27 12:40:19 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 12:41:00 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-04-27 12:41:45 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds) |
2022-04-27 12:42:14 +0200 | Lord_of_Life_ | Lord_of_Life |
2022-04-27 12:45:00 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
2022-04-27 12:49:36 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-04-27 13:02:42 +0200 | abastro | (~abab9579@192.249.26.146) (Ping timeout: 246 seconds) |
2022-04-27 13:13:22 +0200 | xff0x_ | (~xff0x@om126167099166.29.openmobile.ne.jp) |
2022-04-27 13:13:27 +0200 | abastro | (~abab9579@192.249.26.146) |
2022-04-27 13:14:19 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-27 13:17:12 +0200 | acidjnk | (~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2022-04-27 13:18:07 +0200 | <jackdk> | I am not familiar with these libraries but I would try consuming the child's stdout in a thread |
2022-04-27 13:18:49 +0200 | Brandon_IX | (brandon@2a01:7e00::f03c:92ff:feab:6b7c) |
2022-04-27 13:19:22 +0200 | stefan-_ | (~cri@42dots.de) (Ping timeout: 272 seconds) |
2022-04-27 13:19:30 +0200 | <tomsmeding> | chddr: what child program are you running? |
2022-04-27 13:19:53 +0200 | <tomsmeding> | The default behaviour of most programs is to switch their stdout to block-buffering mode when the output is not connected to a terminal |
2022-04-27 13:21:03 +0200 | <tomsmeding> | compare e.g. `tr a-z A-Z` with `tr a-z A-Z | cat` in your terminal; for the second, copy-paste a longer piece of text a few times :p |
2022-04-27 13:21:21 +0200 | <tomsmeding> | I expect this is the issue you're having, not anything related to System.Process |
2022-04-27 13:21:48 +0200 | dhil | (~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net) |
2022-04-27 13:21:58 +0200 | <tomsmeding> | note: if you set std_out = Inherit, and your Haskell program has stdout connected to a terminal, then the child's stdout is also connected to a terminal so it stays in line-buffered output mode :p |
2022-04-27 13:23:03 +0200 | stefan-_ | (~cri@42dots.de) |
2022-04-27 13:23:22 +0200 | <tomsmeding> | some programs can be instructed to use line buffering anyway, e.g. GNU grep has `--line-buffered` |
2022-04-27 13:24:10 +0200 | abrantesasf | (~abrantesa@189.115.192.139) |
2022-04-27 13:24:41 +0200 | abrantesasf | (~abrantesa@189.115.192.139) (Remote host closed the connection) |
2022-04-27 13:25:09 +0200 | <tomsmeding> | see also https://stackoverflow.com/a/11337109/1608468 |
2022-04-27 13:26:25 +0200 | <tomsmeding> | and the other answers in that thread, in case they are relevant |
2022-04-27 13:30:19 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2022-04-27 13:30:53 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-04-27 13:32:47 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-04-27 13:34:09 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 13:36:21 +0200 | benin | (~benin@183.82.204.110) (Ping timeout: 276 seconds) |
2022-04-27 13:38:23 +0200 | benin | (~benin@183.82.204.110) |
2022-04-27 13:38:24 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2022-04-27 13:44:22 +0200 | xaotuk | (~sasha@2a06:5b00:15fe:9b00::2) |
2022-04-27 13:46:44 +0200 | kspalaiologos | (~kspalaiol@user/kspalaiologos) (Quit: Leaving) |
2022-04-27 13:50:04 +0200 | notzmv | (~zmv@user/notzmv) |
2022-04-27 13:52:23 +0200 | krappix | (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) |
2022-04-27 13:55:39 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 13:59:13 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 256 seconds) |
2022-04-27 14:00:46 +0200 | searemind | (~searemind@122.161.49.249) |
2022-04-27 14:02:18 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 14:02:29 +0200 | zebrag | (~chris@user/zebrag) |
2022-04-27 14:04:16 +0200 | razetime | (~quassel@117.254.34.238) |
2022-04-27 14:05:16 +0200 | Guest4458 | (~Guest44@45.78.5.44.16clouds.com) |
2022-04-27 14:05:34 +0200 | Guest4458 | (~Guest44@45.78.5.44.16clouds.com) (Client Quit) |
2022-04-27 14:10:45 +0200 | searemind | (~searemind@122.161.49.249) (Remote host closed the connection) |
2022-04-27 14:12:17 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-04-27 14:13:26 +0200 | alp_ | (~alp@user/alp) |
2022-04-27 14:21:51 +0200 | hololeap | (~hololeap@user/hololeap) (Quit: Bye) |
2022-04-27 14:25:45 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds) |
2022-04-27 14:27:05 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-04-27 14:27:41 +0200 | <exarkun> | is something like (a -> IO b) -> (b -> IO c) -> a -> IO (b, c) well-known? (maybe not necessarily IO, maybe just a Functor?) |
2022-04-27 14:28:04 +0200 | <exarkun> | (I asked hoogle already) |
2022-04-27 14:28:04 +0200 | acidjnk | (~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) |
2022-04-27 14:29:49 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-04-27 14:30:47 +0200 | Vajb | (~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b) |
2022-04-27 14:31:13 +0200 | <jackdk> | exarkun: I am not aware of a name for this thing, but you could build it out of `(>=>)` and `relude`'s `traverseToSnd` |
2022-04-27 14:33:07 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-04-27 14:33:38 +0200 | <exarkun> | cool, thanks |
2022-04-27 14:35:41 +0200 | cosimone | (~user@93-44-185-79.ip98.fastwebnet.it) (Remote host closed the connection) |
2022-04-27 14:36:22 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-04-27 14:37:46 +0200 | oxide | (~lambda@user/oxide) |
2022-04-27 14:38:13 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 14:38:15 +0200 | raym | (~raym@user/raym) (Ping timeout: 246 seconds) |
2022-04-27 14:38:51 +0200 | <dminuoso> | exarkun: Yes. |
2022-04-27 14:39:18 +0200 | abastro | (~abab9579@192.249.26.146) (Ping timeout: 246 seconds) |
2022-04-27 14:39:33 +0200 | <dminuoso> | Ah hold on, I didn't spot the (a -> ...) inputs. |
2022-04-27 14:41:37 +0200 | <dminuoso> | It reminds me of `<+> :: Applicative f => f a -> f b -> f (a, b)` as a different way to think of Applicative |
2022-04-27 14:43:11 +0200 | <[exa]> | underrated representation^ |
2022-04-27 14:43:28 +0200 | <dminuoso> | Well it's also not completely honest represetation. |
2022-04-27 14:44:15 +0200 | <geekosaur> | I tried generalizing it to Profunctor and still didn't find anything |
2022-04-27 14:45:15 +0200 | <dminuoso> | p a b -> p b c -> p a (b, c) |
2022-04-27 14:45:18 +0200 | <dminuoso> | Certainly looks a bit more charming |
2022-04-27 14:45:50 +0200 | <dminuoso> | I guess this looks a bit like Strong |
2022-04-27 14:47:21 +0200 | abastro | (~abab9579@192.249.26.146) |
2022-04-27 14:49:12 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) |
2022-04-27 14:52:56 +0200 | <dminuoso> | uncurry' :: Strong p => p a (b -> c) -> p (a, b) c |
2022-04-27 14:52:57 +0200 | <dminuoso> | Mmm |
2022-04-27 14:54:16 +0200 | raym | (~raym@user/raym) |
2022-04-27 14:54:38 +0200 | <exarkun> | now I gotta learn about profunctors but before I can do that I gotta learn about hasks |
2022-04-27 14:55:57 +0200 | <dminuoso> | Honestly you dont. |
2022-04-27 14:57:03 +0200 | <dminuoso> | If Functor is a type that you can fmap over one type variable, and Contravariant is a type that contramap over one type variable, a Profunctor is both a Functor in one and Contravariant in the other. |
2022-04-27 14:57:06 +0200 | <dminuoso> | That's it. |
2022-04-27 14:57:07 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 260 seconds) |
2022-04-27 14:57:41 +0200 | <dminuoso> | lmap :: (a -> b) -> p b c -> p a c |
2022-04-27 14:57:43 +0200 | <dminuoso> | rmap :: (b -> c) -> p a b -> p a c |
2022-04-27 14:57:45 +0200 | <dminuoso> | Nothing more. |
2022-04-27 14:57:50 +0200 | <[exa]> | exarkun: I learned profunctors from prolens in a "type implementations for these types" game |
2022-04-27 14:58:55 +0200 | <dminuoso> | You can start by the observation that you can covariantly map over (->) in the output type and contravariantly map over the input type. The Profunctor instance of (->) is nothing more than `lmap` (contravariantly mapping over the input) and `rmap` (covariantly mapping over the output). |
2022-04-27 15:04:34 +0200 | mmhat | (~mmh@55d4cafc.access.ecotel.net) (Quit: WeeChat 3.5) |
2022-04-27 15:05:09 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
2022-04-27 15:14:39 +0200 | raym | (~raym@user/raym) (Ping timeout: 240 seconds) |
2022-04-27 15:20:42 +0200 | raym | (~raym@user/raym) |
2022-04-27 15:20:43 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-27 15:23:56 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-04-27 15:24:59 +0200 | raym | (~raym@user/raym) (Ping timeout: 240 seconds) |
2022-04-27 15:26:39 +0200 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) |
2022-04-27 15:31:00 +0200 | raym | (~raym@user/raym) |
2022-04-27 15:31:22 +0200 | __monty__ | (~toonn@user/toonn) |
2022-04-27 15:36:04 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 15:38:59 +0200 | abastro | (~abab9579@192.249.26.146) (Ping timeout: 240 seconds) |
2022-04-27 15:40:39 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-04-27 15:41:43 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-27 15:42:16 +0200 | xsarnik | (xsarnik@lounge.fi.muni.cz) (Ping timeout: 248 seconds) |
2022-04-27 15:42:28 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 15:43:06 +0200 | xstill- | (xstill@fimu/xstill) (Ping timeout: 276 seconds) |
2022-04-27 15:44:34 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-04-27 15:47:39 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
2022-04-27 15:51:00 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-04-27 15:51:00 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-04-27 15:51:00 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-04-27 15:51:12 +0200 | Guest81 | (~Guest81@103.159.43.230) |
2022-04-27 15:51:12 +0200 | xsarnik | (xsarnik@lounge.fi.muni.cz) |
2022-04-27 15:51:18 +0200 | <Guest81> | Hi |
2022-04-27 15:51:34 +0200 | <[exa]> | o/ |
2022-04-27 15:51:40 +0200 | <Guest81> | What up |
2022-04-27 15:52:59 +0200 | Guest81 | (~Guest81@103.159.43.230) (Client Quit) |
2022-04-27 15:53:14 +0200 | Guest81 | (~Guest81@103.159.43.230) |
2022-04-27 15:54:09 +0200 | raym | (~raym@user/raym) (Ping timeout: 276 seconds) |
2022-04-27 15:54:43 +0200 | xstill- | (xstill@fimu/xstill) |
2022-04-27 15:54:57 +0200 | Guest81 | (~Guest81@103.159.43.230) (Client Quit) |
2022-04-27 15:55:23 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-04-27 15:55:29 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 15:55:32 +0200 | raym | (~raym@user/raym) |
2022-04-27 15:58:24 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-04-27 15:58:41 +0200 | kaph_ | (~kaph@net-2-42-128-49.cust.vodafonedsl.it) |
2022-04-27 15:58:50 +0200 | kaph | (~kaph@net-2-42-128-49.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-04-27 16:06:28 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-04-27 16:09:55 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2022-04-27 16:10:51 +0200 | <shapr> | good MORNING |
2022-04-27 16:11:03 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 276 seconds) |
2022-04-27 16:11:12 +0200 | <geekosaur> | ohai |
2022-04-27 16:12:34 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-04-27 16:12:41 +0200 | <tomsmeding> | good afternoon :) |
2022-04-27 16:12:41 +0200 | <absence> | what could be wrong when "TimeZone minutes summer name <- getCurrentTimeZone" returns the right name, but the offset (minutes) is 0? |
2022-04-27 16:13:05 +0200 | <absence> | also summer is false |
2022-04-27 16:13:07 +0200 | <shapr> | I did a 20 minute presentation on random testing yesterday, was fun https://github.com/shapr/randomtesting |
2022-04-27 16:13:52 +0200 | shriekingnoise | (~shrieking@201.231.16.156) |
2022-04-27 16:14:56 +0200 | <shapr> | I also got a really cool idea from someone during a test run of the presentation, they said "Could QuickCheck memoize random inputs to make each unique?" |
2022-04-27 16:15:18 +0200 | frost | (~frost@user/frost) (Ping timeout: 252 seconds) |
2022-04-27 16:15:22 +0200 | zer0bitz | (~zer0bitz@2001:2003:f444:8f00:d98c:fe22:c3d0:13a8) |
2022-04-27 16:15:26 +0200 | <shapr> | That sounds like an easy change with good benefit? |
2022-04-27 16:15:56 +0200 | <tomsmeding> | each _what_ unique? |
2022-04-27 16:16:54 +0200 | <shapr> | It's easy for QC to generate some number of duplicate inputs in a single run, would be nice if inputs were checked for uniqueness in a particular run. |
2022-04-27 16:17:12 +0200 | <shapr> | like "already tried this input for this run, don't need to try it again" kind of thing |
2022-04-27 16:17:27 +0200 | <tomsmeding> | that would add an Eq constraint to quickCheck I guess |
2022-04-27 16:17:38 +0200 | <tomsmeding> | well, Ord to do it remotely efficiently |
2022-04-27 16:17:38 +0200 | <shapr> | huh, good point |
2022-04-27 16:17:51 +0200 | <tomsmeding> | (to not resort to O(n^2) checking) |
2022-04-27 16:18:34 +0200 | <shapr> | while preparing for this presentation I found https://github.com/nick8325/quickcheck-with-counterexamples |
2022-04-27 16:19:02 +0200 | <shapr> | I'd like to have that as part of a standard testing workflow. |
2022-04-27 16:19:14 +0200 | <tomsmeding> | also the Arbitrary (a -> b) instance is trouble there |
2022-04-27 16:19:20 +0200 | <geekosaur> | absence, can't reproduce that here |
2022-04-27 16:19:23 +0200 | <tomsmeding> | though I guess one should use Fun instead then |
2022-04-27 16:19:26 +0200 | <geekosaur> | Prelude Data.Time.LocalTime> getCurrentTimeZone >>= \(TimeZone {..}) -> return (timeZoneMinutes, timeZoneSummerOnly) |
2022-04-27 16:19:26 +0200 | <geekosaur> | (-240,True) |
2022-04-27 16:19:50 +0200 | <shapr> | Oh, I haven't thought about producing unique functions |
2022-04-27 16:19:54 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-04-27 16:20:10 +0200 | <geekosaur> | (sadly the Show instance for TimeZone is crap) |
2022-04-27 16:20:14 +0200 | <tomsmeding> | well quickcheck has support for generating functions as some kind of decision tree; IIRC that's the 'Fun' type. Those could have Ord easily |
2022-04-27 16:20:29 +0200 | <tomsmeding> | but you'd be forced to use the newtype |
2022-04-27 16:21:04 +0200 | <shapr> | It sounds like a worthwhile blog post if nothing else. |
2022-04-27 16:21:20 +0200 | <shapr> | describe the idea, try it out, see if it helps at all |
2022-04-27 16:21:40 +0200 | <tomsmeding> | I would kind of doubt that duplicate inputs really occur that often with most generators |
2022-04-27 16:22:02 +0200 | <shapr> | Happens often when I pay attention, but I don't have any actual recorded data |
2022-04-27 16:22:41 +0200 | <shapr> | so could be selection bias, I was looking for it when it happened :-) |
2022-04-27 16:23:09 +0200 | <shapr> | tomsmeding: any other prop testing low hanging fruit comes to mind? |
2022-04-27 16:23:13 +0200 | <absence> | geekosaur: yeah, it's definitely not normal |
2022-04-27 16:23:24 +0200 | raym | (~raym@user/raym) (Ping timeout: 276 seconds) |
2022-04-27 16:23:43 +0200 | <shapr> | I'd like to do a demo of *all* the cool tools for prop testing in Haskell |
2022-04-27 16:23:45 +0200 | raym | (~raym@user/raym) |
2022-04-27 16:24:49 +0200 | <geekosaur> | anyway it sounds like it thinks you're in UTC. if I ran that in the context of my IRC client it would do that, but that's because I deliberately run my IRC client in UTC |
2022-04-27 16:26:02 +0200 | <absence> | geekosaur: but then the "name" should've been UTC, and not my local time zone |
2022-04-27 16:26:30 +0200 | <geekosaur> | hrm |
2022-04-27 16:26:56 +0200 | <absence> | hm, actually it seems like "name" just contains the first part of whatever the TZ env variable is set to |
2022-04-27 16:27:04 +0200 | <absence> | i can put garbage in there and it will tell me that's the time zone |
2022-04-27 16:28:10 +0200 | <tomsmeding> | shapr: hmm, indeed small values seem to be generated lots of times |
2022-04-27 16:28:34 +0200 | <geekosaur> | I looked at the implementation and it's doing the right thing via system libc functions, so unless that's somehow jacked up it should be correct |
2022-04-27 16:28:58 +0200 | <tomsmeding> | I told it to test a (Int -> Bool) property 10000 times, and it got zero 323x, -1 242x, ..., 6 140x, ... 37 51x, ... 83 2x |
2022-04-27 16:29:17 +0200 | <tomsmeding> | shapr: smallcheck feels relevant here |
2022-04-27 16:29:39 +0200 | <tomsmeding> | there's also hedgehog but that's mostly a different interface for the same idea as quickcheck |
2022-04-27 16:30:08 +0200 | <janus> | i think the fact that you can choose your distribution and name it is a pretty stark difference |
2022-04-27 16:30:19 +0200 | <tomsmeding> | absence: what does `timedatectl status` return on the command line |
2022-04-27 16:30:29 +0200 | <abastro[m]> | Choose distribution? |
2022-04-27 16:30:33 +0200 | <tomsmeding> | janus: true, the interface is quite different :p |
2022-04-27 16:31:08 +0200 | <absence> | tomsmeding: command not found :D i guess the docker image doesn't have that |
2022-04-27 16:31:10 +0200 | <tomsmeding> | abastro[m]: quickcheck has Arbitrary instances, so there's one instance for one type; hedgehog instead lets you pass a generator function, so you don't need to define a new type if you want to use a different random generator |
2022-04-27 16:31:19 +0200 | <tomsmeding> | docker complicates things |
2022-04-27 16:31:35 +0200 | <tomsmeding> | absence: does `date` do the right thing :p |
2022-04-27 16:32:10 +0200 | <absence> | tomsmeding: it too does the wrong thing |
2022-04-27 16:32:13 +0200 | <tomsmeding> | absence: what does /etc/localtime point to, and what is in /etc/adjtime (not actually sure what the contents of the latter mean, but for comparison) |
2022-04-27 16:32:27 +0200 | <janus> | abastro[m]: yes, for example 'constant' 'linear' and so on: https://www.youtube.com/watch?v=AIv_9T0xKEo&t=21m22s |
2022-04-27 16:32:43 +0200 | <absence> | tomsmeding: they don't exist, there's only a TZ env variable |
2022-04-27 16:32:56 +0200 | <tomsmeding> | absence: does /usr/share/zoneinfo exist |
2022-04-27 16:33:05 +0200 | searemind | (~searemind@122.161.49.249) |
2022-04-27 16:33:18 +0200 | <absence> | tomsmeding: no, but /share/zoneinfo does... let me try to move it |
2022-04-27 16:33:24 +0200 | <tomsmeding> | lol |
2022-04-27 16:33:25 +0200 | <janus> | abastro[m]: if you turn those diagrams 90 deg, they look like distributions, no? |
2022-04-27 16:33:28 +0200 | <geekosaur> | if the date command is misbehaving the same way, you probably aren't going to fix this readily |
2022-04-27 16:33:50 +0200 | <tomsmeding> | absence: I would 'strace -o log.txt date' and find erroring syscalls, but not sure if you have strace :D |
2022-04-27 16:33:57 +0200 | <tomsmeding> | also, not sure if ontopic anymore for #haskell |
2022-04-27 16:34:04 +0200 | <janus> | e.g. for the 'linearFrom' diagram, the yellow line would be the expected value |
2022-04-27 16:34:30 +0200 | <janus> | not sure if i am abusing the word 'distribution' but it seem related |
2022-04-27 16:34:37 +0200 | <absence> | tomsmeding: now i have /usr/share/zoneinfo, and still same problem |
2022-04-27 16:35:12 +0200 | <absence> | tomsmeding: yeah, it's kinda off topic, but not completely. if some syscall fails, why doesn't the haskell function fail? |
2022-04-27 16:36:31 +0200 | <geekosaur> | you would have to study how the libc stuff works to understand that. short answer is, the "syscall" never fails, it just defaults to UTC like you are seeing |
2022-04-27 16:36:40 +0200 | <tomsmeding> | absence: good question, `date` doesn't fail either apparently |
2022-04-27 16:36:46 +0200 | <geekosaur> | this is for historical reasons |
2022-04-27 16:36:52 +0200 | <janus> | absence: you should note that you can't represent tzdb offsets accurately using an integer amount of minutes |
2022-04-27 16:36:58 +0200 | <tomsmeding> | geekosaur: why is "syscall" in scaarequotes |
2022-04-27 16:36:59 +0200 | <janus> | absence: the tzdb will use seconds for LMT |
2022-04-27 16:37:14 +0200 | <geekosaur> | because it's not really a system (kernel) call |
2022-04-27 16:37:22 +0200 | <geekosaur> | the kernel always works in UTC |
2022-04-27 16:37:38 +0200 | <tomsmeding> | I would look at the strace output to find file system accesses that fail |
2022-04-27 16:37:40 +0200 | <janus> | absence: so even if you make it work for current dates, it is gonna break for dates before the adoption of time zones, where LMT is used |
2022-04-27 16:37:41 +0200 | <geekosaur> | user presentation is in userspace |
2022-04-27 16:37:49 +0200 | <tomsmeding> | like, looking up some time zone database file which fails :p |
2022-04-27 16:37:53 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-04-27 16:37:56 +0200 | <tomsmeding> | _that_'s the syscalls I meant |
2022-04-27 16:38:29 +0200 | <geekosaur> | also it's complicated by the fact that TZ isn't necessarily looking in the timezone database, there's a TZ syntax to define a timezone in place |
2022-04-27 16:38:34 +0200 | searemind | (~searemind@122.161.49.249) (Remote host closed the connection) |
2022-04-27 16:38:46 +0200 | <tomsmeding> | like, my `date` opens /etc/localtime, and that already doesn't exist on absence's docker image, so I would be curious to see what `date` then tries |
2022-04-27 16:38:52 +0200 | <geekosaur> | TZ=FOO1:30BAR0:45 is legal and defines a timezone |
2022-04-27 16:39:25 +0200 | <janus> | absence: if you wanna get away from depending on so much runtime state, you can compile the tzdb into your application using the tz/tzdata packages that i have taken over |
2022-04-27 16:39:28 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2022-04-27 16:39:35 +0200 | <janus> | @package tz |
2022-04-27 16:39:35 +0200 | <lambdabot> | https://hackage.haskell.org/package/tz |
2022-04-27 16:41:16 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-04-27 16:42:27 +0200 | <absence> | tomsmeding: i put strace in the docker image, and the problem turned out to be that it was looking for the zoneinfo in a completely unexpected place. setting TZDIR works around the issue. interesting that glibc just does the wrong thing in silence, but that's how it is i guess |
2022-04-27 16:42:50 +0200 | <tomsmeding> | absence: glibc is interesting in general |
2022-04-27 16:43:08 +0200 | <tomsmeding> | but nice that you found out :) |
2022-04-27 16:43:19 +0200 | <tomsmeding> | (what was the 'completely unexpected place'?) |
2022-04-27 16:43:55 +0200 | <absence> | janus: thanks, i'll keep that in mind for the future. unfortunately i'm currently just calling code that uses the "standard" time zone stuff |
2022-04-27 16:43:55 +0200 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-04-27 16:44:07 +0200 | <geekosaur> | as I mentioned earlier, "does the wrong thing in silence" is for historical reasons |
2022-04-27 16:44:43 +0200 | <geekosaur> | the timezone stuff is pretty well specified, even the parts that POSIX left out are specced by other standards becuase so much stuff relies on them |
2022-04-27 16:44:50 +0200 | <geekosaur> | (such as _tzset()) |
2022-04-27 16:46:21 +0200 | f-a | (f2a@f2a.jujube.ircnow.org) |
2022-04-27 16:46:28 +0200 | <absence> | tomsmeding: inside the glibc nix package, but the files are in the tzdata package. there's an open issue on it |
2022-04-27 16:46:58 +0200 | <tomsmeding> | heh |
2022-04-27 16:46:59 +0200 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 240 seconds) |
2022-04-27 16:47:19 +0200 | <tomsmeding> | absence: if you'd said "I'm using docker and nix" from the beginning, I would've tableflipped and had no idea |
2022-04-27 16:47:29 +0200 | <janus> | hahah |
2022-04-27 16:47:46 +0200 | <absence> | geekosaur: historical or not, i would've preferred to get an indication that something was wrong, and not just the wrong answer when the same system call apparently lies about the time zone name |
2022-04-27 16:48:13 +0200 | janus | patiently waits for maerwald to enter the discussion ( think he has opinions on nix? ) |
2022-04-27 16:48:20 +0200 | <absence> | tomsmeding: good to know, i won't mention that in the future ;D |
2022-04-27 16:48:59 +0200 | <tomsmeding> | absence: presumably what's doing the thing here is not a system call; glibc (that `date` uses) reads TZ, looks up that timezone in what it thinks is the db, fails, shrugs, returns 0 with name from TZ, and `date` is none the wiser |
2022-04-27 16:50:04 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-04-27 16:50:11 +0200 | <absence> | yes.. while indicating some kind of failure would be the best option, the next best would be to not use the name from TZ :) |
2022-04-27 16:50:25 +0200 | <tomsmeding> | I guess :p |
2022-04-27 16:51:32 +0200 | <absence> | anyway, i've learned yet another unix footgun the hard way, so that's fun. thanks for the help :) |
2022-04-27 16:52:18 +0200 | <f-a> | I am battling some Template Haskell (and what I believe is splicing scope) http://paste.debian.net/plain/1239198 |
2022-04-27 16:52:28 +0200 | <f-a> | of course inverting the two lines makes the example work |
2022-04-27 16:52:35 +0200 | <f-a> | is there any other way around it? |
2022-04-27 16:52:56 +0200 | <tomsmeding> | don't think so |
2022-04-27 16:53:23 +0200 | <f-a> | ah! I suspected as much. Disappointing but understandable |
2022-04-27 16:53:39 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-04-27 16:56:40 +0200 | <tomsmeding> | f-a: you may try `mkName "hey2"` instead of `'hey2`, but that might fail as well |
2022-04-27 17:00:58 +0200 | Guest|30 | (~Guest|30@p548a4fd5.dip0.t-ipconnect.de) |
2022-04-27 17:01:00 +0200 | Guest|30 | (~Guest|30@p548a4fd5.dip0.t-ipconnect.de) (Client Quit) |
2022-04-27 17:01:06 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-04-27 17:01:36 +0200 | <f-a> | mhh alas indeed it still complains • Variable not in scope: hey2 :: Card tomsmeding |
2022-04-27 17:02:06 +0200 | <geekosaur> | tomsmeding is correct, there is no error return (nor any API for one) at the level of libc |
2022-04-27 17:02:40 +0200 | <geekosaur> | f-a, I'm pretty sure that is the TH staging restriction and there's no way around it |
2022-04-27 17:06:21 +0200 | zfnmxt | (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host) |
2022-04-27 17:06:21 +0200 | zfnmxt | (~zfnmxtzfn@user/zfnmxt) |
2022-04-27 17:06:36 +0200 | <abastro[m]> | Ahh |
2022-04-27 17:06:37 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:2363:e5e:a843:8cf3) (Quit: WeeChat 2.8) |
2022-04-27 17:07:20 +0200 | <f-a> | I see, I see, thanks |
2022-04-27 17:13:58 +0200 | krappix | (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) (Ping timeout: 252 seconds) |
2022-04-27 17:15:28 +0200 | cdman | (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
2022-04-27 17:19:49 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 17:21:53 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-27 17:22:42 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 17:27:20 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
2022-04-27 17:31:17 +0200 | dsrt^ | (~dsrt@50.227.69.228) |
2022-04-27 17:33:55 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-04-27 17:36:29 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-04-27 17:36:43 +0200 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-27 17:36:51 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2022-04-27 17:37:33 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-04-27 17:37:47 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 17:39:54 +0200 | xff0x_ | (~xff0x@om126167099166.29.openmobile.ne.jp) (Read error: Connection reset by peer) |
2022-04-27 17:44:04 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-04-27 17:44:35 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-04-27 17:45:22 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 272 seconds) |
2022-04-27 17:47:38 +0200 | gensyst | (gensyst@user/gensyst) |
2022-04-27 17:47:51 +0200 | <gensyst> | Is there something like Set, but without the Ord requirement? |
2022-04-27 17:48:04 +0200 | <gensyst> | (I want a list of elements known to be unique) |
2022-04-27 17:48:09 +0200 | <janus> | gensyst: HashSet? |
2022-04-27 17:49:12 +0200 | <geekosaur> | you need *some* constraint to do that. You can choose Ord (Set) or Hashable (HashSet) |
2022-04-27 17:49:21 +0200 | <gensyst> | ok thanks mates |
2022-04-27 17:49:27 +0200 | <geekosaur> | probably one could be done with just Eq but it'd be pretty slow |
2022-04-27 17:49:56 +0200 | <gensyst> | i just wanted a unique "list" of DayOfWeek. i guess i'll just do a newtype of DayOfWeek that implements Ord using fromEnum |
2022-04-27 17:50:06 +0200 | <gensyst> | will do for this purpose i guess |
2022-04-27 17:50:19 +0200 | <gensyst> | (assuming i don't assign any greater purpose to this ord) |
2022-04-27 17:50:39 +0200 | ccntrq | (~Thunderbi@2a01:e34:eccb:b060:ae12:4cae:f662:1bed) (Remote host closed the connection) |
2022-04-27 17:52:23 +0200 | <janus> | maybe it is possible to put the newtype in its own module, not export it and then it would be less likely to be abused |
2022-04-27 17:53:07 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 17:53:54 +0200 | <f-a> | another TH question: in a module I have got lots of (top level) `:: Int` declarations, is there a way to get a list of those names to generate/splice — say — a list of all of them? |
2022-04-27 17:55:11 +0200 | <gensyst> | janus yeah just internal no worries :D |
2022-04-27 17:55:32 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 18:00:14 +0200 | ksqsf[m] | (~ksqsfmatr@2001:470:69fc:105::1:d8fa) (Quit: You have been kicked for being idle) |
2022-04-27 18:00:14 +0200 | AdamS[m] | (~adamvalko@2001:470:69fc:105::1:d5f0) (Quit: You have been kicked for being idle) |
2022-04-27 18:00:41 +0200 | ubert1 | (~Thunderbi@2a02:8109:9880:303c:2c6d:3d80:b801:5482) (Remote host closed the connection) |
2022-04-27 18:02:38 +0200 | <c_wraith> | f-a: huh. I would have thought there would be, but I can't actually find anything to do that. I've done similar stuff with instances before, but that's a different sort of problem |
2022-04-27 18:03:33 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-27 18:04:28 +0200 | <geekosaur> | I think you can go through Q to get the compilation context, which gets you into functions in the ghc package, but that would be painful at best |
2022-04-27 18:05:22 +0200 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-04-27 18:05:30 +0200 | <tomsmeding> | f-a: fairly sure you can't, quickcheck uses this utter abomination to get all declarations with name "prop_*": https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/src/Test.QuickCheck.All.html#allPropert… |
2022-04-27 18:06:23 +0200 | <f-a> | spicy! thanks |
2022-04-27 18:06:41 +0200 | <tomsmeding> | I mean, you could copy that code and do your own thing |
2022-04-27 18:06:44 +0200 | <tomsmeding> | but, y'know |
2022-04-27 18:08:06 +0200 | <tomsmeding> | gensyst: DayOfWeek implements Ord? |
2022-04-27 18:09:02 +0200 | <janus> | sunday is the first day of the week, heathens! :O aarararrgh |
2022-04-27 18:09:16 +0200 | <geekosaur> | @let import Data.Time.LocalTime |
2022-04-27 18:09:18 +0200 | <lambdabot> | /sandbox/tmp/.L.hs:123:1: error: |
2022-04-27 18:09:18 +0200 | <lambdabot> | Data.Time.LocalTime: Can't be safely imported! |
2022-04-27 18:09:18 +0200 | <lambdabot> | The package (time-1.9.3) the module resides in isn't trusted. |
2022-04-27 18:09:24 +0200 | <geekosaur> | bah |
2022-04-27 18:09:33 +0200 | <tomsmeding> | % import Data.Time.LocalTime |
2022-04-27 18:09:36 +0200 | <geekosaur> | % it |
2022-04-27 18:09:39 +0200 | <tomsmeding> | oh yahb is still dead |
2022-04-27 18:09:39 +0200 | <geekosaur> | still dead |
2022-04-27 18:09:42 +0200 | <tomsmeding> | RIP |
2022-04-27 18:11:46 +0200 | <geekosaur> | hm, ghci for me says no Ord nor Hashable instance |
2022-04-27 18:11:48 +0200 | <c_wraith> | I'm surprised reifyModule is so limited. |
2022-04-27 18:12:21 +0200 | <geekosaur> | (with the "time" that comes with 8.10.7 at least) |
2022-04-27 18:12:49 +0200 | <tomsmeding> | new in time-1.11 apparently |
2022-04-27 18:12:50 +0200 | <geekosaur> | as of 9.2.2 Ord was added |
2022-04-27 18:13:28 +0200 | <c_wraith> | I understand why `reifyModule =<< thisModule' is limited - the module isn't complete yet. But if applied to a module that's already compiled, I'd hope for more info. |
2022-04-27 18:13:35 +0200 | <janus> | i am puzzled why Monday is the first enumeration value, but "toEnum 0" is Sunday |
2022-04-27 18:13:42 +0200 | <janus> | why did the time author choose one-indexing? |
2022-04-27 18:13:49 +0200 | <tomsmeding> | geekosaur: 9.2.1 too ;) |
2022-04-27 18:14:03 +0200 | <geekosaur> | I don't have that installed to check :) |
2022-04-27 18:14:06 +0200 | dextaa4 | (~dextaa@user/dextaa) |
2022-04-27 18:14:08 +0200 | <tomsmeding> | janus: that's dodgy |
2022-04-27 18:14:45 +0200 | mbuf | (~Shakthi@122.174.175.185) (Quit: Leaving) |
2022-04-27 18:14:49 +0200 | <tomsmeding> | javascript months all over again, but now for day-of-week |
2022-04-27 18:14:55 +0200 | <geekosaur> | trying to satisfy too many masters, probaly (US vs. Euro) |
2022-04-27 18:15:10 +0200 | <janus> | tomsmeding: what is dodgy about it to you? i don't see Enum specifying any first value. and indeed it shouldn't , since that is for bounded, right? |
2022-04-27 18:15:10 +0200 | <geekosaur> | *probably |
2022-04-27 18:15:30 +0200 | <tomsmeding> | janus: the 1-basedness is dodgy IMO |
2022-04-27 18:15:32 +0200 | <gensyst> | tomsmeding, no it doesn't but my newtype wrapper around it now does |
2022-04-27 18:15:41 +0200 | <tomsmeding> | gensyst: lol yay |
2022-04-27 18:15:48 +0200 | <tomsmeding> | gensyst: it does starting from ghc-9.2.1 |
2022-04-27 18:15:55 +0200 | <gensyst> | lol nice! |
2022-04-27 18:16:00 +0200 | <gensyst> | thanks mates :) |
2022-04-27 18:16:19 +0200 | <gensyst> | i'm scared to upgrade to ghc9.x because of my streamly use |
2022-04-27 18:16:20 +0200 | <tomsmeding> | probably Ord was omitted before in order for the order of constructors not to matter |
2022-04-27 18:16:27 +0200 | xaotuk | (~sasha@2a06:5b00:15fe:9b00::2) (Ping timeout: 240 seconds) |
2022-04-27 18:16:28 +0200 | <gensyst> | streamly could performance degrade suddenly not sure |
2022-04-27 18:17:00 +0200 | <janus> | i guess the Enum class is just super weird and i shouldn't worry about it... |
2022-04-27 18:17:14 +0200 | <tomsmeding> | janus: I think that statement holds in general |
2022-04-27 18:17:19 +0200 | <tomsmeding> | or, it should hold |
2022-04-27 18:18:00 +0200 | <c_wraith> | yeah, the Enum instances for Float and Double should probably never be used. :) |
2022-04-27 18:18:41 +0200 | <c_wraith> | the way Enum is defined, it only really makes sense for Int-like things |
2022-04-27 18:18:48 +0200 | <janus> | c_wraith: is there a way to enforce that with compiler warnings? |
2022-04-27 18:19:01 +0200 | <janus> | or hlint or modulint |
2022-04-27 18:20:38 +0200 | <geekosaur> | I don't think hlint knows enough about types, only about code patterns |
2022-04-27 18:20:46 +0200 | <tomsmeding> | hlint doesn't typecheck |
2022-04-27 18:20:47 +0200 | <EvanR> | does it even make sense for Int-like things... |
2022-04-27 18:21:30 +0200 | <EvanR> | > prev minBound |
2022-04-27 18:21:32 +0200 | <lambdabot> | error: |
2022-04-27 18:21:32 +0200 | <lambdabot> | • Variable not in scope: prev :: t0 -> t |
2022-04-27 18:21:32 +0200 | <lambdabot> | • Perhaps you meant one of these: |
2022-04-27 18:21:37 +0200 | <tomsmeding> | > pred minBound |
2022-04-27 18:21:37 +0200 | <geekosaur> | it should be possibe for it to make sense for anything isomorphic to Int (but ideally, Integer). that doesn't mean it does as implemented |
2022-04-27 18:21:38 +0200 | <lambdabot> | *Exception: Prelude.Enum.().pred: bad argument |
2022-04-27 18:21:42 +0200 | <tomsmeding> | > pred minBound :: Int |
2022-04-27 18:21:44 +0200 | <lambdabot> | *Exception: Prelude.Enum.pred{Int}: tried to take `pred' of minBound |
2022-04-27 18:23:02 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 18:23:04 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
2022-04-27 18:23:24 +0200 | <janus> | why not return maxBound for 'prev minBound'? |
2022-04-27 18:23:35 +0200 | <tomsmeding> | > minBound - 1 :: Int |
2022-04-27 18:23:38 +0200 | <lambdabot> | 9223372036854775807 |
2022-04-27 18:23:46 +0200 | <tomsmeding> | because the whole point of succ/pred is that they check bounds |
2022-04-27 18:23:49 +0200 | <EvanR> | depends on what laws we're supposed to have |
2022-04-27 18:24:08 +0200 | <EvanR> | yeah "bound" is the give away there xD |
2022-04-27 18:24:24 +0200 | <tomsmeding> | succ is nice for incrementing counters of type Int, because if it ever overflows, at least it'll crash instead of wrap |
2022-04-27 18:25:26 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2022-04-27 18:25:51 +0200 | <EvanR> | sqlite's strategy for incrementing Int, if you try to increment maxBound, go back and roll a random Int until you find an Int not in use, or crash after enough tries xD |
2022-04-27 18:26:21 +0200 | Everything | (~Everythin@37.115.210.35) (Remote host closed the connection) |
2022-04-27 18:29:46 +0200 | dsrt^ | (~dsrt@50.227.69.228) (Remote host closed the connection) |
2022-04-27 18:29:55 +0200 | acidjnk | (~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-27 18:30:36 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2022-04-27 18:31:11 +0200 | <tomsmeding> | Then you should first define "not in use" lol |
2022-04-27 18:31:15 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-04-27 18:32:13 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-04-27 18:32:54 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-04-27 18:34:18 +0200 | <EvanR> | context would be a table with INTEGER PRIMARY KEY or such |
2022-04-27 18:36:39 +0200 | <tomsmeding> | EvanR: (offtopic) the thing is, the algorithm you describe is linear in the size of the table worst case, but you can do log time if you have a tree index with sizes of each subtree; sqlite (and psql) do have the index, but not the tree sizes and that's dumb |
2022-04-27 18:36:52 +0200 | vorpuni | (~pvorp@2001:861:3881:c690:f0c0:48af:d6b4:5601) |
2022-04-27 18:37:46 +0200 | <tomsmeding> | Not having tree sizes means that SELECT * FROM t OFFSET n; is also linear in n, which is equally dumb |
2022-04-27 18:37:50 +0200 | <tomsmeding> | </rant> |
2022-04-27 18:41:22 +0200 | <EvanR> | how dare you question the universal optimality of "just use a dumb array and loop through it" |
2022-04-27 18:41:27 +0200 | <EvanR> | ism |
2022-04-27 18:41:29 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 18:43:20 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 18:44:33 +0200 | vicfred | (~vicfred@user/vicfred) |
2022-04-27 18:45:43 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 18:46:29 +0200 | <EvanR> | (ok not applicable since there's no such thing as an array of size int64) |
2022-04-27 18:46:34 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 18:49:05 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit) |
2022-04-27 18:52:17 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-27 18:58:35 +0200 | <monochrom> | ooohhhh randomization but must not generate duplicates... Knuth's books have a section on that. |
2022-04-27 18:58:48 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 18:59:21 +0200 | razetime | (~quassel@117.254.34.238) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-04-27 19:01:58 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-04-27 19:03:33 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) (Quit: alx741) |
2022-04-27 19:04:22 +0200 | econo | (uid147250@user/econo) |
2022-04-27 19:09:39 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-04-27 19:13:58 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5) |
2022-04-27 19:15:47 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-04-27 19:20:34 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 19:22:43 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 19:30:42 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-04-27 19:34:02 +0200 | werneta | (~werneta@137.79.197.49) |
2022-04-27 19:36:04 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 19:36:27 +0200 | deadmarshal_ | (~deadmarsh@95.38.114.81) (Ping timeout: 276 seconds) |
2022-04-27 19:36:39 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds) |
2022-04-27 19:36:50 +0200 | irfan | (~irfan@user/irfan) (Remote host closed the connection) |
2022-04-27 19:39:14 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) |
2022-04-27 19:43:38 +0200 | acarrico1 | (~acarrico@dhcp-68-142-48-19.greenmountainaccess.net) (Quit: Leaving.) |
2022-04-27 19:47:08 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) |
2022-04-27 19:47:47 +0200 | <Bulby[m]> | When setting up local hoogle can I search hackage-only packages |
2022-04-27 19:48:52 +0200 | <f-a> | Bulby[m]: does it search anything else? |
2022-04-27 19:49:13 +0200 | <Bulby[m]> | it searches stackage only 🙁 |
2022-04-27 19:49:29 +0200 | <Bulby[m]> | and no hackage docs |
2022-04-27 19:49:47 +0200 | <f-a> | oh |
2022-04-27 19:50:21 +0200 | <dminuoso> | janus: That seems wrong. |
2022-04-27 19:50:27 +0200 | <geekosaur> | the problem with searching hackage is the indexes get too big iirc |
2022-04-27 19:50:28 +0200 | <dminuoso> | Oh gosh. I was scrolled up sorry. |
2022-04-27 19:50:38 +0200 | <dminuoso> | That was re "pred minBound" |
2022-04-27 19:50:39 +0200 | <Bulby[m]> | ... |
2022-04-27 19:50:54 +0200 | <geekosaur> | which is why the default is to search stackage whoich is a reasonable subset |
2022-04-27 19:51:00 +0200 | <Bulby[m]> | can I index only local packages? |
2022-04-27 19:51:04 +0200 | <geekosaur> | yes |
2022-04-27 19:51:09 +0200 | <f-a> | yes |
2022-04-27 19:51:10 +0200 | <f-a> | -l |
2022-04-27 19:51:15 +0200 | <f-a> | when generating |
2022-04-27 19:51:26 +0200 | <Bulby[m]> | would stack throw a wrench in that at all |
2022-04-27 19:51:28 +0200 | <geekosaur> | I forget the incantation but you can tell cabal to create a hoogle index for everything it installs |
2022-04-27 19:51:39 +0200 | <geekosaur> | dunno about stack though, I don't use it |
2022-04-27 19:51:50 +0200 | <geekosaur> | wouldn't surprise me if it had a similar incantation |
2022-04-27 19:52:45 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-27 19:52:58 +0200 | <Bulby[m]> | `stack hoogle` why are you installing stuff 😭 |
2022-04-27 19:53:13 +0200 | <geekosaur> | installing a hoogle for stack? |
2022-04-27 19:53:27 +0200 | <geekosaur> | stack has this thing about keeping everything it uses under its own tight control |
2022-04-27 19:53:38 +0200 | <Bulby[m]> | yes. I hope I don't have to do this for each project |
2022-04-27 19:53:39 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 19:53:51 +0200 | <geekosaur> | it should be able to share it |
2022-04-27 19:54:01 +0200 | <Bulby[m]> | it better 🔪 |
2022-04-27 19:55:25 +0200 | <dminuoso> | Im in emacs, how can I stop all HLS processes running? |
2022-04-27 19:56:09 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 20:02:04 +0200 | acidjnk | (~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) |
2022-04-27 20:02:51 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-27 20:10:35 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) |
2022-04-27 20:11:43 +0200 | jinsun__ | (~jinsun@user/jinsun) () |
2022-04-27 20:12:03 +0200 | tcsavage | (~tcsavage@195.213.144.166) |
2022-04-27 20:16:06 +0200 | yauhsien | (~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
2022-04-27 20:16:50 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 20:17:13 +0200 | <tomsmeding> | $ ps -eo pid,cmd | grep haskell-language-server | grep -v grep | awk '{print $1}' | xargs kill |
2022-04-27 20:17:45 +0200 | <tomsmeding> | (not being serious0 |
2022-04-27 20:17:48 +0200 | <tomsmeding> | s/0/)/ |
2022-04-27 20:20:04 +0200 | <Bulby[m]> | grep -v grep? |
2022-04-27 20:20:08 +0200 | <Bulby[m]> | lol |
2022-04-27 20:20:12 +0200 | <tomsmeding> | grep will find itself |
2022-04-27 20:20:38 +0200 | <tomsmeding> | I mean, if you actually wanted to make this have any kind of robustness, you'd use ps's built-in functionality for filtering processes |
2022-04-27 20:20:43 +0200 | <Bulby[m]> | what does it do - will it break my system if I run it |
2022-04-27 20:20:49 +0200 | <tomsmeding> | (which, incidentally, I've rarely been able to make work) |
2022-04-27 20:21:07 +0200 | <tomsmeding> | Bulby[m]: it'll kill all HLS processes, including anything else that has 'haskell-language-server' in its command line |
2022-04-27 20:21:10 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 272 seconds) |
2022-04-27 20:21:36 +0200 | <tomsmeding> | it will likely not break your system, but nevertheless you probably shouldn't run it if you don't have to |
2022-04-27 20:21:58 +0200 | <Bulby[m]> | lol |
2022-04-27 20:23:39 +0200 | <monochrom> | Consider pgrep and pkill. |
2022-04-27 20:24:06 +0200 | CiaoSen | (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-04-27 20:24:13 +0200 | <tomsmeding> | monochrom: 'pgrep haskell-language-server' returns nothing for me, while there's _definitely_ an HLS running |
2022-04-27 20:24:25 +0200 | <tomsmeding> | and before you ask, 'pgrep haskell-language-server-8.10.7' also returns nothing |
2022-04-27 20:25:19 +0200 | <tomsmeding> | monochrom: https://tomsmeding.com/ss/get/tomsmeding/2nIUHt sorry for text-in-image |
2022-04-27 20:25:32 +0200 | <tomsmeding> | 50% of the time when I try to use pgrep it just... doesn't work |
2022-04-27 20:25:49 +0200 | <Bulby[m]> | yeah wtf |
2022-04-27 20:27:27 +0200 | <monochrom> | That's strange, because if I do "pgrep key", I successfully get one that turns out to be /usr/bin/gnome-keyring-daemon --daemonize --login |
2022-04-27 20:27:57 +0200 | <tomsmeding> | Bulby[m]: more details on "what does it do", for practice reading command lines: 'ps -e' lists all processes, but only the 'pid' and 'cmd' columns; filter on HLS, but not grep itself (which also matches while grep runs, of course); print the first field but ignore leading spaces (different from cut -d' ' -f1); kill all the stuff that comes out |
2022-04-27 20:28:08 +0200 | <tomsmeding> | monochrom: interesting |
2022-04-27 20:28:49 +0200 | <tomsmeding> | monochrom: 'pgrep key' turns up _two_ gnome-keyring-daemon processes for me, with similarly "complex" command lines |
2022-04-27 20:29:03 +0200 | <Bulby[m]> | for me the columns seem to be cut off |
2022-04-27 20:29:15 +0200 | <tomsmeding> | Bulby[m]: on mac? |
2022-04-27 20:29:20 +0200 | <Bulby[m]> | `haskell-languag` |
2022-04-27 20:29:23 +0200 | <Bulby[m]> | on linux |
2022-04-27 20:29:28 +0200 | <monochrom> | It also picks up a "/usr/libexec/gsd-keyboard" and "/usr/libexec/gsd-media-keys" on my ubuntu-laiden laptop. |
2022-04-27 20:29:31 +0200 | <tomsmeding> | Bulby[m]: you're running 'ps -e', not 'ps -eo pid,cmd' |
2022-04-27 20:29:40 +0200 | <Bulby[m]> | oh |
2022-04-27 20:30:06 +0200 | <tomsmeding> | Bulby[m]: default command column is 'comm', which is some crappy AIX legacy compatibility column with limited width; 'cmd' shows the full command |
2022-04-27 20:30:42 +0200 | <tomsmeding> | monochrom: my arch machine doesn't have those, but that's kind of beside the point :p |
2022-04-27 20:30:44 +0200 | hexfive | (~eric@50.35.83.177) (Quit: WeeChat 3.5) |
2022-04-27 20:30:57 +0200 | <tomsmeding> | point is I have no idea what pgrep does |
2022-04-27 20:31:06 +0200 | <Bulby[m]> | haskell-language-server-wrapper is its name |
2022-04-27 20:31:15 +0200 | <geekosaur> | that's just a script |
2022-04-27 20:31:16 +0200 | <Bulby[m]> | odd |
2022-04-27 20:31:23 +0200 | <tomsmeding> | Bulby[m]: that process has a child process with name like 'haskell-language-server-8.10.7' |
2022-04-27 20:31:46 +0200 | <tomsmeding> | if not, then something is going wrong |
2022-04-27 20:32:06 +0200 | <tomsmeding> | the wrapper just detects the project setup and starts the right HLS process, which has a version suffix |
2022-04-27 20:34:47 +0200 | <gensyst> | Is streamly (and other streaming libraries) one of the killer features of Haskell? |
2022-04-27 20:34:54 +0200 | <gensyst> | (What other langs can do this?) |
2022-04-27 20:34:57 +0200 | <gensyst> | this blows my mind |
2022-04-27 20:35:14 +0200 | <gensyst> | others: for loops with state all over the place |
2022-04-27 20:35:41 +0200 | <tomsmeding> | don't Rust iterators try to do a similar thing |
2022-04-27 20:37:23 +0200 | kraftwerk28 | (~kraftwerk@178.62.210.83) (Quit: bruh) |
2022-04-27 20:38:29 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-27 20:40:28 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 20:41:40 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 20:42:13 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-27 20:43:31 +0200 | <shapr> | tomsmeding: I still think memoization of generated values is good low hanging fruit |
2022-04-27 20:44:58 +0200 | <tomsmeding> | shapr: idea: extend `Arbitrary a` with `arbCompare :: a -> a -> Ordering ; default arbCompare :: Ord a => a -> a -> Ordering ; arbCompare = compare` |
2022-04-27 20:45:06 +0200 | <tomsmeding> | (-XDefaultSignatures) |
2022-04-27 20:45:16 +0200 | <tomsmeding> | then only the instances for non-Ord types need to do anything special |
2022-04-27 20:45:18 +0200 | <tomsmeding> | minimal breakage |
2022-04-27 20:45:53 +0200 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection) |
2022-04-27 20:46:27 +0200 | <tomsmeding> | @tell shapr (alternatively: add an `Ord a` constraint to `quickCheck`, and have `quickCheckNoMemo` without the constraint; but then you can't memoise over arguments but not others) |
2022-04-27 20:46:27 +0200 | <lambdabot> | Consider it noted. |
2022-04-27 20:46:51 +0200 | oxide | (~lambda@user/oxide) (Quit: oxide) |
2022-04-27 20:56:37 +0200 | <gensyst> | tomsmeding, not sure.. |
2022-04-27 21:00:23 +0200 | <Bulby[m]> | killer features? |
2022-04-27 21:00:33 +0200 | <Bulby[m]> | like "good" or "bad"? |
2022-04-27 21:00:41 +0200 | <monochrom> | the good kind |
2022-04-27 21:03:38 +0200 | <monochrom> | I have a cunning plan! Use a Bloom filter. :) |
2022-04-27 21:04:02 +0200 | <f-a> | I am a bit unsure by `location` https://hackage.haskell.org/package/template-haskell-2.10.0.0/docs/Language-Haskell-TH.html#g:2 |
2022-04-27 21:04:07 +0200 | <monochrom> | You don't need guaranteed uniqueness, you just need probably unique. |
2022-04-27 21:04:28 +0200 | <f-a> | does «where the computation is spliced» mean «where I ahve written the function» or «where I am putting $(fun)»? |
2022-04-27 21:04:50 +0200 | <geekosaur> | the latter |
2022-04-27 21:04:58 +0200 | <f-a> | makes sense, thanks |
2022-04-27 21:05:42 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-04-27 21:06:04 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 21:06:55 +0200 | xaotuk | (~sasha@net16-38-245-109.mbb.telenor.rs) |
2022-04-27 21:07:46 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-04-27 21:11:26 +0200 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-04-27 21:12:39 +0200 | <tomsmeding> | monochrom: doesn't a bloom filter have the wrong approximation direction? Like, it will say "definitely not seen" or "maybe seen", whereas what you want is "definitely seen" vs "maybe not seen" |
2022-04-27 21:13:06 +0200 | <EvanR> | I wonder if you formally decreased the database from "guaranteed to work" to "probably works" where probably is incredibly probable, across the board, what kind of improvements you could get. No, not talking about mongo |
2022-04-27 21:13:08 +0200 | <tomsmeding> | if you use a bloom filter to exclude stuff, you're going to skip stuff that you've never _actually_ tried but that happen to match the filter |
2022-04-27 21:13:13 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 21:13:25 +0200 | <shapr> | sounds like I missed some interesting backstory |
2022-04-27 21:13:47 +0200 | <Franciman> | tomsmeding: can't you represent definitely seen as definitely not seen |
2022-04-27 21:13:48 +0200 | anomal | (~anomal@87.227.196.109) |
2022-04-27 21:13:49 +0200 | shapr | checks the logs |
2022-04-27 21:13:52 +0200 | <Franciman> | and maybe seen as maybe not seen? |
2022-04-27 21:13:58 +0200 | <tomsmeding> | shapr: limited :p https://ircbrowse.tomsmeding.com/browse/lchaskell?id=530746#trid530746 |
2022-04-27 21:14:06 +0200 | <EvanR> | shapr, keyword sqlite |
2022-04-27 21:14:10 +0200 | <tomsmeding> | Franciman: not in a boom filter |
2022-04-27 21:14:15 +0200 | <Franciman> | cool |
2022-04-27 21:14:17 +0200 | <monochrom> | tomsmeding: Yeah, there is that issue. |
2022-04-27 21:14:20 +0200 | <tomsmeding> | *bloom |
2022-04-27 21:14:23 +0200 | <tomsmeding> | O.o |
2022-04-27 21:14:30 +0200 | <tomsmeding> | it's not explosive, it's not that bad |
2022-04-27 21:14:40 +0200 | <shapr> | EvanR: eh? sqlite? |
2022-04-27 21:15:13 +0200 | <shapr> | oh, you think QC/Hh could save the generated values into sqlite via https://github.com/nick8325/quickcheck-with-counterexamples ? |
2022-04-27 21:15:15 +0200 | <EvanR> | I think they are talking about generating random unused integers |
2022-04-27 21:15:16 +0200 | <shapr> | hmm |
2022-04-27 21:15:34 +0200 | <tomsmeding> | yeah the talk is about memoisation for quickcheck ;) |
2022-04-27 21:15:40 +0200 | <EvanR> | nevermind! |
2022-04-27 21:15:45 +0200 | <tomsmeding> | currently specialised for integers |
2022-04-27 21:15:49 +0200 | <shapr> | EvanR: sounds like you got it right |
2022-04-27 21:16:25 +0200 | <monochrom> | Please don't be fixated on "it must be memoization". |
2022-04-27 21:16:41 +0200 | <tomsmeding> | right, you only need to "memoise" a boolean |
2022-04-27 21:16:44 +0200 | <shapr> | The goal is "each input is unseen" |
2022-04-27 21:16:46 +0200 | <tomsmeding> | so approximating the set of seen values is fine |
2022-04-27 21:16:58 +0200 | <monochrom> | The Y problem is memoization. The X problem is less chance of duplicates. |
2022-04-27 21:17:08 +0200 | <tomsmeding> | shapr: indeed, but having an approximation that sometimes says "not seen" while it actually is, is fine |
2022-04-27 21:17:13 +0200 | <tomsmeding> | as long as it's usually correct |
2022-04-27 21:17:27 +0200 | <tomsmeding> | monochrom suggested bloom filters, but those have the approximation the other way round |
2022-04-27 21:19:14 +0200 | <dolio> | Franciman: That's the problem with being trained to think in classical logic. Semi-decision problems give you intuitionistic logic. :þ |
2022-04-27 21:19:24 +0200 | <Franciman> | ^^ |
2022-04-27 21:19:26 +0200 | <Franciman> | ahah |
2022-04-27 21:19:38 +0200 | <Franciman> | tru |
2022-04-27 21:19:56 +0200 | <dolio> | So you can't always solve ¬P by solving P and then doing the opposite. |
2022-04-27 21:20:09 +0200 | <dolio> | Or, maybe the other way around. |
2022-04-27 21:20:15 +0200 | <dolio> | Solve P by solving ¬P. |
2022-04-27 21:20:46 +0200 | <monochrom> | :) |
2022-04-27 21:22:04 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 21:24:54 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 250 seconds) |
2022-04-27 21:25:00 +0200 | <janus> | dminuoso: if you see Int as a ring, surely prev of minBound should be maxBound. why does it seem wrong to you? You only want it to be a ring if it is unsigned? Just like integer overflow is defined behaviour in C for unsigned types? |
2022-04-27 21:25:42 +0200 | <dminuoso> | The fact that you can see it as that particular ring doesnt mean it should impose the cyclic nature onto every user. |
2022-04-27 21:26:09 +0200 | <janus> | ok, so it is analogous to the argument about monoid |
2022-04-27 21:26:28 +0200 | <janus> | but having it throw an exception also seems to impose a world view upon the user |
2022-04-27 21:26:35 +0200 | <tomsmeding> | especially because when people write Int, they usually intend an approximation of Integer instead of Z/18446744073709551616Z |
2022-04-27 21:26:52 +0200 | <dminuoso> | janus: well that exception is akin to trying `1 <> 1` |
2022-04-27 21:28:30 +0200 | <tomsmeding> | and even if you don't like that usage of Int, a programming language is, unfortunately, intended for humans, not computers :p |
2022-04-27 21:28:32 +0200 | <dminuoso> | I would prefer an pure exception over silently picking *some* value. |
2022-04-27 21:28:45 +0200 | <tomsmeding> | dminuoso++ |
2022-04-27 21:29:05 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1) |
2022-04-27 21:29:22 +0200 | <monochrom> | Whatever you do, you are imposing your world view upon everyone else. |
2022-04-27 21:29:27 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) |
2022-04-27 21:29:33 +0200 | <monochrom> | It is always personal. |
2022-04-27 21:29:45 +0200 | <monochrom> | The odd is never in your favour. |
2022-04-27 21:29:47 +0200 | <dminuoso> | Perhaps the biggest problem is not the behavior, but your expectancy of Enum here. |
2022-04-27 21:29:58 +0200 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-04-27 21:30:18 +0200 | <dminuoso> | Enum does not even demand Ord. |
2022-04-27 21:30:46 +0200 | <tomsmeding> | is there an Enum instance where Ord does not correspond to the implied instance over the mapping to Int with fromEnum/toEnum |
2022-04-27 21:30:49 +0200 | <dolio> | Being a ring where addition wraps doesn't imply anything about a linear ordering on the values of said ring. |
2022-04-27 21:31:24 +0200 | <monochrom> | On even days I use Int for its Z/kZ ness. On odd days I use it as small Integer, somehow knowing the range is enough. |
2022-04-27 21:31:33 +0200 | <dminuoso> | dolio: Was not trying to imply that. My point is rather that there's no clear semantics of what `pred minBound` in general would even mean. |
2022-04-27 21:31:35 +0200 | gensyst | (gensyst@user/gensyst) (Quit: Leaving) |
2022-04-27 21:31:35 +0200 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2022-04-27 21:32:05 +0200 | <monochrom> | All both days I use 8GB RAM as small Turing tape, somehow knowing the range is enough. So there. |
2022-04-27 21:32:19 +0200 | <dolio> | What I'm saying is that it's perfectly consistent to think that arithmetic should wrap and succ should throw an exception on the maximum element. |
2022-04-27 21:32:20 +0200 | cheater | (~Username@user/cheater) |
2022-04-27 21:32:40 +0200 | <monochrom> | Sometimes I go to 16GB RAM, I confess, but that's when it's AOE4. |
2022-04-27 21:32:41 +0200 | <janus> | i sometimes use Word instead of Int, just to avoid the import i'd have to have if i used Word32 or whatever :P |
2022-04-27 21:32:43 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-27 21:33:06 +0200 | <janus> | everybody dirty in their own way :P |
2022-04-27 21:33:10 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-04-27 21:33:22 +0200 | <dolio> | dminuoso: I don't think you were contradicting what I meant. |
2022-04-27 21:33:23 +0200 | <dminuoso> | dolio: then I pull the "programming experience teaches" card that reads under/overflow is only defined for unsigned in C. |
2022-04-27 21:34:14 +0200 | <dolio> | I don't pay any credence to what C does. |
2022-04-27 21:34:34 +0200 | <geekosaur> | C does what is convenient for the compiler author |
2022-04-27 21:34:45 +0200 | <geekosaur> | on that platform |
2022-04-27 21:34:49 +0200 | <dminuoso> | The expectancy that arithmeitc should wrap only exists precisely because some languages have given these semantics toyou. |
2022-04-27 21:35:12 +0200 | <dminuoso> | WEll not perhaps you personally, but I claim this will hold true for most users. |
2022-04-27 21:35:24 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-04-27 21:36:12 +0200 | <janus> | dminuoso: but people are doing performant elliptic curve cryptography using finite fields. so your assertion only makes sense if you include 'math' in 'some languages' |
2022-04-27 21:36:59 +0200 | <tomsmeding> | if you're doing cryptography you better do whatever is necessary to get absolute guarantees on your working types |
2022-04-27 21:37:17 +0200 | <tomsmeding> | "it would be convenient if the standard Int does what I need" doesn't count there |
2022-04-27 21:37:18 +0200 | <EvanR> | janus, i think it's less about "what Int is really" and what behavior do we want from our types |
2022-04-27 21:37:38 +0200 | <EvanR> | and how to get it |
2022-04-27 21:37:58 +0200 | <dminuoso> | Besides, you might reasonably expect `pred x < x` to hold for Int. |
2022-04-27 21:38:43 +0200 | <janus> | given the choice between pred x < x and 'no partial functions in base', i am still not convinced i wouldn't get further with the latter |
2022-04-27 21:39:01 +0200 | <EvanR> | that's a problem with Enum not Int |
2022-04-27 21:39:17 +0200 | <EvanR> | arguably (a problem) |
2022-04-27 21:40:10 +0200 | <tomsmeding> | janus: all this is subjective, but I, for one, would prefer an exception on overflow than wrapping by default |
2022-04-27 21:40:27 +0200 | <tomsmeding> | one should be able to _get_ wrapping, because it's useful sometimes, but usually it's not intended and then an exception would be nicer |
2022-04-27 21:40:42 +0200 | <Cale> | I don't like succ and pred being in Enum at all, they're silly. |
2022-04-27 21:40:53 +0200 | <tomsmeding> | of course trapping on all wrapping arithmetic is a performance issue so we don't do that, but I still prefer `pred minBound == _|_` over wrapping |
2022-04-27 21:41:03 +0200 | <tomsmeding> | if you want the performant version, use `- 1` |
2022-04-27 21:41:20 +0200 | <dminuoso> | I dont like Enum in the first place. |
2022-04-27 21:41:28 +0200 | <dminuoso> | The whole class has weirdness. |
2022-04-27 21:41:28 +0200 | <dolio> | How do you measure "usually it's not intended"? |
2022-04-27 21:41:32 +0200 | <Cale> | There should be two classes: one for toEnum/fromEnum, and the other for the list .. syntax interpretations |
2022-04-27 21:41:42 +0200 | <EvanR> | I would bet most use cases involve some unchecked proof sitting around that overflow or underflow won't happen so doesn't matter how to handle it. Or else the proof is wrong, fix your code |
2022-04-27 21:41:51 +0200 | <koz> | @pl \(k, v) -> (,) <$> go k <*> go v |
2022-04-27 21:41:51 +0200 | <lambdabot> | uncurry ((((,) <$>) .) . (. go) . (<*>) . go) |
2022-04-27 21:41:57 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.5) |
2022-04-27 21:41:57 +0200 | <koz> | LOL, yeah nope. |
2022-04-27 21:42:02 +0200 | <geekosaur> | I should dig out my list thread on Enum/Bounded from years ago :) |
2022-04-27 21:42:06 +0200 | <tomsmeding> | dolio: by personal experience, rarely have I written Int while actually expecting, using and accepting wrapping behaviour |
2022-04-27 21:42:13 +0200 | <EvanR> | ^ |
2022-04-27 21:42:49 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-27 21:43:14 +0200 | <dminuoso> | tomsmeding: Of course now the argument could be made, that you might reasonably expect `pred = (-(1))` to hold |
2022-04-27 21:43:17 +0200 | <EvanR> | because euclid didn't invent geometry on a square tile of size N feet |
2022-04-27 21:44:06 +0200 | <tomsmeding> | :t \go -> uncurry (liftA2 (,)) . bimap go go |
2022-04-27 21:44:09 +0200 | <lambdabot> | Applicative f => (a -> f b) -> (a, a) -> f (b, b) |
2022-04-27 21:44:12 +0200 | <tomsmeding> | koz: ^ ? |
2022-04-27 21:44:15 +0200 | <Cale> | koz: liftA2 (liftA2 (,)) (go . fst) (go . snd) |
2022-04-27 21:44:16 +0200 | <dminuoso> | Cale: toEnum/fromEnum dont belong anywhere. |
2022-04-27 21:44:17 +0200 | <janus> | EvanR: what did euclid believe about the size of the universe ? |
2022-04-27 21:44:19 +0200 | <dminuoso> | Not even a separate class. |
2022-04-27 21:44:37 +0200 | <tomsmeding> | now koz can choose! |
2022-04-27 21:44:52 +0200 | <geekosaur> | euclid wasn't talking about the universe, he was talking about pure geometry |
2022-04-27 21:44:55 +0200 | <EvanR> | janus, are we doing finitism now? xD |
2022-04-27 21:45:08 +0200 | <janus> | yes, i am advancing to the next level |
2022-04-27 21:45:08 +0200 | <tomsmeding> | dminuoso: I _guess_, but /shrug/ (about pred = (-(1))) |
2022-04-27 21:45:11 +0200 | <EvanR> | I use smokescreen and escape |
2022-04-27 21:45:30 +0200 | <koz> | Thanks, that's a bit nicer. Still prefer an explicit lambda. |
2022-04-27 21:45:35 +0200 | <tomsmeding> | eys |
2022-04-27 21:45:37 +0200 | <tomsmeding> | *yes |
2022-04-27 21:45:43 +0200 | chexum_ | (~quassel@gateway/tor-sasl/chexum) |
2022-04-27 21:45:43 +0200 | <koz> | (making your colleagues want to punch you is _not_ a good idea) |
2022-04-27 21:45:48 +0200 | <dminuoso> | tomsmeding: I guess we can file this under "designing programming languages is hard, making choices is harder - but it's very easy to disagree with any design choice" |
2022-04-27 21:45:53 +0200 | <Cale> | (honestly, I also wouldn't go that far with the points-free, though I might convert it to use a single liftA2) |
2022-04-27 21:45:58 +0200 | <geekosaur> | (even in Euclid's time there was an estimate for the Earth's diameter, iirc) |
2022-04-27 21:46:11 +0200 | <koz> | geekosaur: Yep, Aristarches figured that out. |
2022-04-27 21:46:21 +0200 | <koz> | (possible sp of that name) |
2022-04-27 21:46:22 +0200 | <tomsmeding> | koz: I had a nice one a while ago https://ircbrowse.tomsmeding.com/day/lchaskell/2022/04/25?id=527198#trid527198 |
2022-04-27 21:46:43 +0200 | <tomsmeding> | dminuoso: agreed :p, makes me think of https://wiki.haskell.org/Wadler's_Law |
2022-04-27 21:47:56 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2022-04-27 21:48:21 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-04-27 21:48:22 +0200 | tiferrei | (~tiferrei@user/tiferrei) |
2022-04-27 21:48:44 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-04-27 21:49:34 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
2022-04-27 21:49:34 +0200 | <tomsmeding> | like, this is technically semantics, but it's so minor in the overall language that it qualifies for wadler's law IMO |
2022-04-27 21:49:47 +0200 | <janus> | geekosaur: i'd like to read your mailing list post if you find it |
2022-04-27 21:50:15 +0200 | <geekosaur> | haven't been looking, but it was more a point that this debate has been going on *at least* since 2006 |
2022-04-27 21:50:20 +0200 | <geekosaur> | and probvably before |
2022-04-27 21:50:43 +0200 | <geekosaur> | we did work out a reasonable new set of classes, but it died there because no chance of it ever happening |
2022-04-27 21:50:44 +0200 | <janus> | probvably = probably provably? |
2022-04-27 21:50:50 +0200 | <geekosaur> | "probably" |
2022-04-27 21:50:57 +0200 | <geekosaur> | my typing sucks :) |
2022-04-27 21:50:59 +0200 | <janus> | :P |
2022-04-27 21:51:17 +0200 | <janus> | geekosaur: did idris not take some of those ideas? |
2022-04-27 21:51:33 +0200 | <janus> | or purescript? |
2022-04-27 21:51:50 +0200 | <geekosaur> | no idea |
2022-04-27 21:52:15 +0200 | <geekosaur> | tempted to hope they sidestepped the whole question |
2022-04-27 21:52:25 +0200 | <EvanR> | the version of idris I was using just copied the Enum class as is |
2022-04-27 21:52:39 +0200 | <geekosaur> | that they were reasonable didn't mean they were essential |
2022-04-27 21:52:41 +0200 | <geekosaur> | ew |
2022-04-27 21:52:46 +0200 | <EvanR> | except Int was changed to Nat |
2022-04-27 21:52:59 +0200 | vorpuni | (~pvorp@2001:861:3881:c690:f0c0:48af:d6b4:5601) (Ping timeout: 240 seconds) |
2022-04-27 21:53:10 +0200 | <janus> | Welcome to Idris 2. Enjoy yourself! |
2022-04-27 21:53:10 +0200 | <janus> | the Nat (-1) |
2022-04-27 21:53:11 +0200 | <janus> | 0 |
2022-04-27 21:53:24 +0200 | <janus> | doesn't seem like it has negative numbers |
2022-04-27 21:53:32 +0200 | <EvanR> | Nat indeed starts at zero |
2022-04-27 21:53:43 +0200 | <tomsmeding> | (as it should) |
2022-04-27 21:53:46 +0200 | <EvanR> | instead of -2 like homotopy type theory |
2022-04-27 21:53:51 +0200 | <koz> | I believe there was an addendum to Wadler's law about records. :P |
2022-04-27 21:54:20 +0200 | <tomsmeding> | syntax for records is contentious to this very day |
2022-04-27 21:54:50 +0200 | <dolio> | Homotopy levels start at 0. Only category bozos try to move things back to -2. |
2022-04-27 21:54:54 +0200 | <monochrom> | I don't like programmers saying "this is usually unexpected" to mean "this annoys me". |
2022-04-27 21:55:08 +0200 | <tomsmeding> | simply add "... by me" |
2022-04-27 21:55:28 +0200 | <EvanR> | principle of least surprised ... by me |
2022-04-27 21:55:49 +0200 | <Franciman> | dolio: sometimes i've seen them start at -1, with \pi_{-1}(X) = {0} <- trivial group |
2022-04-27 21:56:26 +0200 | <monochrom> | I'm all for voicing "IMO mutable variables are nice", but against bending that to "why would anyone not want mutable variables?" |
2022-04-27 21:56:59 +0200 | <monochrom> | It is always personal. |
2022-04-27 21:57:48 +0200 | <Franciman> | well one reason is that mutability with laziness can be a nightmare |
2022-04-27 21:57:59 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 21:58:04 +0200 | <Franciman> | and completely remove referential transparency for the whole program |
2022-04-27 21:58:15 +0200 | <EvanR> | yet we have MVars that by default accept a lazy value when mutated |
2022-04-27 21:58:28 +0200 | <dolio> | Franciman: is there a point to doing that? Is it just defined the same for every space? |
2022-04-27 21:59:36 +0200 | <Franciman> | EvanR: but the mutation happens strictly, no? |
2022-04-27 21:59:39 +0200 | <Franciman> | it is not delayed |
2022-04-27 21:59:49 +0200 | <Franciman> | you set the new value to a thunk |
2022-04-27 22:00:00 +0200 | Brandon_IX | (brandon@2a01:7e00::f03c:92ff:feab:6b7c) (Changing host) |
2022-04-27 22:00:00 +0200 | Brandon_IX | (brandon@user/Brandon-IX/x-0442192) |
2022-04-27 22:00:04 +0200 | <EvanR> | the IO action stands for that, up to you when it is executed xD |
2022-04-27 22:00:27 +0200 | <Franciman> | dolio: hm not sure, for homology groups it makes sense |
2022-04-27 22:00:42 +0200 | <Franciman> | because of the sequence. Maybe in homotopy is just to copy ahah (joking, but i saw it sometimes) |
2022-04-27 22:00:42 +0200 | <dolio> | Does it actually vary for those? |
2022-04-27 22:00:55 +0200 | <Franciman> | no, it's defined as {0} invariably |
2022-04-27 22:01:45 +0200 | <Franciman> | so you can define \delta (x) = 0 |
2022-04-27 22:02:00 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-04-27 22:02:19 +0200 | <Franciman> | and ker \delta = C_0(X), and im \delta = {0} |
2022-04-27 22:02:29 +0200 | <Franciman> | hence H_0(X) = C_0(X) |
2022-04-27 22:02:45 +0200 | <janus> | seems like idris does have 'pred', but it is only for Nat and 'pred 0 = 0' holds |
2022-04-27 22:03:04 +0200 | <janus> | and underflow on Int wraps |
2022-04-27 22:03:09 +0200 | <dolio> | Oh, so it's a special case for simpler bootstrapping or something. |
2022-04-27 22:03:12 +0200 | <Franciman> | dolio: basically in this way you avoid defining H_0(X) in an ad hoc way |
2022-04-27 22:03:46 +0200 | <Franciman> | and going further you can also define C_{-2} = {0} lol, so you also have H_{-1}(X) = {0} |
2022-04-27 22:03:59 +0200 | <Franciman> | but this seems to be of zero use |
2022-04-27 22:04:05 +0200 | <dolio> | Cubical agda did have a bunch of different natural number types starting at different values at some point, but I think they dropped them and standardized on 0. |
2022-04-27 22:05:26 +0200 | <dolio> | I think one of them started at -1, but I don't remember what used that. |
2022-04-27 22:05:47 +0200 | Topsi | (~Tobias@dyndsl-095-033-094-053.ewe-ip-backbone.de) |
2022-04-27 22:05:53 +0200 | nucranium | (~nucranium@2a02:8010:6173:0:8102:5ccd:28d9:3575) |
2022-04-27 22:07:23 +0200 | <EvanR> | janus, careful because they have overlapping names. There may be pred for Nat in one module, pred in a class from another module |
2022-04-27 22:08:05 +0200 | dextaa4 | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-04-27 22:08:10 +0200 | <EvanR> | (possibly) |
2022-04-27 22:08:32 +0200 | <janus> | oh. i imported Data.Bits and i get Data.Nat.pred |
2022-04-27 22:08:55 +0200 | <janus> | and yeah, pred is not in the prelude |
2022-04-27 22:09:42 +0200 | <EvanR> | maybe idris 2 dropped Enum xD\ |
2022-04-27 22:12:04 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
2022-04-27 22:13:15 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-04-27 22:16:39 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 22:21:22 +0200 | abrantesasf | (~abrantesa@177.137.232.91) |
2022-04-27 22:22:33 +0200 | nattiestnate | (~nate@202.138.250.17) |
2022-04-27 22:24:12 +0200 | benin | (~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat) |
2022-04-27 22:29:44 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 22:30:12 +0200 | pavonia | (~user@user/siracusa) |
2022-04-27 22:32:13 +0200 | <remexre> | ugh, does LLVM-backend GHC not reap zombies? |
2022-04-27 22:32:35 +0200 | <remexre> | just checked htop, >1/2 my total assigned PIDs are gcc zombies of HLS |
2022-04-27 22:34:04 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 22:35:44 +0200 | <geekosaur> | g*c*c? LLVM backend doesn't use gcc, it uses opt and lld |
2022-04-27 22:36:16 +0200 | <geekosaur> | gcc is used for CApiFFI and for foreign export stubs, among other things |
2022-04-27 22:36:34 +0200 | <remexre> | would one of those include template haskell perhaps? |
2022-04-27 22:36:42 +0200 | <geekosaur> | no |
2022-04-27 22:37:26 +0200 | <geekosaur> | ghc stopped compiling via C years ago, HLS doesn't even support versions that do it |
2022-04-27 22:37:34 +0200 | <geekosaur> | (7.x iirc) |
2022-04-27 22:38:19 +0200 | <remexre> | idk how it's happening, but I have screenshots to prove it :P |
2022-04-27 22:38:43 +0200 | <geekosaur> | so the only time gcc is used is when it needs to be compatible with C linkage during FFI |
2022-04-27 22:39:06 +0200 | <geekosaur> | or c2hs/hsc2hs |
2022-04-27 22:39:48 +0200 | tiferrei | (~tiferrei@user/tiferrei) (Remote host closed the connection) |
2022-04-27 22:40:00 +0200 | <remexre> | I don't _think_ I'm using any of those |
2022-04-27 22:40:02 +0200 | <remexre> | definitely not directly |
2022-04-27 22:40:13 +0200 | <remexre> | https://photos.app.goo.gl/hZpoE9LQgF9FVmcN8 anyway |
2022-04-27 22:40:47 +0200 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection) |
2022-04-27 22:41:01 +0200 | <geekosaur> | I would ask about that in #haskell-language-server |
2022-04-27 22:41:14 +0200 | <remexre> | ok |
2022-04-27 22:41:41 +0200 | tiferrei | (~tiferrei@user/tiferrei) |
2022-04-27 22:42:53 +0200 | Guest2725 | (~Guest27@2601:281:d47f:1590::bc8f) |
2022-04-27 22:43:39 +0200 | tiferrei | (~tiferrei@user/tiferrei) (Remote host closed the connection) |
2022-04-27 22:44:14 +0200 | <Guest2725> | What's the best networking lib for a beginner? `network` recommends `network-simple`, `connection`, or `hookup` |
2022-04-27 22:47:30 +0200 | <exarkun> | a beginner programmer, a beginner haskell programmer, or a beginner network programmer |
2022-04-27 22:48:47 +0200 | <Guest2725> | First one. The goal is implementing toy clients/servers for various protocols |
2022-04-27 22:49:52 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-04-27 22:55:38 +0200 | roconnor | (~roconnor@coq/roconnor) |
2022-04-27 22:57:09 +0200 | michalz | (~michalz@185.246.204.125) (Remote host closed the connection) |
2022-04-27 23:01:15 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) |
2022-04-27 23:01:58 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 250 seconds) |
2022-04-27 23:08:04 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-04-27 23:13:27 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) |
2022-04-27 23:13:30 +0200 | <EvanR> | when I was a beginner I went with sockets.h and man pages |
2022-04-27 23:14:04 +0200 | <EvanR> | and significant flailing |
2022-04-27 23:16:25 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-04-27 23:16:46 +0200 | <janus> | Guest2725: i would work with websockets because then you can get an attractive client that motivates you with a good debugger (browser inspector) |
2022-04-27 23:16:53 +0200 | <janus> | Guest2725: and you get framing for free |
2022-04-27 23:17:21 +0200 | <janus> | but i guess it depends what kinda protocols you want to implement |
2022-04-27 23:19:05 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 256 seconds) |
2022-04-27 23:21:09 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) |
2022-04-27 23:23:16 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-27 23:24:50 +0200 | chddr | (~Thunderbi@91.226.35.182) (Ping timeout: 272 seconds) |
2022-04-27 23:24:55 +0200 | <EvanR> | websockets is cool but comes with its own gotchas |
2022-04-27 23:26:48 +0200 | nucranium | (~nucranium@2a02:8010:6173:0:8102:5ccd:28d9:3575) (Ping timeout: 248 seconds) |
2022-04-27 23:28:30 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 246 seconds) |
2022-04-27 23:30:15 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 246 seconds) |
2022-04-27 23:30:32 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) |
2022-04-27 23:31:05 +0200 | <EvanR> | Guest2725, note that forkIO threads or the async library, along with GHCs runtime, makes some aspects of networking much nicer without buying into a full netlib suite |
2022-04-27 23:31:58 +0200 | <EvanR> | which I'd think wouldn't work anyway since you're going for "various protocols" |
2022-04-27 23:35:26 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-27 23:35:49 +0200 | chddr | (~Thunderbi@91.226.35.182) |
2022-04-27 23:38:06 +0200 | <Guest2725> | EvanR Just to make sure I understand, you're recommending plain sockets and Haskell's native async? |
2022-04-27 23:38:07 +0200 | <Guest2725> | janus What does "framing" mean? |
2022-04-27 23:38:46 +0200 | <janus> | Guest2725: many protocols are based on 'messages', but tcp is 'stream' based |
2022-04-27 23:38:48 +0200 | <EvanR> | async is a library built on forkIO threads to make waiting for side tasks easier and deal with corner cases |
2022-04-27 23:39:37 +0200 | <janus> | Guest2725: so something sent in one call to send(2) could be divided up and received over multiple calls to recv(2) |
2022-04-27 23:39:42 +0200 | alx741 | (~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 246 seconds) |
2022-04-27 23:39:44 +0200 | <janus> | or vice versa |
2022-04-27 23:40:11 +0200 | <Guest2725> | Ohh okay, I gotchu |
2022-04-27 23:40:44 +0200 | <EvanR> | websockets gives you messages, whereas tcp builds a stream interface on the underlying messages of IP xD |
2022-04-27 23:40:57 +0200 | <EvanR> | websocket message -> tcp stream -> internet messages |
2022-04-27 23:41:00 +0200 | <EvanR> | lol |
2022-04-27 23:41:39 +0200 | <EvanR> | "make up your mind" |
2022-04-27 23:42:09 +0200 | <Guest2725> | I desire MOAR ABSTRACTIONS |
2022-04-27 23:42:31 +0200 | <EvanR> | and wait for it, a big use case for websockets is... STREAMING |
2022-04-27 23:43:22 +0200 | <Guest2725> | Hmm yes, abstraction ouroboros |
2022-04-27 23:44:51 +0200 | eggplantade | (~Eggplanta@108.201.191.115) |
2022-04-27 23:45:49 +0200 | stackdroid18 | (14094@user/stackdroid) |
2022-04-27 23:45:53 +0200 | zeenk | (~zeenk@2a02:2f0e:7603:9c01:4e89:6ef1:76e9:3685) |
2022-04-27 23:47:50 +0200 | <monochrom> | Can't blame them. The main use case for internet messages is... streaming, too. See "tcp stream -> internet messages". :) |
2022-04-27 23:48:34 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-27 23:48:49 +0200 | <monochrom> | Unpopular opinion: 99% of bandwidth is spent on reinventing message delimiters >:) |
2022-04-27 23:48:59 +0200 | eggplantade | (~Eggplanta@108.201.191.115) (Ping timeout: 240 seconds) |
2022-04-27 23:49:24 +0200 | <geekosaur> | or re-uninventing |
2022-04-27 23:49:54 +0200 | king_gs | (~Thunderbi@187.201.77.157) |
2022-04-27 23:50:58 +0200 | <geekosaur> | flip side this is why so many protocols are text based |
2022-04-27 23:50:59 +0200 | chddr | (~Thunderbi@91.226.35.182) (Remote host closed the connection) |
2022-04-27 23:51:29 +0200 | <Bulby[m]> | nobody likes binary |
2022-04-27 23:52:27 +0200 | tcsavage | (~tcsavage@195.213.144.166) (Quit: tcsavage) |
2022-04-27 23:53:01 +0200 | <janus> | everybody with tooling has no issue with binary, but most people don't have tooling :P |
2022-04-27 23:54:50 +0200 | <janus> | i don't understand, what is the link between text-based and streaming? |
2022-04-27 23:58:16 +0200 | zeenk | (~zeenk@2a02:2f0e:7603:9c01:4e89:6ef1:76e9:3685) (Ping timeout: 248 seconds) |
2022-04-27 23:58:24 +0200 | werneta | (~werneta@137.79.197.49) (Ping timeout: 272 seconds) |
2022-04-27 23:59:17 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-04-27 23:59:26 +0200 | alp_ | (~alp@user/alp) |
2022-04-27 23:59:57 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |