2026/02/27

Newest at the top

2026-02-27 13:13:45 +0100xff0x(~xff0x@2405:6580:b080:900:3713:5717:d067:11de)
2026-02-27 13:08:51 +0100tales(~tales@149.167.1.176) (Ping timeout: 246 seconds)
2026-02-27 13:02:50 +0100kuribas(~user@2a02-1810-2825-6000-1a76-6371-2ebf-5f1e.ip6.access.telenet.be) kuribas
2026-02-27 13:00:29 +0100tales(~tales@149.167.1.176)
2026-02-27 12:53:54 +0100causal(~eric@50.46.156.145) causal
2026-02-27 12:43:29 +0100 <ski> np
2026-02-27 12:43:24 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2026-02-27 12:42:10 +0100tales(~tales@149.167.1.176) (Ping timeout: 248 seconds)
2026-02-27 12:41:25 +0100 <gentauro> ski: I think I got. Thx
2026-02-27 12:37:41 +0100tales(~tales@149.167.1.176)
2026-02-27 12:36:14 +0100 <ski> or the difference between `forall a. ([a] -> Int)' (caller picks `a', passes as input some list of `a's) and (the rank-2 type) `(forall a. [a]) -> Int' (callee picks which type `a' to use, caller must pass a polymorphic parameter .. which in this case means only the empty list, if we discount partial values)
2026-02-27 12:34:30 +0100 <ski> it's the same kind of difference as between `T -> (U -> V)' (`T' and `U' are input, `V' is output) and `(T -> U) -> V' (`T' is output, back to the callback, which produces the input `U', and `V' is output)
2026-02-27 12:32:49 +0100 <ski> gentauro : in any case, `Cxt => (... -> ...)' is very different from `(Cxt => ...) -> ...'. in the former, evidence for `Cxt' is provided by the caller/user/consumer of the value (of this type); while in the latter, evidence for `Cxt' is provided by the callee/implementor/producer of the value
2026-02-27 12:30:28 +0100 <ski> while, the second `foobar' is : caller picks two types `a' and `b', and passes two callbackss working on them. *caller* also will pick and provide instances `Foo a' and `Bar b' (which should then be easier, given that caller picked `a' and `b', presumably knows more about them)
2026-02-27 12:28:57 +0100 <ski> occurs in `FooBar'), so that by learning more about `a' and `b', `foobar' can manage to provide the `Foo' and `Bar' instances to the callbacks)
2026-02-27 12:28:51 +0100 <ski> (which seems to only make sense if either (a) those two callbacks will never be used; or (b) both `Foo' and `Bar' have a generic instance, working for all types; or (c) `FooBar' actually mentions `a' and `b', including being provided evidence for some instance(s) relating to `a' and `b', from which `Foo a' and `Bar b' can be derived; or (d) there's some GADT-matching going on (still asssuming `a' and `b'
2026-02-27 12:27:15 +0100tales(~tales@149.167.1.176) (Ping timeout: 245 seconds)
2026-02-27 12:27:04 +0100rainbyte(~rainbyte@186.22.19.214) rainbyte
2026-02-27 12:26:40 +0100rainbyte(~rainbyte@186.22.19.214) (Remote host closed the connection)
2026-02-27 12:24:02 +0100 <ski> the first `foobar' is : caller picks two types `a' and `b', and passes two callbacks working on them. callee will pick instances `Foo a' and `Bar b' for those caller-chosen types
2026-02-27 12:20:06 +0100APic(apic@apic.name) APic
2026-02-27 12:19:14 +0100APic(apic@apic.name) (Ping timeout: 248 seconds)
2026-02-27 12:18:58 +0100Enrico63(~Enrico63@host-80-104-109-187.retail.telecomitalia.it) (Ping timeout: 240 seconds)
2026-02-27 12:18:45 +0100 <lambdabot> 2
2026-02-27 12:18:44 +0100 <ski> > let foo :: (Ord a => a -> a -> Bool) -> (Num a => a -> a) -> (Integral a => a -> a -> a); foo f g x y = if f x y then g x else y `mod` x in foo (>=) negate 3 8
2026-02-27 12:18:11 +0100 <mauke> depends on whether you want to apply those callbacks at different types
2026-02-27 12:12:32 +0100misterfish(~misterfis@046044172198.static.ipv4.heldenvannu.net) misterfish
2026-02-27 12:10:25 +0100pabs3(~pabs3@user/pabs3) pabs3
2026-02-27 12:10:13 +0100kaskal(~kaskal@2a02:8388:1a8b:7d00:6863:87bc:381d:11fa) kaskal
2026-02-27 12:09:22 +0100 <gentauro> would it just to do: `foobar :: (Foo a, Bar b) => (a -> String) -> (b -> String) -> FooBar`?
2026-02-27 12:08:23 +0100 <gentauro> btw, is there a way to pass different context for functions parameters? Like: `foobar :: ((Foo a) => a -> String) -> ((Bar b) => b -> String) -> FooBar`
2026-02-27 12:07:55 +0100Pozyomka(~pyon@user/pyon) pyon
2026-02-27 12:03:20 +0100tremon(~tremon@83.80.159.219) tremon
2026-02-27 12:03:12 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-02-27 12:02:46 +0100 <gentauro> :)
2026-02-27 12:02:45 +0100 <gentauro> sm: when did I write that message?
2026-02-27 12:02:39 +0100 <yin> in a parallel universe the term could have evolved to latin vita minutio -> vitamin
2026-02-27 11:58:37 +0100machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod
2026-02-27 11:57:38 +0100weary-traveler(~user@user/user363627) user363627
2026-02-27 11:51:59 +0100pabs3(~pabs3@user/pabs3) (Ping timeout: 245 seconds)
2026-02-27 11:49:39 +0100qqq(~qqq@185.54.22.240)
2026-02-27 11:46:28 +0100cipherrot(~jez@user/petrichor) (Quit: ZNC 1.10.1 - https://znc.in)
2026-02-27 11:44:35 +0100Enrico63(~Enrico63@host-80-104-109-187.retail.telecomitalia.it) Enrico63
2026-02-27 11:34:28 +0100Googulator(~Googulato@team.broadbit.hu) (Ping timeout: 240 seconds)
2026-02-27 11:31:22 +0100Googulator69(~Googulato@team.broadbit.hu)
2026-02-27 11:27:04 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-02-27 11:26:47 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-02-27 11:21:06 +0100APic(apic@apic.name) APic
2026-02-27 11:19:36 +0100EPic_(apic@apic.name) (Quit: ffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuuu-)
2026-02-27 11:08:04 +0100tromp(~textual@2001:1c00:3487:1b00:685c:71cf:691f:928e)