2022-06-19 00:00:51 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-181.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-06-19 00:01:20 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-06-19 00:02:01 +0200 | zebrag | (~chris@user/zebrag) (Ping timeout: 248 seconds) |
2022-06-19 00:11:16 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-06-19 00:11:17 +0200 | Vajb | (~Vajb@2001:999:40:4c50:1b24:879c:6df3:1d06) (Read error: Connection reset by peer) |
2022-06-19 00:12:01 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-06-19 00:17:32 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-06-19 00:22:17 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-06-19 00:23:53 +0200 | zeenk | (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) |
2022-06-19 00:25:04 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 00:26:19 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 00:27:38 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-06-19 00:30:28 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
2022-06-19 00:32:41 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-06-19 00:34:32 +0200 | zebrag | (~chris@user/zebrag) |
2022-06-19 00:41:18 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-06-19 00:48:24 +0200 | jgeerds | (~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 248 seconds) |
2022-06-19 00:49:49 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-06-19 00:53:31 +0200 | kannon | (~NK@c-73-170-170-57.hsd1.ca.comcast.net) |
2022-06-19 00:53:38 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection) |
2022-06-19 00:54:00 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-06-19 00:54:48 +0200 | <kannon> | ok I think I'm on the libera network finally :) |
2022-06-19 00:55:58 +0200 | <kannon> | when I load Control.Monad, I'm getting an error: PRELUDE> join Maybe (Maybe 5) |
2022-06-19 00:56:21 +0200 | <hpc> | Maybe is the type, you want Just instead |
2022-06-19 00:56:23 +0200 | <hpc> | @src Maybe |
2022-06-19 00:56:24 +0200 | <lambdabot> | data Maybe a = Nothing | Just a |
2022-06-19 00:56:29 +0200 | <hpc> | @src Bool |
2022-06-19 00:56:29 +0200 | <lambdabot> | data Bool = False | True deriving (Eq, Ord) |
2022-06-19 00:56:52 +0200 | <hpc> | Nothing :: Maybe a |
2022-06-19 00:56:55 +0200 | <hpc> | Just :: a -> Maybe a |
2022-06-19 00:56:59 +0200 | <geekosaur> | also, missing set of parens |
2022-06-19 00:57:16 +0200 | <kannon> | I am a dumbass thanks hpc |
2022-06-19 00:57:45 +0200 | <hpc> | this is a pretty common issue with learning ADT syntax |
2022-06-19 00:58:01 +0200 | funsafe | (~funsafe@76.105.238.154) (Ping timeout: 248 seconds) |
2022-06-19 00:58:46 +0200 | <hpc> | i think GADT syntax would make more sense if you're learning the language, but i have no real evidence for it other than my own experience |
2022-06-19 00:58:47 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 00:58:52 +0200 | <hpc> | but that's a whole other thing |
2022-06-19 00:59:09 +0200 | <hpc> | something you can google later maybe |
2022-06-19 00:59:49 +0200 | funsafe | (~funsafe@76.105.238.154) |
2022-06-19 01:01:56 +0200 | <kannon> | thanks all. also, in haskell, anyone have a simple explanation for the math notation like when I see forall a.a :: " ... ". is that like when in abs algebra the set has to be all of the same type? |
2022-06-19 01:02:34 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) (Ping timeout: 240 seconds) |
2022-06-19 01:02:43 +0200 | <kannon> | (never finished abstract algebra) |
2022-06-19 01:03:46 +0200 | <hpc> | it comes from logic, and in that context it's fairly obvious - https://en.wikipedia.org/wiki/Forall |
2022-06-19 01:04:21 +0200 | <hpc> | in haskell, it's basically just bringing type variables into scope |
2022-06-19 01:04:42 +0200 | <hpc> | kind of like how a lambda brings value-level variables into scope |
2022-06-19 01:04:53 +0200 | <EvanR> | forall types a . something something a something |
2022-06-19 01:05:09 +0200 | <EvanR> | where what "types" means can be refined with kind signatures |
2022-06-19 01:05:22 +0200 | <hpc> | (\x -> ...) is kind of like saying "for all x, this other thing that uses x" |
2022-06-19 01:05:27 +0200 | <hpc> | :t map |
2022-06-19 01:05:29 +0200 | <lambdabot> | (a -> b) -> [a] -> [b] |
2022-06-19 01:05:32 +0200 | <hpc> | % :t map |
2022-06-19 01:05:32 +0200 | <yahb2> | map :: (a -> b) -> [a] -> [b] |
2022-06-19 01:05:42 +0200 | <hpc> | bah, pretend that shows foralls |
2022-06-19 01:05:50 +0200 | <hpc> | map :: forall a b. the rest of it |
2022-06-19 01:06:13 +0200 | <hpc> | is saying "for all types a and b, there's a function 'map' that does the things map does" |
2022-06-19 01:06:57 +0200 | <geekosaur> | % :set -fprint-explicit-foralls |
2022-06-19 01:06:57 +0200 | <yahb2> | <no output> |
2022-06-19 01:06:58 +0200 | <hpc> | this gets interesting when you can put that forall somewhere other than right at the beginning |
2022-06-19 01:07:03 +0200 | <geekosaur> | % :t map |
2022-06-19 01:07:03 +0200 | <yahb2> | map :: forall {a} {b}. (a -> b) -> [a] -> [b] |
2022-06-19 01:07:12 +0200 | <hpc> | but that's too interesting for someone just starting out |
2022-06-19 01:07:23 +0200 | <hpc> | the thing to google is RankNTypes |
2022-06-19 01:08:19 +0200 | <kannon> | so yeah one doesn't really need to think of that notation. it's sort of redundant? |
2022-06-19 01:08:42 +0200 | <hpc> | it's redundant until it isn't |
2022-06-19 01:09:11 +0200 | <hpc> | but more or less yeah, so it gets omitted until you're doing the weird stuff |
2022-06-19 01:09:21 +0200 | <kannon> | hmmm ok thanks |
2022-06-19 01:09:59 +0200 | <EvanR> | the conventional use of a, b, c as type variables makes it easy to infer that you intended to just introduce them, but you can name them anything, then it's less obvious |
2022-06-19 01:10:29 +0200 | <monochrom> | Implicit quantifiers are historically proven to impede learning. |
2022-06-19 01:10:32 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 01:10:45 +0200 | <hpc> | other common type variable conventions are f, g, m, k, s |
2022-06-19 01:10:45 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Remote host closed the connection) |
2022-06-19 01:10:45 +0200 | <EvanR> | especially when you have some other type signature in scope using scoped type variables |
2022-06-19 01:11:03 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit) |
2022-06-19 01:11:06 +0200 | <hpc> | or you can just give them full names, if you're doing something specific enough that a single letter isn't helpful |
2022-06-19 01:14:06 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 01:15:28 +0200 | <kannon> | I was reading Rank N types literature.. I don't follow this: https://wiki.haskell.org/Rank-N_types |
2022-06-19 01:16:31 +0200 | <kannon> | when forall is written on the left of (->) or right, i.e. |
2022-06-19 01:16:51 +0200 | zeenk | (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!) |
2022-06-19 01:17:36 +0200 | <hpc> | it changes who "picks the type", so to speak |
2022-06-19 01:18:20 +0200 | <hpc> | if you have say, foo :: forall a. Num a => (a -> a) -> Int -> Int, you can't define it as foo f x = f x |
2022-06-19 01:18:34 +0200 | <hpc> | because someone might pass an f :: Double -> Double, and that would be valid |
2022-06-19 01:18:58 +0200 | <hpc> | but if you instead wrote foo :: (forall a. Num a => (a -> a)) -> Int -> Int, you can define it as foo f x = f x |
2022-06-19 01:19:20 +0200 | <hpc> | but now the only things that you can pass as f have to be as polymorphic as what foo's type says it should be |
2022-06-19 01:19:30 +0200 | <hpc> | it has to be something that can be applied to any number |
2022-06-19 01:19:49 +0200 | <hpc> | this also means you can write foo :: (forall a. Num a => (a -> a)) -> (Int, Double) -> (Int, Double) |
2022-06-19 01:19:54 +0200 | <hpc> | foo f (x, y) = (f x, f y) |
2022-06-19 01:20:26 +0200 | <hpc> | because it knows f is polymorphic enough to be applied to both an Int and a Double without breaking any rules |
2022-06-19 01:20:57 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds) |
2022-06-19 01:21:04 +0200 | TonyStone | (~TonyStone@2603-7080-8607-c36a-4880-a368-0091-2141.res6.spectrum.com) (Remote host closed the connection) |
2022-06-19 01:21:14 +0200 | <kannon> | I will study that hpc. thank you! |
2022-06-19 01:21:31 +0200 | <hpc> | (this is a very simplified explanation, there's a lot to learn about higher-ranked types and definitely more than i can properly explain) |
2022-06-19 01:22:28 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-06-19 01:22:59 +0200 | TonyStone | (~TonyStone@2603-7080-8607-c36a-514e-68a6-af12-10c9.res6.spectrum.com) |
2022-06-19 01:25:00 +0200 | <kannon> | so it's like this: forall m a. m (m a) -> m a ... m is added because it confirms that all a's need to be contained in a monad structure ? |
2022-06-19 01:25:55 +0200 | <kannon> | both m and a are on the right side of the (->) operator |
2022-06-19 01:26:01 +0200 | <kannon> | pardon left side |
2022-06-19 01:28:01 +0200 | prolic | (~prolic@2803:2a00:2c0f:b96d:69a9:fa3b:385:e53d) |
2022-06-19 01:28:05 +0200 | <hpc> | on the outside, as it were |
2022-06-19 01:28:15 +0200 | <hpc> | read it like forall m a. (m (m a) -> m a) |
2022-06-19 01:29:03 +0200 | <hpc> | relative to (->), there's 3 places in the syntax tree forall can appear |
2022-06-19 01:29:17 +0200 | <hpc> | outside and right are essentially the same |
2022-06-19 01:29:23 +0200 | <hpc> | and left is the weird one |
2022-06-19 01:30:21 +0200 | <kannon> | what would you write if you put it on the "right" ? |
2022-06-19 01:31:27 +0200 | <kannon> | (m (m a) -> m a) forall m a. |
2022-06-19 01:31:35 +0200 | <monochrom> | It is very simple and robotic. Suppose "v :: forall t. blahbah". Then the receiver of v chooses what t becomes. The provider is not allowed to. |
2022-06-19 01:31:50 +0200 | shapr | (~user@2600:4040:2d31:7100:c9e6:4184:8419:55f7) (Ping timeout: 255 seconds) |
2022-06-19 01:32:39 +0200 | <monochrom> | Therefore, for example, suppose you code up "foo :: forall a. (forall b. -> [b]) -> Maybe a", and let me use it. |
2022-06-19 01:32:40 +0200 | <hpc> | kannon: more like (Something Monomorphic -> forall a. a) |
2022-06-19 01:32:48 +0200 | <hpc> | is the same as forall a. (Something Monomorphic -> a) |
2022-06-19 01:33:02 +0200 | <monochrom> | I am the receiver of the outer "forall a", therefore I choose what a becomes, you don't. |
2022-06-19 01:33:24 +0200 | <hpc> | (can't think of a good example where the type variable isn't also on the left :P) |
2022-06-19 01:33:31 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-06-19 01:33:41 +0200 | <monochrom> | But I have to pass a parameter "p :: forall b. b -> [b]" to you. You are the receiver of that "forall b". Therefore, you choose what b becomes, I don't. |
2022-06-19 01:34:45 +0200 | prolic | (~prolic@2803:2a00:2c0f:b96d:69a9:fa3b:385:e53d) (Quit: Client closed) |
2022-06-19 01:34:56 +0200 | <monochrom> | This is the same in the 2-person-game semantics of logic. |
2022-06-19 01:35:35 +0200 | <kannon> | so to be clear the "outer is the far left, correct? |
2022-06-19 01:35:37 +0200 | <monochrom> | When I have to prove a "forall x ..." theorem, I am the provider of that theorem, therefore I don't choose what x is; users of that theorem choose. |
2022-06-19 01:35:43 +0200 | <kannon> | "outer" |
2022-06-19 01:36:06 +0200 | <monochrom> | I imagine an Arabic writer would write it at the far right. |
2022-06-19 01:36:35 +0200 | <hpc> | kannon: outside the parens, but the nature of forall syntax does put it on the left visually yeah |
2022-06-19 01:36:48 +0200 | <monochrom> | Actually I imagine that an English mathematician would write like "x + 1 > x for all x" so it's far right too. |
2022-06-19 01:37:24 +0200 | <hpc> | haha |
2022-06-19 01:37:52 +0200 | <monochrom> | Now consider "there exists c>0 s.t. x+c > x for all x". |
2022-06-19 01:37:58 +0200 | hpc | tries as hard as he can not to rant about how mathematicians write :P |
2022-06-19 01:38:15 +0200 | <kannon> | I cannot let humor enter into this at this stage :/ |
2022-06-19 01:38:17 +0200 | <monochrom> | Sorry, I just did. >:) |
2022-06-19 01:38:53 +0200 | <kannon> | but I will get to the bottom of it....thanks |
2022-06-19 01:39:13 +0200 | <hpc> | or will you... get to the undefined of it? :D |
2022-06-19 01:39:38 +0200 | <kannon> | but is this related to overloaded functions? |
2022-06-19 01:39:45 +0200 | <monochrom> | No. |
2022-06-19 01:40:10 +0200 | <hpc> | this has all been part of plain old parametric polymorphism |
2022-06-19 01:40:31 +0200 | <monochrom> | http://www.vex.net/~trebla/humour/tautologies.html #0 |
2022-06-19 01:41:40 +0200 | <hpc> | #4 has a permanent place on my whiteboard |
2022-06-19 01:42:11 +0200 | <hpc> | it has a very thecodelesscode kind of feel to it |
2022-06-19 01:42:22 +0200 | <kannon> | I am willing to be the brunt of jokes. :) |
2022-06-19 01:43:21 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 248 seconds) |
2022-06-19 01:44:14 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection) |
2022-06-19 01:45:05 +0200 | pleo | (~pleo@user/pleo) (Quit: quit) |
2022-06-19 01:45:24 +0200 | <kannon> | anyone know how to use this blasted irssi chat client? I cannot scroll upward. or is there a log of this chat? |
2022-06-19 01:45:53 +0200 | <dsal> | topic has a logs url |
2022-06-19 01:46:08 +0200 | <kannon> | can't see it dsal |
2022-06-19 01:46:34 +0200 | <yushyin> | /topic |
2022-06-19 01:46:41 +0200 | <hpc> | pageup/pagedown |
2022-06-19 01:47:21 +0200 | <dsal> | https://ircbrowse.tomsmeding.com/browse/lchaskell |
2022-06-19 01:47:37 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-06-19 01:47:38 +0200 | <kannon> | got it dsal / hpc thanks |
2022-06-19 01:47:56 +0200 | <kannon> | itchyjunk ? lol |
2022-06-19 01:49:17 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::4588) |
2022-06-19 01:50:50 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-06-19 01:54:00 +0200 | ph88 | (~ph88@2a02:8109:9e00:71d0::f476) (Quit: Leaving) |
2022-06-19 01:58:51 +0200 | <kannon> | pageup |
2022-06-19 01:58:57 +0200 | <kannon> | shit |
2022-06-19 01:59:28 +0200 | juri__ | (~juri@79.140.114.236) |
2022-06-19 02:01:03 +0200 | stefan-_ | (~cri@42dots.de) (Ping timeout: 256 seconds) |
2022-06-19 02:01:16 +0200 | causal | (~user@50.35.83.177) |
2022-06-19 02:02:45 +0200 | juri_ | (~juri@79.140.114.143) (Ping timeout: 256 seconds) |
2022-06-19 02:04:32 +0200 | sebastiandb | (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) |
2022-06-19 02:05:07 +0200 | stefan-_ | (~cri@42dots.de) |
2022-06-19 02:06:20 +0200 | <sebastiandb> | I've been trying to add a dependency to my Stack project (Data.Text), but although the guide online (https://docs.haskellstack.org/en/v1.5.0/GUIDE/) says to modify the *.cabal file, that's modified every time I run 'stack build'. How do I properly add a dependency in this case, then? Using stack.yaml? |
2022-06-19 02:07:45 +0200 | <dsal> | sebastiandb: Do you have a package.yaml? |
2022-06-19 02:07:59 +0200 | <sebastiandb> | Yes. |
2022-06-19 02:08:05 +0200 | <dsal> | @where paste |
2022-06-19 02:08:05 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-06-19 02:08:41 +0200 | <dsal> | Things may sometimes get strange if you edit the cabal file *and* use hpack. |
2022-06-19 02:08:58 +0200 | <sebastiandb> | So, that's the file I have to edit, then? I haven't changed it from the default after running stack new [projectname]. |
2022-06-19 02:09:33 +0200 | machinedgod | (~machinedg@66.244.246.252) (Ping timeout: 256 seconds) |
2022-06-19 02:09:55 +0200 | <sebastiandb> | I appreciate the prompt answer, BTW |
2022-06-19 02:09:59 +0200 | machinedgod | (~machinedg@66.244.246.252) |
2022-06-19 02:11:02 +0200 | <dsal> | Yeah, it depends on what your template did and stuff, but there might be dependencies already. You can just add `text` there. |
2022-06-19 02:11:56 +0200 | perdent | (~perdent@124.188.208.163) |
2022-06-19 02:13:29 +0200 | <sebastiandb> | How do I add it? I've added a bullet point listing "text" there, but it doesn't work. I'll just copy/paste my file like you suggested. |
2022-06-19 02:14:57 +0200 | <sebastiandb> | https://paste.tomsmeding.com/e0WauBNe |
2022-06-19 02:15:12 +0200 | kannon | (~NK@c-73-170-170-57.hsd1.ca.comcast.net) (Quit: Lost terminal) |
2022-06-19 02:15:18 +0200 | <sebastiandb> | The module is called fizz buzz, because it's a basic fizz buzz program so I can learn how Stack works. |
2022-06-19 02:15:48 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-06-19 02:15:53 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 02:18:41 +0200 | <dsal> | sebastiandb: below the "- base" line, just add a line that says "- text" |
2022-06-19 02:19:20 +0200 | <dsal> | You added it as a dependency to your exe, but perhaps you need it in your lib? Or tests? |
2022-06-19 02:19:38 +0200 | <dsal> | If you do it at the top, it should be available everywhere. |
2022-06-19 02:20:29 +0200 | <sebastiandb> | That makes sense. Thanks for clarifying the distinction. I've added it and it works. Thanks for the help! |
2022-06-19 02:20:51 +0200 | <dsal> | Woo. It'll all downhill from there. |
2022-06-19 02:25:12 +0200 | <sebastiandb> | By compiling using stack build, it installed the executable at [project root]/.stack-work/install/x86_64-linux-tinfo6/8b5312344a6ad4cb9963965e9b12e5e7971068b57c3e3847d5dba4265a79f112/9.0.2/bin. Is there a way to also have a temporary copy at the root of the project directory, so I don't have to refer to this to run the executable? |
2022-06-19 02:26:56 +0200 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 252 seconds) |
2022-06-19 02:27:36 +0200 | <sebastiandb> | dsal: Forgot to mention your name, my bad |
2022-06-19 02:28:31 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-06-19 02:28:31 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-06-19 02:28:31 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-06-19 02:28:41 +0200 | <dsal> | sebastiandb: stack exec fizzbuzz |
2022-06-19 02:28:57 +0200 | <dsal> | stack install will put it in ~/.local/bin |
2022-06-19 02:29:05 +0200 | <dsal> | stack test will run your unit tests |
2022-06-19 02:29:16 +0200 | <dsal> | `stack test --file-watch` will run the tests on every change. :) |
2022-06-19 02:29:31 +0200 | acarrico | (~acarrico@dhcp-68-142-48-19.greenmountainaccess.net) |
2022-06-19 02:30:26 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Remote host closed the connection) |
2022-06-19 02:30:36 +0200 | <sebastiandb> | Thanks! That's useful to know. Better than relying on Makefiles to do that, haha. |
2022-06-19 02:33:10 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-06-19 02:34:21 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-06-19 02:43:59 +0200 | gurkenglas | (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
2022-06-19 02:46:23 +0200 | natechan | (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
2022-06-19 02:49:03 +0200 | natechan | (~nate@98.45.169.16) |
2022-06-19 02:54:32 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) |
2022-06-19 02:59:44 +0200 | Infinite | (~Infinite@49.39.121.77) |
2022-06-19 03:07:19 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 03:12:50 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-06-19 03:14:28 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 03:16:34 +0200 | Typedfern | (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Remote host closed the connection) |
2022-06-19 03:16:36 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 03:16:38 +0200 | leeb | (~leeb@KD106155002213.au-net.ne.jp) |
2022-06-19 03:17:05 +0200 | Typedfern | (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) |
2022-06-19 03:18:57 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-06-19 03:19:36 +0200 | Guest48 | (~Guest48@2601:283:4602:3820:bd97:9401:9c23:cecb) |
2022-06-19 03:19:53 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) (Remote host closed the connection) |
2022-06-19 03:22:02 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds) |
2022-06-19 03:23:29 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) |
2022-06-19 03:24:09 +0200 | Guest48 | (~Guest48@2601:283:4602:3820:bd97:9401:9c23:cecb) (Client Quit) |
2022-06-19 03:26:37 +0200 | mixfix41 | (~sdenynine@user/mixfix41) (Ping timeout: 256 seconds) |
2022-06-19 03:29:20 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 03:30:50 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 03:32:59 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 03:35:21 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 248 seconds) |
2022-06-19 03:37:44 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Client Quit) |
2022-06-19 03:38:30 +0200 | sebastiandb | (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2022-06-19 03:46:40 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 03:48:12 +0200 | Me-me | (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host) |
2022-06-19 03:48:12 +0200 | Me-me | (~me-me@user/me-me) |
2022-06-19 03:53:46 +0200 | perdent | (~perdent@124.188.208.163) (Quit: Client closed) |
2022-06-19 03:54:08 +0200 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2022-06-19 04:00:13 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2022-06-19 04:00:42 +0200 | Axman6 | (~Axman6@user/axman6) |
2022-06-19 04:00:52 +0200 | Axma98290 | (~Axman6@user/axman6) |
2022-06-19 04:02:10 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-06-19 04:05:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-06-19 04:07:30 +0200 | td_ | (~td@94.134.91.116) (Ping timeout: 240 seconds) |
2022-06-19 04:08:11 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-06-19 04:09:40 +0200 | td_ | (~td@muedsl-82-207-238-050.citykom.de) |
2022-06-19 04:14:00 +0200 | Axman6 | (~Axman6@user/axman6) (Killed (NickServ (GHOST command used by Axma98290))) |
2022-06-19 04:14:06 +0200 | Axma98290 | Axman6 |
2022-06-19 04:18:11 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2022-06-19 04:19:19 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-06-19 04:22:08 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 04:24:03 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 04:24:45 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit) |
2022-06-19 04:29:31 +0200 | liz | (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net) |
2022-06-19 04:30:28 +0200 | even4void | (even4void@came.here.for-some.fun) (Quit: fBNC - https://bnc4free.com) |
2022-06-19 04:30:39 +0200 | andreas303 | (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com) |
2022-06-19 04:30:39 +0200 | xacktm | (xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
2022-06-19 04:31:53 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Quit: leaving) |
2022-06-19 04:33:12 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-06-19 04:35:30 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Client Quit) |
2022-06-19 04:35:41 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-06-19 04:35:41 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-06-19 04:35:41 +0200 | finn_elija | FinnElija |
2022-06-19 04:35:42 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-06-19 04:37:12 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
2022-06-19 04:39:28 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
2022-06-19 04:48:04 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-06-19 04:50:29 +0200 | even4void | (even4void@came.here.for-some.fun) |
2022-06-19 04:53:58 +0200 | andreas303 | (andreas303@ip227.orange.bnc4free.com) |
2022-06-19 04:55:16 +0200 | xacktm | (xacktm@user/xacktm) |
2022-06-19 04:56:38 +0200 | sebastiandb | (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) |
2022-06-19 04:56:55 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-06-19 04:56:57 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Quit: leaving) |
2022-06-19 04:58:40 +0200 | liz | (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net) (Quit: leaving) |
2022-06-19 05:04:13 +0200 | sebastiandb | (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Quit: Leaving) |
2022-06-19 05:07:42 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 05:10:18 +0200 | luke-clifton[m] | (~luke-clif@2001:470:69fc:105::2:3122) |
2022-06-19 05:14:51 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-06-19 05:16:30 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds) |
2022-06-19 05:18:50 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-06-19 05:18:50 +0200 | machinedgod | (~machinedg@66.244.246.252) (Ping timeout: 240 seconds) |
2022-06-19 05:21:11 +0200 | img | (~img@user/img) |
2022-06-19 05:26:31 +0200 | kimjetwav | (~user@2607:fea8:2340:da00:c6e9:fbcb:640d:f8d) |
2022-06-19 05:39:01 +0200 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) () |
2022-06-19 05:39:41 +0200 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) |
2022-06-19 05:44:53 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2022-06-19 05:47:02 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 05:48:50 +0200 | zebrag | (~chris@user/zebrag) (Remote host closed the connection) |
2022-06-19 05:54:46 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-06-19 06:03:37 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::4588) (Ping timeout: 248 seconds) |
2022-06-19 06:08:12 +0200 | img | (~img@user/img) |
2022-06-19 06:08:21 +0200 | Volt_ | (~Volt_@c-68-49-170-216.hsd1.mi.comcast.net) (Quit: ) |
2022-06-19 06:11:37 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 248 seconds) |
2022-06-19 06:12:15 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-06-19 06:20:35 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 06:24:50 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
2022-06-19 06:45:31 +0200 | vglfr | (~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds) |
2022-06-19 06:55:08 +0200 | raym | (~raym@user/raym) |
2022-06-19 06:55:54 +0200 | Natch | (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection) |
2022-06-19 06:56:16 +0200 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-06-19 06:57:34 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 07:01:17 +0200 | Natch | (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
2022-06-19 07:01:40 +0200 | vglfr | (~vglfr@88.155.15.21) |
2022-06-19 07:11:11 +0200 | benin0 | (~benin@183.82.205.9) |
2022-06-19 07:11:41 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-06-19 07:20:57 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
2022-06-19 07:35:53 +0200 | leeb | (~leeb@KD106155002213.au-net.ne.jp) (Ping timeout: 248 seconds) |
2022-06-19 07:37:56 +0200 | leeb | (~leeb@KD106155000043.au-net.ne.jp) |
2022-06-19 07:45:43 +0200 | cosimone | (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection) |
2022-06-19 07:48:41 +0200 | vglfr | (~vglfr@88.155.15.21) (Ping timeout: 248 seconds) |
2022-06-19 07:53:07 +0200 | cosimone | (~user@93-44-186-171.ip98.fastwebnet.it) |
2022-06-19 07:55:43 +0200 | <lisbeths> | In theory is it possible to take haskell and port it to a different core than the core of ghc |
2022-06-19 07:55:51 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 07:57:04 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-06-19 07:59:13 +0200 | <dsal> | There used to be more than one haskell implementation, but haskell is pretty much GHC these days. |
2022-06-19 08:01:24 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-06-19 08:02:10 +0200 | benin0 | (~benin@183.82.205.9) (Ping timeout: 240 seconds) |
2022-06-19 08:02:32 +0200 | benin0 | (~benin@183.82.204.151) |
2022-06-19 08:02:35 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2022-06-19 08:11:04 +0200 | natechan | (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
2022-06-19 08:13:12 +0200 | kitty1 | (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 248 seconds) |
2022-06-19 08:15:12 +0200 | frost | (~frost@user/frost) |
2022-06-19 08:16:27 +0200 | kitty1 | (~kitty@096-039-147-043.res.spectrum.com) |
2022-06-19 08:21:01 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Remote host closed the connection) |
2022-06-19 08:22:44 +0200 | kitty2 | (~kitty@096-039-147-043.res.spectrum.com) |
2022-06-19 08:22:49 +0200 | kitty1 | (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 248 seconds) |
2022-06-19 08:25:31 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-06-19 08:28:10 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 08:32:37 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds) |
2022-06-19 08:34:40 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-06-19 08:35:23 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
2022-06-19 08:44:14 +0200 | gmg | (~user@user/gehmehgeh) |
2022-06-19 08:46:35 +0200 | coot | (~coot@213.134.190.95) |
2022-06-19 08:51:41 +0200 | soulomoon | (~soulomoon@103.156.242.114) |
2022-06-19 08:53:59 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 08:54:10 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 09:03:13 +0200 | kuribas | (~user@ptr-17d51eou2t4ghz8c28s.18120a2.ip6.access.telenet.be) |
2022-06-19 09:04:47 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds) |
2022-06-19 09:05:39 +0200 | soulomoon | (~soulomoon@103.156.242.114) (Quit: Client closed) |
2022-06-19 09:15:55 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 09:21:25 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 09:25:45 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 248 seconds) |
2022-06-19 09:26:34 +0200 | <jchia[m]> | Can the dependency version bounds on the hackage page for a package differ from the cabal file in the downloaded package tarball? |
2022-06-19 09:27:21 +0200 | <sclv> | yes. the raw downloaded tarball doesn’t contain revisions |
2022-06-19 09:27:43 +0200 | <jchia[m]> | I'm seeing different upper bounds for bytestring in the nanovg package. |
2022-06-19 09:29:03 +0200 | <jchia[m]> | sclv: cabal files can have dependency version bounds. Are we talking about the same thing? |
2022-06-19 09:41:41 +0200 | benin0 | (~benin@183.82.204.151) (Quit: Ping timeout (120 seconds)) |
2022-06-19 09:42:01 +0200 | benin0 | (~benin@183.82.205.9) |
2022-06-19 09:43:15 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-06-19 09:45:53 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 09:55:51 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 09:57:00 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 09:58:05 +0200 | abccgr | (abccgr@117.194.188.23) |
2022-06-19 09:59:11 +0200 | <kuribas> | https://twitter.com/jdegoes/status/1471147030680645638 |
2022-06-19 10:00:03 +0200 | <kuribas> | I rather disagree, you get a lot of bang for buck, for a relatively little effort (depending on the problem). |
2022-06-19 10:01:04 +0200 | <kuribas> | "The pedagogical and boilerplate overhead of HKD is significant. You can't even compare two 'Person f' for equality unless you know a LOT!" |
2022-06-19 10:01:22 +0200 | <kuribas> | Erm, the hkd approach reduces boilerplate. |
2022-06-19 10:01:54 +0200 | <kuribas> | And I can write "deriving instance Eq (Person Identity)" |
2022-06-19 10:02:01 +0200 | leeb | (~leeb@KD106155000043.au-net.ne.jp) (Ping timeout: 248 seconds) |
2022-06-19 10:02:38 +0200 | arthurs115 | (~arthurs11@78.196.67.166) |
2022-06-19 10:02:56 +0200 | benin06 | (~benin@183.82.204.151) |
2022-06-19 10:03:32 +0200 | <kuribas> | What do you guys think about hkd? |
2022-06-19 10:04:00 +0200 | frost | (~frost@user/frost) (Quit: Client closed) |
2022-06-19 10:04:59 +0200 | benin0 | (~benin@183.82.205.9) (Ping timeout: 256 seconds) |
2022-06-19 10:04:59 +0200 | benin06 | benin0 |
2022-06-19 10:09:36 +0200 | abccgr | (abccgr@117.194.188.23) () |
2022-06-19 10:12:00 +0200 | Guest64 | (~Guest64@2401:4900:1cc8:c493:1996:37e1:9729:88af) |
2022-06-19 10:16:51 +0200 | <jackdk> | I think to really get value out of hkd you want a team that's comfortable with rank2 version of traversable |
2022-06-19 10:17:15 +0200 | <jackdk> | Similarly, to not have to write a zillion deriving instances, you have to be able to come up with something like `deriving instance (forall a . Eq a => Eq (f a)) => Eq (Person f)` |
2022-06-19 10:19:30 +0200 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-06-19 10:20:28 +0200 | <jackdk> | So I think there's a valley before you get all the payoff, and I think if I was leading an industrial team I'd probably teach higher-payoff things first |
2022-06-19 10:22:06 +0200 | <kuribas> | jackdk: this? https://hackage.haskell.org/package/hkd-0.1/docs/Data-HKD.html#v:gftraverse |
2022-06-19 10:22:21 +0200 | <kuribas> | jackdk: what are higher-payoff things? |
2022-06-19 10:23:30 +0200 | <jackdk> | kuribas: https://hackage.haskell.org/package/hkd-0.1/docs/Data-HKD.html#v:ftraverse is the interface, you've linked the generic-deriving helper |
2022-06-19 10:23:30 +0200 | <kuribas> | also, "deriving instance Eq (Person Identity)", is the same for the alternative (separate data definitions). |
2022-06-19 10:24:20 +0200 | <kuribas> | rank2 traverse is not that scary, is it? |
2022-06-19 10:24:28 +0200 | <jackdk> | For example, if I could choose between a team fluent in servant or a team fluent in hkd, I'd probably pick servant |
2022-06-19 10:24:50 +0200 | <jackdk> | If I could choose between fluency in lens or fluency in hkd, I'd probably pick lens |
2022-06-19 10:25:26 +0200 | <kuribas> | But the useful subset of lens is pretty small. |
2022-06-19 10:25:40 +0200 | <kuribas> | most of the "scary" lens stuff is extra fluff. |
2022-06-19 10:26:35 +0200 | <kuribas> | basic lenses or optics (view, over, toListOff, traverseOf, ...) are not that hard, or are they? |
2022-06-19 10:26:43 +0200 | <jackdk> | "rank2 traverse is not that scary" - not _that_ scary in itself , but you also have to be comfortable with functor composition to understand how it works |
2022-06-19 10:26:46 +0200 | <kuribas> | I mean, ideally you'd know both. |
2022-06-19 10:26:58 +0200 | <kuribas> | hmm, good point. |
2022-06-19 10:27:48 +0200 | <jackdk> | kuribas: ideally you'd know everything, yes, but the question is: how much do you need to teach someone before he or she becomes productive? |
2022-06-19 10:27:50 +0200 | <kuribas> | I think these things are easier explained using examples, than by analysing the type. |
2022-06-19 10:28:22 +0200 | <kuribas> | jackdk: well, I have been "simplifying" my code by removing transformers, and using IO, IORefs and exceptions. |
2022-06-19 10:28:45 +0200 | <jackdk> | I personally would not go that direction but ok |
2022-06-19 10:28:58 +0200 | <kuribas> | But I found the hkd records to be simplifying the code a lot. |
2022-06-19 10:29:25 +0200 | <kuribas> | jackdk: maybe clojure *is* a better language for average developers after all... |
2022-06-19 10:30:08 +0200 | <kuribas> | as, instead of using hkd records, you just use hashmaps everywhere! |
2022-06-19 10:30:46 +0200 | <jackdk> | I think that's swinging too far, the type-checker does _so_ much |
2022-06-19 10:31:25 +0200 | <kuribas> | true, but how can you encode "record variants", in an easy, but type-safe way? |
2022-06-19 10:32:23 +0200 | <jackdk> | newtypes and a few type variables in a template record |
2022-06-19 10:32:38 +0200 | <kuribas> | what's a "template record"? |
2022-06-19 10:32:56 +0200 | <kuribas> | you mean TH to generate records? |
2022-06-19 10:34:00 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2022-06-19 10:34:19 +0200 | <jackdk> | data `Person timestamp = { name :: Text, updatedAt :: timestamp, createdAt :: timestamp }; newtype NewPerson = NewPerson (Person ()); newtype StoredPerson = StoredPerson (Person UTCTime)`. Or perhaps `type` |
2022-06-19 10:35:10 +0200 | Guest64 | (~Guest64@2401:4900:1cc8:c493:1996:37e1:9729:88af) (Quit: Guest64) |
2022-06-19 10:36:39 +0200 | <kuribas> | that's less flexible than a hkd type variable. |
2022-06-19 10:37:51 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-06-19 10:38:16 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-181.elisa-laajakaista.fi) |
2022-06-19 10:42:10 +0200 | <jackdk> | yes |
2022-06-19 10:42:23 +0200 | <jackdk> | I was never arguing otherwise |
2022-06-19 10:43:41 +0200 | <kuribas> | then I could argue that the clojure approach is superior, as it gives you more flexibility. |
2022-06-19 10:44:28 +0200 | <kuribas> | For example, I could make a hashmap that describes how to parse each field. |
2022-06-19 10:44:36 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-06-19 10:52:01 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
2022-06-19 10:54:04 +0200 | <kuribas> | jackdk: do you have experience with teaching this? |
2022-06-19 10:54:10 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-06-19 10:56:25 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds) |
2022-06-19 10:57:58 +0200 | <jackdk> | You could, but then I would say that giving up type safety entirely is the greater loss |
2022-06-19 10:58:23 +0200 | <kuribas> | yeah, opinions differ on that part. |
2022-06-19 10:58:47 +0200 | <kuribas> | But personally I prefer type safety over conciseness. |
2022-06-19 10:58:57 +0200 | <jackdk> | I've taught FP for a few years now. |
2022-06-19 10:59:27 +0200 | <jackdk> | All else being equal, I'd like more type safety, but as an extreme example I don't find singletons often justify their weight in Haskell |
2022-06-19 10:59:44 +0200 | <kuribas> | ah, I agree there. |
2022-06-19 11:00:18 +0200 | flo[m] | (~flosansps@2001:470:69fc:105::1:c22d) (Quit: You have been kicked for being idle) |
2022-06-19 11:00:50 +0200 | <kuribas> | Though I am not sure that's because the problem is inherently hard, or the library is overengineered. |
2022-06-19 11:01:04 +0200 | flo[m] | (~flosansps@2001:470:69fc:105::1:c22d) |
2022-06-19 11:01:31 +0200 | <kuribas> | As a workaround, you can usually make a GADT to link type level and value level. |
2022-06-19 11:01:35 +0200 | <tomsmeding> | I suspect the general problem that singletons is trying to solve is inherently hard |
2022-06-19 11:01:39 +0200 | arthurs115 | (~arthurs11@78.196.67.166) (Ping timeout: 256 seconds) |
2022-06-19 11:01:44 +0200 | <tomsmeding> | making your own singletons for particular types is really not so hard |
2022-06-19 11:01:50 +0200 | <tomsmeding> | yeah |
2022-06-19 11:03:21 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-181.elisa-laajakaista.fi) (Ping timeout: 248 seconds) |
2022-06-19 11:04:04 +0200 | arthurs115 | (~arthurs11@78.196.67.166) |
2022-06-19 11:04:44 +0200 | <kuribas> | wouldn't a simple macro to "unlift" data be useful? |
2022-06-19 11:05:51 +0200 | <kuribas> | MyData Foo = MkFoo | MkBar; instance UnLift 'MkFoo Foo; instance UnLift 'MkBar Foo |
2022-06-19 11:07:33 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) |
2022-06-19 11:08:41 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds) |
2022-06-19 11:08:55 +0200 | <coco> | Does the cabal executable provide a command or flag to list the specification version that it supports? I can't find any |
2022-06-19 11:09:22 +0200 | flo[m] | (~flosansps@2001:470:69fc:105::1:c22d) () |
2022-06-19 11:09:23 +0200 | <jchia[m]> | I'm getting an error from allocaBytesAligned. How can I track down the caller that is calling it with invalid alignment? "allocaBytesAligned: invalid argument (alignment (=24) must be a power of two!)" |
2022-06-19 11:09:31 +0200 | <jchia[m]> | IDK which library is doing this |
2022-06-19 11:13:41 +0200 | coot | (~coot@213.134.190.95) |
2022-06-19 11:13:42 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 11:14:11 +0200 | <turlando> | I'm having an hard time trying to typecheck the following expression. I have to benchmark a function encrypt :: MonadRandom m => Curve -> PublicPoint -> Integer -> m (Maybe (Point, Point)) and I'm using Gauge as bench library. I'm doing something like bench "encrypt" $ whnf (encrypt curve public) clearText, but GHC says «Ambiguous type variable ‘m0’ arising from a use of ‘encrypt’ prevents the constraint ‘(MonadRandom m0)’ from being solved. |
2022-06-19 11:14:11 +0200 | <turlando> | Probable fix: use a type annotation to specify what ‘m0’ should be.» The only issue is that I'm not sure what exactly should I annotate and how |
2022-06-19 11:19:02 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) |
2022-06-19 11:19:32 +0200 | <maerwald[m]> | encrypt @IO |
2022-06-19 11:23:34 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 11:25:27 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds) |
2022-06-19 11:27:42 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 244 seconds) |
2022-06-19 11:27:59 +0200 | perdent | (~perdent@124.188.208.163) |
2022-06-19 11:31:06 +0200 | zeenk | (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) |
2022-06-19 11:32:22 +0200 | arthurs115 | (~arthurs11@78.196.67.166) (Quit: arthurs115) |
2022-06-19 11:32:30 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-06-19 11:32:36 +0200 | arthurs115 | (~arthurs11@78.196.67.166) |
2022-06-19 11:33:57 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-06-19 11:43:59 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 11:46:19 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-06-19 11:47:39 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-06-19 11:49:17 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
2022-06-19 11:50:41 +0200 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Ping timeout: 246 seconds) |
2022-06-19 11:51:31 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-06-19 11:52:15 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 11:55:10 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 240 seconds) |
2022-06-19 11:57:13 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
2022-06-19 12:00:53 +0200 | Flonk | (~Flonk@134.255.252.174) |
2022-06-19 12:01:07 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) |
2022-06-19 12:03:06 +0200 | gurkenglas | (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) |
2022-06-19 12:04:59 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-06-19 12:06:58 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 12:07:24 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 12:08:20 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 12:10:36 +0200 | Ether17 | (~Ether17@2401:f40:100c:b164:1ac0:4dff:fe69:b9d5) |
2022-06-19 12:14:54 +0200 | juri__ | juri_ |
2022-06-19 12:17:04 +0200 | noteness | (~noteness@user/noteness) (Ping timeout: 240 seconds) |
2022-06-19 12:17:33 +0200 | noteness | (~noteness@user/noteness) |
2022-06-19 12:18:01 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 248 seconds) |
2022-06-19 12:18:03 +0200 | Ether17 | (~Ether17@2401:f40:100c:b164:1ac0:4dff:fe69:b9d5) (Quit: Client closed) |
2022-06-19 12:18:34 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
2022-06-19 12:18:52 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-06-19 12:24:00 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-06-19 12:25:04 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-06-19 12:25:22 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-06-19 12:30:19 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 12:35:17 +0200 | Flonk | (~Flonk@134.255.252.174) (Read error: Connection reset by peer) |
2022-06-19 12:35:51 +0200 | Flonk | (~Flonk@134.255.252.174) |
2022-06-19 12:38:01 +0200 | kuribas | (~user@ptr-17d51eou2t4ghz8c28s.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2022-06-19 12:40:49 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) (Ping timeout: 256 seconds) |
2022-06-19 12:53:26 +0200 | odnes | (~odnes@5-203-174-51.pat.nym.cosmote.net) |
2022-06-19 12:54:09 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) |
2022-06-19 12:58:59 +0200 | __monty__ | (~toonn@user/toonn) |
2022-06-19 13:02:05 +0200 | perdent | (~perdent@124.188.208.163) (Quit: Client closed) |
2022-06-19 13:02:50 +0200 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection) |
2022-06-19 13:08:01 +0200 | raym | (~raym@user/raym) (Ping timeout: 256 seconds) |
2022-06-19 13:08:06 +0200 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) |
2022-06-19 13:14:57 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 13:17:51 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) |
2022-06-19 13:19:21 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2022-06-19 13:20:02 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-06-19 13:22:21 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-06-19 13:24:14 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-06-19 13:24:24 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 13:25:35 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 256 seconds) |
2022-06-19 13:30:02 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 255 seconds) |
2022-06-19 13:34:08 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-06-19 13:35:05 +0200 | Topsi | (~Topsi@dyndsl-095-033-092-199.ewe-ip-backbone.de) |
2022-06-19 13:49:27 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 13:53:12 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-06-19 13:53:48 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-06-19 13:56:48 +0200 | dimsuz | (~dimsuz@185.17.131.99) |
2022-06-19 13:59:04 +0200 | <Infinite> | What does simply {} mean? |
2022-06-19 13:59:04 +0200 | <Infinite> | For example in this snippet: |
2022-06-19 13:59:05 +0200 | <Infinite> | instance Diagnostic PsMessage where |
2022-06-19 13:59:05 +0200 | <Infinite> | diagnosticReason = \case |
2022-06-19 13:59:06 +0200 | <Infinite> | PSErrParse{} -> ErrorWithoutFlag |
2022-06-19 14:00:06 +0200 | <hpc> | it's pattern matching on a record and saying it doesn't care about the fields |
2022-06-19 14:00:11 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds) |
2022-06-19 14:00:22 +0200 | <hpc> | it's like saying \case PSErrParse _ _ _ _ _ _ ... -> ErrorWithoutFlag |
2022-06-19 14:00:32 +0200 | <hpc> | however many fields that constructor has |
2022-06-19 14:01:42 +0200 | dimsuz | (~dimsuz@185.17.131.99) (Quit: Client closed) |
2022-06-19 14:02:07 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 14:02:26 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-06-19 14:05:17 +0200 | myme1 | (~myme@2a01:799:d5a:cd00:f2f:d1a:66d5:4462) (Ping timeout: 244 seconds) |
2022-06-19 14:06:07 +0200 | myme1 | (~myme@2a01:799:d5a:cd00:3de4:f2de:722d:a4ae) |
2022-06-19 14:14:58 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-06-19 14:15:06 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 244 seconds) |
2022-06-19 14:15:32 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 14:16:00 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-06-19 14:20:08 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
2022-06-19 14:30:58 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
2022-06-19 14:31:49 +0200 | <Axman6> | Infinite: see https://stackoverflow.com/questions/38052553/haskell-record-pattern-matching |
2022-06-19 14:32:30 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 14:33:46 +0200 | henninb | (~henninb@97-116-138-116.mpls.qwest.net) (Ping timeout: 272 seconds) |
2022-06-19 14:35:27 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-06-19 14:36:51 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-06-19 14:42:46 +0200 | benin0 | (~benin@183.82.204.151) (Quit: The Lounge - https://thelounge.chat) |
2022-06-19 14:42:58 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-06-19 14:48:04 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-06-19 14:49:18 +0200 | odnes_ | (~odnes@5-203-186-208.pat.nym.cosmote.net) |
2022-06-19 14:50:33 +0200 | odnes | (~odnes@5-203-174-51.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
2022-06-19 14:54:05 +0200 | tristanC_ | tristanC |
2022-06-19 14:55:32 +0200 | Axman6 | (~Axman6@user/axman6) (Remote host closed the connection) |
2022-06-19 14:55:46 +0200 | Axman6 | (~Axman6@user/axman6) |
2022-06-19 15:04:24 +0200 | Everything | (~Everythin@37.115.210.35) |
2022-06-19 15:04:40 +0200 | uberrice | (~uberrice@77-58-67-184.dclient.hispeed.ch) |
2022-06-19 15:06:35 +0200 | <uberrice> | Hi there, quick question: I have fun01 :: a->b->a, and now I want to make fun02 :: a -> [b] -> a that takes an array of b and applies fun01 to a one after another. I assume I have to use foldl, but I'm getting a bit confused with syntax |
2022-06-19 15:07:03 +0200 | <tomsmeding> | :t foldl' |
2022-06-19 15:07:05 +0200 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2022-06-19 15:07:29 +0200 | <tomsmeding> | (when you think you want foldl, you almost always want foldl'; if you really need foldl you would know) |
2022-06-19 15:07:36 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds) |
2022-06-19 15:08:04 +0200 | <tomsmeding> | :t foldl' :: (a -> b -> a) -> a -> [b] -> a |
2022-06-19 15:08:05 +0200 | <lambdabot> | (a -> b -> a) -> a -> [b] -> a |
2022-06-19 15:08:51 +0200 | <tomsmeding> | uberrice: I switched 'a' and 'b', because they're just names, and I instantiated 't a' to '[a]'; [] is an instance of Foldable |
2022-06-19 15:09:29 +0200 | <tomsmeding> | does that help? |
2022-06-19 15:11:38 +0200 | <uberrice> | Theoretically, yes. I'm still in the process of learning functional programming so it's somewhat confusing. From looking at the type notation, foldl' needs an (a->b->a) that would be fun01 in my case (?), then a then b to yield a. Can i write this as: fun02 a b = foldl' fun01 a b? ghci somehow says foldl' isn't found, would that be foldl1? |
2022-06-19 15:12:09 +0200 | <geekosaur> | @index foldl' |
2022-06-19 15:12:09 +0200 | <lambdabot> | Data.Foldable, Data.List, GHC.OldList, Data.ByteString.Lazy.Char8, Data.ByteString.Lazy, Data.ByteString.Char8, Data.ByteString, Data.IntMap.Strict, Data.IntMap.Lazy, Data.IntMap, Data.IntSet, Data. |
2022-06-19 15:12:09 +0200 | <lambdabot> | Map.Lazy, Data.Map.Strict, Data.Map, Data.Set |
2022-06-19 15:12:38 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds) |
2022-06-19 15:12:45 +0200 | <tomsmeding> | uberrice: import Data.List |
2022-06-19 15:12:59 +0200 | <tomsmeding> | and yes, that's precisely how you can write it |
2022-06-19 15:13:10 +0200 | <tomsmeding> | you can also abbreviate that as `fun02 = foldl' fun01` |
2022-06-19 15:13:12 +0200 | <tomsmeding> | :) |
2022-06-19 15:13:34 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-06-19 15:15:16 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-06-19 15:16:48 +0200 | <uberrice> | hmm, yeah, then I understand the concept I guess - my actual implemented solution doesn't work though. Weird |
2022-06-19 15:17:24 +0200 | arthurs115 | (~arthurs11@78.196.67.166) (Quit: arthurs115) |
2022-06-19 15:17:37 +0200 | arthurs115 | (~arthurs11@78.196.67.166) |
2022-06-19 15:18:22 +0200 | <uberrice> | Doesn't work as in seemingly doesn't apply the arguments b to a. I'm sure that's PEBCAK though |
2022-06-19 15:19:51 +0200 | <geekosaur> | @where paste |
2022-06-19 15:19:52 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-06-19 15:21:14 +0200 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-06-19 15:22:58 +0200 | raym | (~raym@user/raym) |
2022-06-19 15:23:29 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2022-06-19 15:26:12 +0200 | <uberrice> | yup, PEBCAK, fun02 works correctly, fun01 doesn't. Thanks for the help! |
2022-06-19 15:26:48 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) |
2022-06-19 15:28:10 +0200 | finsternis | (~X@23.226.237.192) (Ping timeout: 240 seconds) |
2022-06-19 15:28:51 +0200 | finsternis | (~X@23.226.237.192) |
2022-06-19 15:30:22 +0200 | acetakwas | (~acetakwas@f240139.upc-f.chello.nl) |
2022-06-19 15:31:05 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 255 seconds) |
2022-06-19 15:31:28 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 15:40:14 +0200 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-06-19 15:41:48 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-06-19 15:42:56 +0200 | xff0x | (~xff0x@2405:6580:b080:900:1201:81ba:ce69:9f85) (Ping timeout: 244 seconds) |
2022-06-19 15:47:18 +0200 | xff0x | (~xff0x@2405:6580:b080:900:5dff:6ec3:2660:4e43) |
2022-06-19 15:55:23 +0200 | <maerwald[m]> | Is there an alternative for tasty with less dependencies? |
2022-06-19 15:57:47 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
2022-06-19 16:00:56 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds) |
2022-06-19 16:00:59 +0200 | <maerwald[m]> | Or maybe just use QuickCheck/HUnit directly. But then I still need an alternative for tasty-bench |
2022-06-19 16:07:20 +0200 | <tomsmeding> | use criterion directly? |
2022-06-19 16:07:23 +0200 | <maerwald[m]> | Or... put benchmarks into a separste package. |
2022-06-19 16:07:48 +0200 | <maerwald[m]> | tomsmeding: tasty-bench doesn't use criterion |
2022-06-19 16:08:05 +0200 | <tomsmeding> | ah! |
2022-06-19 16:08:14 +0200 | <maerwald[m]> | It's already supposed to be more lightweight |
2022-06-19 16:08:32 +0200 | <maerwald[m]> | But tasty pulls in shenanigans like optparse-applicative |
2022-06-19 16:08:33 +0200 | <tomsmeding> | The benchmarks are probably already in a different component, which shields the dependencies of you main library from those of the test suite already |
2022-06-19 16:09:14 +0200 | <maerwald[m]> | On windows this caused `cabal build` to fail, even of benchmarks are not selected for build |
2022-06-19 16:09:30 +0200 | <tomsmeding> | if has(windows): buildable = false |
2022-06-19 16:09:34 +0200 | <tomsmeding> | I forget the syntax |
2022-06-19 16:09:41 +0200 | <maerwald[m]> | tomsmeding: that's what I did |
2022-06-19 16:09:44 +0200 | <tomsmeding> | :p |
2022-06-19 16:09:49 +0200 | <tomsmeding> | but yeah not satisfying |
2022-06-19 16:09:50 +0200 | <maerwald[m]> | But it's ugly |
2022-06-19 16:10:25 +0200 | <tomsmeding> | same effect but somewhat less ugly cabal file, perhaps: an automatic cabal flag that disables the benchmark suite |
2022-06-19 16:10:37 +0200 | <tomsmeding> | if you don't want to refactor your test code |
2022-06-19 16:11:03 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) |
2022-06-19 16:11:05 +0200 | <maerwald[m]> | tomsmeding: except this is a core package and I'm worried about unforeseen side effects lol |
2022-06-19 16:11:13 +0200 | <tomsmeding> | ah :p |
2022-06-19 16:11:59 +0200 | pleo | (~pleo@user/pleo) |
2022-06-19 16:12:05 +0200 | <maerwald[m]> | There should be s way to easily inline library code for such use cases |
2022-06-19 16:12:45 +0200 | <maerwald[m]> | Like, vendor the crsp, but only the codepaths you actually use |
2022-06-19 16:13:12 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 16:18:49 +0200 | machinedgod | (~machinedg@66.244.246.252) |
2022-06-19 16:20:35 +0200 | <hololeap> | is there a quick reference for CPP macros I can use with GHC, for instance, checking the minimum version of a dependency |
2022-06-19 16:22:23 +0200 | <geekosaur[m]> | https://downloads.haskell.org/ghc/9.2.1/docs/html/users_guide/phases.html?highlight=__glasgow_hask… |
2022-06-19 16:23:03 +0200 | <geekosaur[m]> | but that's only the ghc ones, cabal defines some more |
2022-06-19 16:23:11 +0200 | <maerwald[m]> | https://guide.aelve.com/haskell/cpp-vww0qd72 |
2022-06-19 16:23:25 +0200 | <maerwald[m]> | MIN_VERSION_bytestring(0,10,4) |
2022-06-19 16:23:34 +0200 | <hololeap> | ok, thanks |
2022-06-19 16:24:33 +0200 | <geekosaur[m]> | https://cabal.readthedocs.io/en/3.6/cabal-package.html#conditional-compilation |
2022-06-19 16:26:46 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) (Quit: WeeChat 3.4.1) |
2022-06-19 16:26:54 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) |
2022-06-19 16:32:32 +0200 | dsrt^ | (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
2022-06-19 16:40:29 +0200 | odnes__ | (~odnes@5-203-186-208.pat.nym.cosmote.net) |
2022-06-19 16:43:05 +0200 | odnes_ | (~odnes@5-203-186-208.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
2022-06-19 16:44:12 +0200 | haskell_apprenti | (~haskell_a@2603-7000-9900-04ba-b9ff-6cab-6298-12c0.res6.spectrum.com) |
2022-06-19 16:46:20 +0200 | <haskell_apprenti> | basic question: If I want to extract a type from parent type (not sure if that's correct terminology) ie |
2022-06-19 16:46:20 +0200 | <haskell_apprenti> | data DatabaseItem = DbString String, and I have x = DatabaseItem "example", and I want to write a function with signature f :: DatabaseItem -> String, how do I do that? |
2022-06-19 16:46:23 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 16:48:18 +0200 | gmg | (~user@user/gehmehgeh) |
2022-06-19 16:49:22 +0200 | <geekosaur> | f (DatabaseItem s) = s |
2022-06-19 16:49:29 +0200 | raym | (~raym@user/raym) (Ping timeout: 248 seconds) |
2022-06-19 16:49:53 +0200 | <haskell_apprenti> | ah ok and that takes advantage of pattern matching |
2022-06-19 16:49:57 +0200 | <haskell_apprenti> | cool thanks |
2022-06-19 16:50:24 +0200 | <haskell_apprenti> | ah follow up |
2022-06-19 16:50:37 +0200 | <haskell_apprenti> | what if this is the datatype |
2022-06-19 16:50:38 +0200 | <haskell_apprenti> | data DatabaseItem = DbString String |
2022-06-19 16:50:38 +0200 | <haskell_apprenti> | | DbNumber Integer |
2022-06-19 16:50:59 +0200 | <haskell_apprenti> | and I want to write a function to extract String in one instance, Integer in another. Do I need to write a separate function for each? |
2022-06-19 16:51:17 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2022-06-19 16:51:38 +0200 | <haskell_apprenti> | what would the type signature of that function be? because we're not sure what the inner type to be extracted will be |
2022-06-19 16:51:38 +0200 | <geekosaur[m]> | ah, sorry, what I sent you before was wrong because I used the type name instead of the data constructor: f (DbString s) = s |
2022-06-19 16:51:56 +0200 | <geekosaur[m]> | and if you want the second one, you can't write it because your function has to have a single type |
2022-06-19 16:52:53 +0200 | <geekosaur[m]> | it can't be Integer in one case and String in another. it could be Either String Integer though |
2022-06-19 16:53:01 +0200 | <geekosaur[m]> | that's not really recommended |
2022-06-19 16:53:48 +0200 | <geekosaur[m]> | on the other hand, writing separate functions, both would be partial (would have to error out if the constructor of the value was wrong) |
2022-06-19 16:54:37 +0200 | <geekosaur[m]> | f (DbString s) = Left s; f (DbNumber n) = Right n |
2022-06-19 16:54:57 +0200 | <geekosaur[m]> | but this is no different from the original, really, so we wouldn't bother |
2022-06-19 16:56:03 +0200 | <haskell_apprenti> | hm not sure I follow - so recommended to write separate functions? I'm a little confused by your usage of Left and Right |
2022-06-19 16:56:23 +0200 | <geekosaur[m]> | @src Either |
2022-06-19 16:56:23 +0200 | <lambdabot> | Source not found. This mission is too important for me to allow you to jeopardize it. |
2022-06-19 16:56:29 +0200 | <geekosaur[m]> | bah |
2022-06-19 16:56:45 +0200 | <geekosaur[m]> | data Either a b = Left a | Right b |
2022-06-19 16:56:55 +0200 | <geekosaur[m]> | so the type of f in that case is Either String Integer |
2022-06-19 16:57:55 +0200 | <haskell_apprenti> | ah I see. but you mentioned that's not really recommended |
2022-06-19 16:58:15 +0200 | <geekosaur[m]> | writing separate functions would otherwise be necessary, but you need to decide what to do if handed the wrong kind of DatabaseItem |
2022-06-19 16:58:40 +0200 | <haskell_apprenti> | aha |
2022-06-19 16:58:47 +0200 | <geekosaur[m]> | not recommended because it's no different from just using the DatabaseItem, which is already effectively Either String Integer |
2022-06-19 16:59:03 +0200 | <geekosaur[m]> | so you gain nothing from that function |
2022-06-19 16:59:41 +0200 | <haskell_apprenti> | right so would also be DatabaseItem return type |
2022-06-19 17:00:54 +0200 | <haskell_apprenti> | thanks for the information |
2022-06-19 17:01:54 +0200 | <geekosaur[m]> | "effectively". DatabaseItem is more specific, but it behaves in all ways like Either String Integer |
2022-06-19 17:02:09 +0200 | odnes__ | (~odnes@5-203-186-208.pat.nym.cosmote.net) (Ping timeout: 276 seconds) |
2022-06-19 17:04:59 +0200 | odnes | (~odnes@5-203-186-208.pat.nym.cosmote.net) |
2022-06-19 17:05:17 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-06-19 17:06:02 +0200 | haskell_apprenti | (~haskell_a@2603-7000-9900-04ba-b9ff-6cab-6298-12c0.res6.spectrum.com) (Quit: Client closed) |
2022-06-19 17:16:08 +0200 | Infinite | (~Infinite@49.39.121.77) (Quit: Client closed) |
2022-06-19 17:17:42 +0200 | Infinite | (~Infinite@49.39.121.77) |
2022-06-19 17:17:51 +0200 | arjun | (~arjun@user/arjun) |
2022-06-19 17:18:07 +0200 | coot | (~coot@213.134.190.95) |
2022-06-19 17:21:10 +0200 | stefan-_ | (~cri@42dots.de) (Ping timeout: 240 seconds) |
2022-06-19 17:25:33 +0200 | stefan-_ | (~cri@42dots.de) |
2022-06-19 17:26:25 +0200 | arthurs115 | (~arthurs11@78.196.67.166) (Ping timeout: 256 seconds) |
2022-06-19 17:28:25 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-06-19 17:37:34 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-06-19 17:42:36 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-06-19 17:46:40 +0200 | kimjetwav | (~user@2607:fea8:2340:da00:c6e9:fbcb:640d:f8d) (Remote host closed the connection) |
2022-06-19 17:46:45 +0200 | zeenk | (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!) |
2022-06-19 17:47:34 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds) |
2022-06-19 17:48:04 +0200 | califax | (~califax@user/califx) (Ping timeout: 240 seconds) |
2022-06-19 17:48:29 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-06-19 17:48:34 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
2022-06-19 17:48:51 +0200 | califax | (~califax@user/califx) |
2022-06-19 17:49:25 +0200 | raym | (~raym@user/raym) |
2022-06-19 17:49:34 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
2022-06-19 17:50:22 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-06-19 17:53:13 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-06-19 17:55:18 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 17:57:48 +0200 | Infinite | (~Infinite@49.39.121.77) (Ping timeout: 252 seconds) |
2022-06-19 18:01:10 +0200 | pleo | (~pleo@user/pleo) (Ping timeout: 240 seconds) |
2022-06-19 18:01:12 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-06-19 18:01:26 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-06-19 18:05:01 +0200 | coltenwebb[m] | (~coltenweb@2001:470:69fc:105::2:17c7) |
2022-06-19 18:06:33 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-06-19 18:06:33 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-06-19 18:06:33 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-06-19 18:07:26 +0200 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.5) |
2022-06-19 18:12:54 +0200 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) |
2022-06-19 18:14:06 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-06-19 18:16:49 +0200 | <hololeap> | any way to write `(m a -> n b) -> ParsecT s u m a -> ParsecT s u n b` |
2022-06-19 18:17:47 +0200 | machinedgod | (~machinedg@66.244.246.252) (Ping timeout: 246 seconds) |
2022-06-19 18:19:17 +0200 | <geekosaur> | iirc that's only possible for a small subset of monads |
2022-06-19 18:20:17 +0200 | <[exa]> | you'd alternatively need something like `polyjoin :: m (n a) -> n a` |
2022-06-19 18:20:23 +0200 | <[exa]> | not sure if that's got a name |
2022-06-19 18:22:45 +0200 | <hololeap> | class Foo t where foo :: (m a -> n b) -> t m a -> t n b |
2022-06-19 18:23:04 +0200 | <hololeap> | not sure what that's called either. isn't there some concept of a "functor over monads" or something |
2022-06-19 18:24:51 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-06-19 18:26:24 +0200 | sebastiandb | (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) |
2022-06-19 18:27:21 +0200 | <hololeap> | foonctor |
2022-06-19 18:28:10 +0200 | wroathe | (~wroathe@user/wroathe) (Quit: leaving) |
2022-06-19 18:30:02 +0200 | <c_wraith> | hololeap: it'd be hoist from mmorph, if Parsec had an instance for MFunctor |
2022-06-19 18:30:13 +0200 | <c_wraith> | well. hoist is a bit more specific than that |
2022-06-19 18:32:32 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-06-19 18:33:29 +0200 | <uberrice> | Uh, simple question, but gooogle doesn't help. Can anyone link me to a description what Dyadic is in haskell? |
2022-06-19 18:36:34 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-06-19 18:37:19 +0200 | <hololeap> | I'll probably just switch from parsec to megaparsec, cuz, yeah, having MonadParsec would be really nice |
2022-06-19 18:37:28 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-06-19 18:37:28 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-06-19 18:37:28 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-06-19 18:38:34 +0200 | <c_wraith> | uberrice: it doesn't have any special haskell meaning |
2022-06-19 18:39:28 +0200 | geekosaur | wonders if someone was confused by monadic/dyadic as used in apl |
2022-06-19 18:39:58 +0200 | <uberrice> | it just randomly comes up in some (lecture) code like a type, but it doesn't seem to have any meaning, which confuses me |
2022-06-19 18:40:40 +0200 | <geekosaur> | can you show some of that context? |
2022-06-19 18:41:07 +0200 | <geekosaur> | (without context I'd go with the APL meaning: an operator that takes 2 parameters) |
2022-06-19 18:41:14 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) (Ping timeout: 246 seconds) |
2022-06-19 18:41:47 +0200 | <EvanR> | i.e. a rank 2 tensor? |
2022-06-19 18:42:01 +0200 | alp__ | (~alp@user/alp) |
2022-06-19 18:42:19 +0200 | <uberrice> | yes, that's probably what it is. The context it always crops up: make your own 'expression handler' in haskell; with data Expr = Const Value | Var String | Dyadic Opr Expr Expr ; |
2022-06-19 18:42:54 +0200 | <c_wraith> | ah. that *is* the definition |
2022-06-19 18:43:08 +0200 | <c_wraith> | and it's definitely coming from someone using apl-like meanings |
2022-06-19 18:43:19 +0200 | kimjetwav | (~user@2607:fea8:2340:da00:a3ad:b89c:e37:6b8f) |
2022-06-19 18:43:28 +0200 | <c_wraith> | in apl, "dyadic" means an operation that takes two arguments |
2022-06-19 18:43:34 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 18:43:38 +0200 | sonny | (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca) |
2022-06-19 18:43:48 +0200 | <EvanR> | arity 2 |
2022-06-19 18:43:50 +0200 | <uberrice> | https://paste.tomsmeding.com/x4rw4VgT (which then the task is to evaluate) |
2022-06-19 18:44:07 +0200 | <uberrice> | (expressions in) |
2022-06-19 18:44:44 +0200 | <geekosaur> | right, that's basically the APL meaning, an operator with 2 arguments (left and right) |
2022-06-19 18:44:48 +0200 | <c_wraith> | It'd be more common in haskell to name that constructor something like Binary or BinOp |
2022-06-19 18:44:52 +0200 | <uberrice> | so is there any programmatic meaning to putting Dyadic there - if you just erased the Dyadic there, am I correct in my assumption the program wouldn't care? |
2022-06-19 18:45:01 +0200 | <c_wraith> | well, you need a constructor name |
2022-06-19 18:45:16 +0200 | <uberrice> | aaah ok. I just got it. Man. |
2022-06-19 18:45:29 +0200 | <uberrice> | Dyadic, with parameters of Opr, Expr and Expr |
2022-06-19 18:45:41 +0200 | <uberrice> | as like Var, with Parameter String |
2022-06-19 18:45:45 +0200 | <uberrice> | man that took way too long. |
2022-06-19 18:45:47 +0200 | <__monty__> | Dyadic is just math-speak, not APL-speak in particular, https://en.wikipedia.org/wiki/Dyadic |
2022-06-19 18:46:06 +0200 | liz | (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net) |
2022-06-19 18:46:14 +0200 | <uberrice> | thanks! |
2022-06-19 18:46:17 +0200 | <__monty__> | uberrice: It's often called `BinOp` for binary operator. Just a name though. |
2022-06-19 18:47:00 +0200 | <uberrice> | i was too caught up in thinking in imperative-like languages so I got confused thinking `Dyadic` was some predefined thing for some reason |
2022-06-19 18:47:39 +0200 | <EvanR> | even the base types like Bool, Int, String etc are defined somewhere |
2022-06-19 18:48:22 +0200 | <EvanR> | so predefined, yes, built into the language no |
2022-06-19 18:48:25 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
2022-06-19 18:48:25 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
2022-06-19 18:49:59 +0200 | econo | (uid147250@user/econo) |
2022-06-19 18:51:25 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 256 seconds) |
2022-06-19 18:54:04 +0200 | <c_wraith> | Bool is a weird case, as guards generate code that depends on Bool. So.. it's sort of part of the language in a way something like String isn't |
2022-06-19 18:54:36 +0200 | <sebastiandb> | This isn't related to what you guys are talking about, but how do you write guards on one line? This doesn't work in ghci: `let { myAbs n | n < 0 = -n; | otherwise = n } in myAbs -1`. It's not that important since you can just use if-else, but it's probably good to know. |
2022-06-19 18:54:50 +0200 | <geekosaur> | just leave out the semicolons |
2022-06-19 18:55:00 +0200 | <monochrom> | String literals generate code that depends on String, too. |
2022-06-19 18:55:25 +0200 | <monochrom> | or depends on [Char]. |
2022-06-19 18:55:33 +0200 | <geekosaur> | > let foo a | a == 5 = 6 | a == 4 = 2 | otherwise = a - 3 in map foo [3..6] |
2022-06-19 18:55:35 +0200 | <lambdabot> | [0,2,6,3] |
2022-06-19 18:55:49 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) |
2022-06-19 18:55:52 +0200 | <sebastiandb> | geekosaur: Thanks! Didn't realize it was that simple. |
2022-06-19 18:59:09 +0200 | <sonny> | How does Haskell guarantee safety if a programmer uses bytestring or string? |
2022-06-19 18:59:41 +0200 | <monochrom> | I think it doesn't. |
2022-06-19 19:00:19 +0200 | arjun | (~arjun@user/arjun) (Quit: tip toe-ing my way outta here) |
2022-06-19 19:00:26 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 19:00:29 +0200 | <sonny> | hmm |
2022-06-19 19:00:33 +0200 | <geekosaur> | define safety |
2022-06-19 19:00:48 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-06-19 19:01:33 +0200 | <sonny> | A bytestring or string can be used as an escape hatch for other things. I was wondering how to deal with that problem so I figured maybe Haskell solved it already. |
2022-06-19 19:01:36 +0200 | <c_wraith> | you can still write stringly-typed code in Haskell. it's just a lot of work |
2022-06-19 19:01:57 +0200 | <geekosaur> | you can't e.g. abuse badly written printf escapes to smash the stack |
2022-06-19 19:02:06 +0200 | <monochrom> | How do I use string as an escape hatch? |
2022-06-19 19:02:23 +0200 | <geekosaur> | the worst that can happen with Text.Printf is a runtime type assertion |
2022-06-19 19:02:49 +0200 | <sonny> | oh ok |
2022-06-19 19:04:02 +0200 | <geekosaur> | most other such abuses aren't so much about string as about overflowing a stack-allocated variable, but in Haskell they're all on the heap and counted instead of using fixed buffers with NULs at the end |
2022-06-19 19:04:04 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-06-19 19:05:01 +0200 | <c_wraith> | think of it this way: strings aren't a security issue in Java. C just makes some special choices to enable problems. |
2022-06-19 19:05:17 +0200 | <EvanR> | think of a string as a type you can send anything, but not necessarily get it back. You lose information |
2022-06-19 19:05:22 +0200 | fryguybo1 | (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving) |
2022-06-19 19:05:26 +0200 | <sonny> | I see |
2022-06-19 19:05:42 +0200 | <EvanR> | a parser makes that process well defined |
2022-06-19 19:05:44 +0200 | <monochrom> | Someone needs to start studying and demonstrating heap smashing... |
2022-06-19 19:06:02 +0200 | <c_wraith> | (and then C calls most of them undefined behavior, so you can't even count on understanding the hardware to know what will happen...) |
2022-06-19 19:06:21 +0200 | stackdroid18 | (14094@user/stackdroid) |
2022-06-19 19:06:21 +0200 | <monochrom> | The profit is huge since everyone puts all their eggs on the heap >:) |
2022-06-19 19:06:51 +0200 | <geekosaur> | easy, just make the runtime mis-count the size of something it's allocating… |
2022-06-19 19:08:11 +0200 | Infinite | (~Infinite@49.39.117.70) |
2022-06-19 19:08:24 +0200 | <monochrom> | Is Naur still around? He could give a talk on "the trillion dollar mistake: putting both return addresses and local arrays on the stack" >:) |
2022-06-19 19:10:30 +0200 | <EvanR> | oh they said safety and yall heard security xD |
2022-06-19 19:10:45 +0200 | <monochrom> | No, I heard safety. |
2022-06-19 19:10:47 +0200 | <EvanR> | i.e. protecting it from yourself or from a deviant other |
2022-06-19 19:10:57 +0200 | <geekosaur> | there aren't that many things that qualify for "escape hatch for oother things" |
2022-06-19 19:11:02 +0200 | <monochrom> | But they also said "escape hatch". |
2022-06-19 19:11:33 +0200 | <EvanR> | I interpreted escape hatch like, get out of this language and user another, like, eval or SQL or something xD |
2022-06-19 19:11:48 +0200 | <monochrom> | And I did ask for an example, so it is not like I was assuming anything. |
2022-06-19 19:11:55 +0200 | <geekosaur> | no escape hatch will let you escape C that way |
2022-06-19 19:12:16 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 19:12:31 +0200 | <geekosaur> | (not even to SQL unless you plan to make the C API calls to the SQL-evaluating engine) |
2022-06-19 19:12:50 +0200 | <geekosaur> | (which naturally differ for every database interface) |
2022-06-19 19:12:55 +0200 | <monochrom> | The SQL engine is probably written in C, too. |
2022-06-19 19:13:13 +0200 | <geekosaur> | but is usually in a different process (granting sqlite) |
2022-06-19 19:13:24 +0200 | <EvanR> | printf is an example of another language |
2022-06-19 19:13:31 +0200 | <monochrom> | haha |
2022-06-19 19:15:20 +0200 | <EvanR> | encoding important well typed information into a String, then sending that string to another process, now it has to be verified all over again in the parser. But in haskell you can actually perform this within the same program in a well typed way, so you know the parser will succeed |
2022-06-19 19:15:50 +0200 | <EvanR> | i.e. yeah what c_wraith said about being a lot of work |
2022-06-19 19:16:26 +0200 | AlexZenon | (~alzenon@94.233.240.20) |
2022-06-19 19:16:45 +0200 | AlexNoo | (~AlexNoo@94.233.240.20) |
2022-06-19 19:17:18 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 19:17:25 +0200 | fryguybob | (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) |
2022-06-19 19:18:52 +0200 | ddb1 | (~ddb@2607:5300:203:9993::196) (Remote host closed the connection) |
2022-06-19 19:19:11 +0200 | <EvanR> | (I wonder what use case that would be necessary for, as opposed to just not using a string for that at all) |
2022-06-19 19:19:17 +0200 | ddb | (~ddb@ipv6two.tilde.club) |
2022-06-19 19:19:57 +0200 | Alex_test | (~al_test@94.233.240.20) |
2022-06-19 19:21:37 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 19:22:11 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 19:37:23 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-06-19 19:40:08 +0200 | machinedgod | (~machinedg@66.244.246.252) |
2022-06-19 19:44:07 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-06-19 19:44:22 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) |
2022-06-19 19:53:55 +0200 | simeon | (~pi@dslb-088-069-178-224.088.069.pools.vodafone-ip.de) |
2022-06-19 19:56:09 +0200 | vglfr | (~vglfr@coupling.penchant.volia.net) (Ping timeout: 248 seconds) |
2022-06-19 20:01:07 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 256 seconds) |
2022-06-19 20:01:42 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-06-19 20:04:31 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 256 seconds) |
2022-06-19 20:05:18 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-06-19 20:11:37 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
2022-06-19 20:12:17 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-06-19 20:16:52 +0200 | sonny | (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca) (Quit: Client closed) |
2022-06-19 20:24:55 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 20:24:56 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-06-19 20:25:59 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 20:28:08 +0200 | Infinite | (~Infinite@49.39.117.70) (Ping timeout: 252 seconds) |
2022-06-19 20:34:41 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 20:35:21 +0200 | machinedgod | (~machinedg@66.244.246.252) (Ping timeout: 276 seconds) |
2022-06-19 20:35:45 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 20:38:34 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-06-19 20:40:12 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2022-06-19 20:40:35 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
2022-06-19 20:50:00 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 20:56:38 +0200 | dtman34 | (~dtman34@2601:446:4400:2ad9:dddf:8180:d61b:8240) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
2022-06-19 20:56:44 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) |
2022-06-19 20:56:59 +0200 | dtman34 | (~dtman34@2601:446:4400:2ad9:1078:b9d6:ea9f:9bfa) |
2022-06-19 20:57:28 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) |
2022-06-19 21:01:11 +0200 | yauhsien | (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-06-19 21:04:15 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-06-19 21:11:52 +0200 | shapr | (~user@2600:4040:2d31:7100:677f:8b5d:34bb:4aea) |
2022-06-19 21:17:26 +0200 | zeenk | (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) |
2022-06-19 21:18:12 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-06-19 21:18:26 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-06-19 21:20:43 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265) |
2022-06-19 21:20:46 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-06-19 21:22:20 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 21:22:35 +0200 | <sebastiandb> | Is there a good way in Haskell to represent a matrix of any size? Something you could use to represent any of Tic-Tac-Toe, Sudoku, or the snake game? Because I feel like just using a type synonym for a list of lists is a little hackish. |
2022-06-19 21:23:26 +0200 | <sebastiandb> | Oh, Data.Matrix. Sorry, I should have looked this up first. |
2022-06-19 21:23:43 +0200 | <[exa]> | there are actual matrix types, also Vector (which you can "fold" yourself), and regular arrays (e.g. repa) |
2022-06-19 21:23:47 +0200 | <geekosaur> | or Data.Vector |
2022-06-19 21:23:53 +0200 | coot | (~coot@213.134.190.95) |
2022-06-19 21:23:57 +0200 | <geekosaur> | ohh sorry, I'm slow |
2022-06-19 21:24:08 +0200 | <[exa]> | tbh Matrix has a lot of math connotation usually so I'd support Data.Vector, yes. |
2022-06-19 21:24:27 +0200 | <geekosaur> | lists are probably the wrong type here, although for tic-tac-toe it would be good enough |
2022-06-19 21:26:08 +0200 | <sebastiandb> | Thanks for the recommendation for Data.Vector, then! |
2022-06-19 21:26:49 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds) |
2022-06-19 21:27:19 +0200 | <[exa]> | btw is there some kinda True Functional Representation of a zippable matrix? |
2022-06-19 21:27:36 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-06-19 21:29:25 +0200 | lagash_ | (lagash@lagash.shelltalk.net) (Remote host closed the connection) |
2022-06-19 21:29:37 +0200 | zeenk | (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Ping timeout: 244 seconds) |
2022-06-19 21:29:46 +0200 | zeenk | (~zeenk@188.26.144.225) |
2022-06-19 21:30:21 +0200 | lagash | (lagash@lagash.shelltalk.net) |
2022-06-19 21:31:34 +0200 | <EvanR> | IntMaps are your friend |
2022-06-19 21:31:57 +0200 | <EvanR> | (though Int isn't "true functional" data) |
2022-06-19 21:32:47 +0200 | <EvanR> | IntMaps were great in the last advent of code which called for a lot of "grids" |
2022-06-19 21:34:06 +0200 | <[exa]> | hmm yeah, and the thing is a tree and you can have some sane spatial ordering of the ints. great |
2022-06-19 21:34:09 +0200 | <[exa]> | thanks! |
2022-06-19 21:42:33 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
2022-06-19 21:49:30 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-06-19 21:49:30 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-06-19 21:49:30 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-06-19 21:51:57 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-06-19 21:52:21 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265) (Remote host closed the connection) |
2022-06-19 21:52:30 +0200 | quarkyalice | (~quarkyali@user/quarkyalice) (Quit: quarkyalice) |
2022-06-19 21:52:59 +0200 | earthy | (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) |
2022-06-19 21:55:27 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 21:56:01 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 22:02:08 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
2022-06-19 22:06:32 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) |
2022-06-19 22:06:41 +0200 | pleo | (~pleo@user/pleo) |
2022-06-19 22:08:57 +0200 | liz | (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net) (Ping timeout: 248 seconds) |
2022-06-19 22:09:18 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-06-19 22:17:57 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 258 seconds) |
2022-06-19 22:19:11 +0200 | pretty_dumm_guy | (~trottel@eduroam-134-96-204-3.uni-saarland.de) |
2022-06-19 22:19:12 +0200 | pretty_dumm_guy | (~trottel@eduroam-134-96-204-3.uni-saarland.de) (Client Quit) |
2022-06-19 22:19:50 +0200 | pretty_dumm_guy | (~trottel@eduroam-134-96-204-3.uni-saarland.de) |
2022-06-19 22:20:12 +0200 | pretty_dumm_guy | (~trottel@eduroam-134-96-204-3.uni-saarland.de) (Client Quit) |
2022-06-19 22:21:45 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 248 seconds) |
2022-06-19 22:21:50 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-06-19 22:23:20 +0200 | ss- | (~ss-@187.83.249.216.dyn.smithville.net) |
2022-06-19 22:34:09 +0200 | jgeerds | (~jgeerds@55d45f48.access.ecotel.net) |
2022-06-19 22:37:18 +0200 | Kevin578 | (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) |
2022-06-19 22:38:09 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) (Quit: WeeChat 3.3) |
2022-06-19 22:39:11 +0200 | nate4 | (~nate@98.45.169.16) |
2022-06-19 22:43:50 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
2022-06-19 22:52:45 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265) |
2022-06-19 22:57:29 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265) (Ping timeout: 255 seconds) |
2022-06-19 23:02:20 +0200 | sebastiandb | (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Ping timeout: 246 seconds) |
2022-06-19 23:08:00 +0200 | machinedgod | (~machinedg@66.244.246.252) |
2022-06-19 23:13:40 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-06-19 23:15:47 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-06-19 23:19:21 +0200 | ss- | (~ss-@187.83.249.216.dyn.smithville.net) (Quit: Client closed) |
2022-06-19 23:20:35 +0200 | machinedgod | (~machinedg@66.244.246.252) (Ping timeout: 256 seconds) |
2022-06-19 23:22:36 +0200 | machinedgod | (~machinedg@66.244.246.252) |
2022-06-19 23:24:22 +0200 | acidjnk | (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de) |
2022-06-19 23:25:51 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-06-19 23:34:53 +0200 | dwt_ | (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Ping timeout: 246 seconds) |
2022-06-19 23:35:16 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-06-19 23:35:53 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
2022-06-19 23:36:41 +0200 | dwt_ | (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) |
2022-06-19 23:39:18 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 276 seconds) |
2022-06-19 23:39:52 +0200 | pavonia | (~user@user/siracusa) |
2022-06-19 23:43:52 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-06-19 23:44:32 +0200 | stackdroid18 | (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
2022-06-19 23:44:57 +0200 | machinedgod | (~machinedg@66.244.246.252) (Ping timeout: 256 seconds) |
2022-06-19 23:46:54 +0200 | machinedgod | (~machinedg@66.244.246.252) |
2022-06-19 23:53:21 +0200 | sonny | (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca) |
2022-06-19 23:54:43 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-06-19 23:59:18 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |