2022/02/08

2022-02-08 00:00:23 +0100brian___(~brian@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:00:27 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2022-02-08 00:01:27 +0100brian___(~brian@c-73-68-74-41.hsd1.ma.comcast.net) ()
2022-02-08 00:01:30 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 00:01:31 +0100brian___(~brian@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:01:59 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 00:02:21 +0100brian___(~brian@c-73-68-74-41.hsd1.ma.comcast.net) (Client Quit)
2022-02-08 00:04:03 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 00:05:32 +0100 <lbseale> is it best practice to use `catches` to handle exceptions thrown from pure code?
2022-02-08 00:06:37 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.)
2022-02-08 00:06:46 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-02-08 00:07:33 +0100 <monochrom> Depends on what "handle" means. See my http://www.vex.net/~trebla/haskell/exception-tutorial.xhtml#catch
2022-02-08 00:07:39 +0100 <wavemode> at the top level of an application to provide some graceful cleanup, sure
2022-02-08 00:08:03 +0100 <lbseale> wavemode, that is what I have in mind
2022-02-08 00:08:18 +0100 <lbseale> monochrom, ty I'll read this
2022-02-08 00:08:23 +0100 <monochrom> In other languages they don't distinguish "clean up" and "plan B", both are called "handle". In Haskell, we do better.
2022-02-08 00:08:24 +0100 <wavemode> but exceptions in pure code usually indicate a bug that really needs to be fixed
2022-02-08 00:09:01 +0100 <monochrom> Oh, pure code. Laziness will confound you anyway.
2022-02-08 00:09:06 +0100 <ski> @wiki Error vs. Exception
2022-02-08 00:09:06 +0100 <lambdabot> https://wiki.haskell.org/Error_vs._Exception
2022-02-08 00:10:04 +0100 <monochrom> And yeah we also do better than lumping together "there is an error because I try to open a file, which is not my fault" and "there is an error because I try to divide by zero, which is my fault".
2022-02-08 00:11:12 +0100 <monochrom> This is why imperative programming is easier to learn. Or "easier" to learn. There are "fewer" concepts to learn.
2022-02-08 00:11:34 +0100ober(~oberblast@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:11:35 +0100 <dminuoso> Rembane: Gah, its a shame this doesnt work for non-Bounded like Integer
2022-02-08 00:11:58 +0100 <dminuoso> But I guess we can just do
2022-02-08 00:12:12 +0100 <dminuoso> % foldMap1_ = foldr1 ((<>) . f)
2022-02-08 00:12:12 +0100 <yahb> dminuoso:
2022-02-08 00:12:26 +0100 <dminuoso> % minMax :: (Ord a, Foldable f) => f a -> (a, a); minMax = coerce . foldMap1_ (Min &&& Max)
2022-02-08 00:12:27 +0100 <yahb> dminuoso: ; <interactive>:97:67: error:; * Couldn't match expected type: f a -> b1; with actual type: (Min b0, Max b0); * Possible cause: `foldMap1_' is applied to too many arguments; In the second argument of `(.)', namely `foldMap1_ (Min &&& Max)'; In the expression: coerce . foldMap1_ (Min &&& Max); In an equation for `minMax': minMax = coerce . foldMap1_ (Min &&& Max
2022-02-08 00:12:30 +0100 <dminuoso> Or some such
2022-02-08 00:13:14 +0100oberOber
2022-02-08 00:13:16 +0100 <dminuoso> Oh
2022-02-08 00:13:19 +0100Oberober
2022-02-08 00:13:29 +0100oberOberblast
2022-02-08 00:13:31 +0100Oberblastober
2022-02-08 00:13:43 +0100ski. o O ( `catchBind :: Exception e => IO a -> (e -> IO b) -> (a -> IO b) -> IO b' )
2022-02-08 00:15:00 +0100 <lbseale> ski, "In this article we use the term exception for expected but irregular situations at runtime" -- this is exactly what I mean by exception
2022-02-08 00:15:51 +0100k8yun_(~k8yun@24.244.29.102)
2022-02-08 00:16:15 +0100 <monochrom> I don't trust word mincing like those.
2022-02-08 00:16:37 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2022-02-08 00:16:46 +0100 <monochrom> I think "is this under my control or not?" is a better question.
2022-02-08 00:17:05 +0100 <ski> it can also be useful to distinguish faults, which are inadequacies of the implementation, such as out of memory, out of some other resource, integer overflow (depending)
2022-02-08 00:17:29 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-08 00:17:38 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-02-08 00:17:52 +0100boxscape_(~boxscape_@p4ff0b9d5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-02-08 00:19:17 +0100 <dminuoso> Mmm, actually we cant trivially do this with foldr1 shame
2022-02-08 00:19:25 +0100k8yun(~k8yun@24.244.29.102) (Ping timeout: 240 seconds)
2022-02-08 00:19:38 +0100 <ski> (btw, i don't really have any in principle qualms about using exceptions (not necessarily in the `Exception' sense) for "ordinary but uncommon" situations, like end of file, end of list, parse failure, &c.)
2022-02-08 00:20:30 +0100 <lbseale> I think this is a nice example from the wiki page: "First, consider a compiler like GHC. If you feed it a program that contains invalid syntax or inconsistent types, it emits a description of the problem. Such occurrences are considered to be exceptions."
2022-02-08 00:20:40 +0100 <wavemode> the usual qualm is performance
2022-02-08 00:20:57 +0100 <ski> (i know some people, in some other places, say "exceptions are for exceptional situations", but i don't really understand what that means (it sounds like a tautology). it appears they don't like using it for "end of sequence", e.g., but in my mind that doesn't follow)
2022-02-08 00:21:35 +0100 <dibblego> that saying came from java and it is hocus-pocus
2022-02-08 00:21:42 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-02-08 00:22:16 +0100 <ski> anyway, i agree that correctly indicating the source of the problem, (which tend to determine to a large degree how you handle it, what you can do about it, if anything) is a good idea
2022-02-08 00:22:21 +0100ober(~oberblast@c-73-68-74-41.hsd1.ma.comcast.net) (Quit: Leaving)
2022-02-08 00:23:46 +0100ober(~oberblast@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:23:52 +0100 <ski> lbseale : the "expected .. at runtime" vs. "mistakes in the running program" distinction there seem to me to be the most relevant part of that paragraph
2022-02-08 00:23:53 +0100 <Rembane> dminuoso: Yeah. I have too bad imagination to realize how it could work for Integer.
2022-02-08 00:24:04 +0100 <jackdk> dibblego: I am familiar with its origin but not its hocus-pocusness, and to date have found it a reasonable rule to follow. Can you elaborate?
2022-02-08 00:24:22 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds))
2022-02-08 00:24:31 +0100 <dibblego> jackdk: it starts with: what is an "exceptional situation"?
2022-02-08 00:24:35 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-02-08 00:24:49 +0100ober(~oberblast@c-73-68-74-41.hsd1.ma.comcast.net) (Client Quit)
2022-02-08 00:25:14 +0100 <EvanR> exceptions are so old that's probably entirely relative
2022-02-08 00:25:22 +0100 <dibblego> here are some candidate answers 1. the user needs to type A, B, or C; but they typed D 2. The file was not there 3. The network disappeared.
2022-02-08 00:25:39 +0100 <ski> "An exceptional situation is any situation in which you decide to signal the situation by using an exception." -- how about this definition ?
2022-02-08 00:25:45 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:25:49 +0100 <dibblego> ski: that's the standard conclusion
2022-02-08 00:25:58 +0100 <ski> yea. which makes it tautological
2022-02-08 00:26:13 +0100 <dminuoso> ski: Its a conflation of etymology, personal interpretation of a word and the word as a particular feature/set of semantics
2022-02-08 00:27:05 +0100 <int-e> . o O ( so loss of power (crashing the computer) is not an exceptional situation )
2022-02-08 00:27:10 +0100 <dibblego> "The file was not there" is a good answer, yes use exceptions, but the reason why is not: exceptional situation — rather, how I/O works on the machine. A hypothetical machine that didn't use IO for readFile (i.e. where readFile is inside the closed world), we wouldn't use exceptions
2022-02-08 00:27:26 +0100 <EvanR> it's funny that we use Either String as a sort of exception, which isn't using any special mechanism... it's totally ordinary code
2022-02-08 00:27:26 +0100 <monochrom> An exceptional situation is a situation that shouldn't have survived but it does because it shouldn't have been fit but it's fit. How about that? >:)
2022-02-08 00:27:41 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Client Quit)
2022-02-08 00:28:21 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:28:53 +0100 <monochrom> This is why I ask the question "is it under my control or not?"
2022-02-08 00:29:07 +0100 <EvanR> parse error, not under your control
2022-02-08 00:29:12 +0100 <EvanR> throw an exception?
2022-02-08 00:29:15 +0100ski. o O ( stoically-oriented-programming )
2022-02-08 00:29:23 +0100 <wavemode> java developers should have lobbied for sum types before espousing this "exceptional situations" dogma...
2022-02-08 00:29:36 +0100 <dibblego> I did, in 2005
2022-02-08 00:29:42 +0100 <dminuoso> Maybe we should avoid "exceptional" on the basis that its suggestive. Phrases like "irrecoverable situation" or "unexpected condition" seem more precise
2022-02-08 00:29:43 +0100 <dibblego> are we there yet?
2022-02-08 00:30:04 +0100 <dminuoso> Once you avoid that silly word "exception" in there, you stop making any associative or anti-associative combination with "exception-the-language-feature"
2022-02-08 00:30:23 +0100 <dibblego> not precise enough — there is a reason we use exceptions for "the file is not there" versus, "call head on empty list [ignoring actual head["
2022-02-08 00:30:23 +0100ski. o O ( "The modern Stoic's decision making algorithm" <https://i.imgur.com/67pMoOk.jpg">67pMoOk.jpg> )
2022-02-08 00:30:33 +0100 <dminuoso> And you begin thinking of "exception-the-language-feature" more as non-local goto/control transfer
2022-02-08 00:30:36 +0100 <lbseale> lol ski
2022-02-08 00:30:53 +0100 <dolio> It means there are tradeoffs when implementing continuations, and some ways are unsuitable for being used as typical control flow for your program if you care about your program working well.
2022-02-08 00:30:59 +0100 <dibblego> anyway, didn't mean to start a rant — I have code to write
2022-02-08 00:32:01 +0100 <dolio> So you should only use them in uncommon cases where your program is blowing up, and you don't really care about being really efficient.
2022-02-08 00:32:16 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-02-08 00:32:30 +0100 <monochrom> Parse errors are why Alternative is an exception system.
2022-02-08 00:32:32 +0100oberbri
2022-02-08 00:32:41 +0100 <ski> there's this "try vs. check" aspect of I/O operations. (race conditions)
2022-02-08 00:33:27 +0100Feuermagier(~Feuermagi@user/feuermagier) (Quit: Leaving)
2022-02-08 00:33:34 +0100 <int-e> https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use ?
2022-02-08 00:34:18 +0100 <ski> yes
2022-02-08 00:34:42 +0100ski. o O ( "Parse, don't validate" in 2019-11-05 at <https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/> )
2022-02-08 00:34:52 +0100bri(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Quit: Leaving)
2022-02-08 00:35:45 +0100mvr_(uid36976@id-36976.tinside.irccloud.com)
2022-02-08 00:35:49 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-08 00:35:54 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:36:39 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net) ()
2022-02-08 00:36:49 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 00:36:53 +0100foul_owl(~kerry@23.82.194.143) (Ping timeout: 256 seconds)
2022-02-08 00:38:10 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-02-08 00:38:18 +0100 <Axman6> we should have that in @where
2022-02-08 00:39:02 +0100 <int-e> @help where+
2022-02-08 00:39:03 +0100 <lambdabot> where+ <key> <elem>. Define an association
2022-02-08 00:40:39 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 00:40:47 +0100 <Axman6> @where+ pdv "Parse, don't validate" - https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
2022-02-08 00:40:47 +0100 <lambdabot> It is forever etched in my memory.
2022-02-08 00:40:52 +0100 <Axman6> @where pdv
2022-02-08 00:40:52 +0100 <lambdabot> "Parse, don't validate" - https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
2022-02-08 00:43:01 +0100bontaq`(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds)
2022-02-08 00:44:33 +0100rtsn(~nstr@user/rtsn) (Ping timeout: 250 seconds)
2022-02-08 00:44:54 +0100 <monochrom> dibblego: I wonder if we are in agreement and there is at most an apparent disagreement. head has two sides, the implementer side vs the user side. The implementer of head cannot force the user to never say "head []", this is not under the implementer's control, so throwing is in order, what else could one do? The user of head, though, simply shouldn't let themselves use "head []", even if the behaviour is well-understood.
2022-02-08 00:45:33 +0100 <monochrom> (Now enter dependent typing. It can rule out "head []" statically. Nothing to worry about!)
2022-02-08 00:45:37 +0100 <dibblego> monochrom: I agree
2022-02-08 00:46:29 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds)
2022-02-08 00:46:31 +0100rtsn(~nstr@h-155-4-221-229.NA.cust.bahnhof.se)
2022-02-08 00:47:17 +0100 <dibblego> \case [] -> throw "no!"; (h:_) -> h -- we tend to agree not to do this because it is "not exceptional", where "not exceptional" has an actual meaning that diverges considerably from "not exceptional"
2022-02-08 00:47:29 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-08 00:47:41 +0100 <dibblego> the hocus-pocus from java never gets to an actual meaning
2022-02-08 00:49:21 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-08 00:52:42 +0100foul_owl(~kerry@192.145.116.254)
2022-02-08 00:54:26 +0100 <ski> (s/\(h:_\)/h:_/)
2022-02-08 00:54:51 +0100 <safinaskar> does somebody want to win $20 000 for proving particular hypotesis on SKI calculus from Stephen Wolfram? https://writings.stephenwolfram.com/2021/06/1920-2020-and-a-20000-prize-announcing-the-s-combinato…
2022-02-08 00:55:07 +0100 <safinaskar> ski: i think you will be especially interested (looking at your nick)
2022-02-08 00:55:52 +0100 <ski> hm, announcing a reward tends to make me disinterested
2022-02-08 00:59:11 +0100 <Axman6> it'd be enough to show you can define K and I in terms of S right?
2022-02-08 00:59:14 +0100 <EvanR> this looks like son of "a new kind of science"
2022-02-08 00:59:19 +0100 <Axman6> or to show that you can't
2022-02-08 00:59:32 +0100 <dolio> It's pretty obvious that you can't define K.
2022-02-08 01:00:06 +0100 <dminuoso> ski: Out of curiosity, why is that?
2022-02-08 01:00:30 +0100 <dminuoso> Because it could be an indicator of non-triviality, or because you detest the monetary offering?
2022-02-08 01:00:33 +0100 <dolio> That's why it has to change the entire idea of how the 'computation' works.
2022-02-08 01:00:37 +0100 <dminuoso> Or both?
2022-02-08 01:01:03 +0100 <ski> i'm not too sure. it's an observation. i think it might have to do with intrinsic vs. extrinsic motivation
2022-02-08 01:01:12 +0100 <EvanR> sad that wolfram has to pay to find out this question about S combinators, while fermilab gets billions to build a neutrino cannon to shoot under america to answer questions about neutrinos
2022-02-08 01:01:18 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-08 01:01:35 +0100img(~img@user/img)
2022-02-08 01:02:21 +0100 <EvanR> fickle market
2022-02-08 01:04:03 +0100 <monochrom> Would you prefer an S cannon that shoots a lot of S's? >:)
2022-02-08 01:04:21 +0100n3rdy1(~n3rdy1@69-222-188-145.lightspeed.sntcca.sbcglobal.net)
2022-02-08 01:06:13 +0100motherfsck(~motherfsc@user/motherfsck)
2022-02-08 01:06:28 +0100 <EvanR> monochrom, the implementor of head can also define the type as (a, [a]) xD
2022-02-08 01:07:15 +0100 <EvanR> or do we have 3 parties, the implementor, the user, and some mission control who gave the implementor their task and can't be argued with
2022-02-08 01:07:49 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-08 01:07:51 +0100 <EvanR> (re: needing dependent types)
2022-02-08 01:07:51 +0100 <wavemode> the implementor, the user, and society
2022-02-08 01:08:44 +0100 <EvanR> if only the implementor were captain kirk who hangs up on mission control and does it his own way!
2022-02-08 01:09:28 +0100 <dminuoso> ski: Mmm, that's still curious. Even if you dislike extrinsic motivation, you can do it from your own accord without a care of the reward.
2022-02-08 01:09:52 +0100tchakka(~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net)
2022-02-08 01:11:29 +0100 <EvanR> The best case as far as I am concerned is specific Wolfram Language code that implements the solution.
2022-02-08 01:11:34 +0100 <EvanR> -- Wolfram
2022-02-08 01:11:48 +0100kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net) (Read error: Connection reset by peer)
2022-02-08 01:11:57 +0100 <EvanR> you don't say?
2022-02-08 01:14:56 +0100taylorswift2018(~taylorswi@115-188-158-33-fibre.sparkbb.co.nz) (Quit: Leaving)
2022-02-08 01:23:33 +0100mmhat(~mmh@55d4d31f.access.ecotel.net) (Quit: WeeChat 3.4)
2022-02-08 01:24:10 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-02-08 01:24:48 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-08 01:24:48 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-08 01:24:48 +0100wroathe(~wroathe@user/wroathe)
2022-02-08 01:26:12 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-08 01:28:34 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2022-02-08 01:30:06 +0100 <monochrom> EvanR: Ideally, group :: [a] -> [NonEmpty a], then I don't have to use "map head (group xs)".
2022-02-08 01:30:39 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-08 01:31:27 +0100 <EvanR> amen
2022-02-08 01:32:11 +0100 <monochrom> Another one: "fmap read (some digit)" could be better with refinement types or dependent types.
2022-02-08 01:33:12 +0100 <monochrom> Err forgot an "Eq a" constraint!
2022-02-08 01:35:29 +0100 <EvanR> it's ok say this is set theory
2022-02-08 01:36:13 +0100 <monochrom> Ah but Eq is a bit more than equality. It's decidable equality. Usually...
2022-02-08 01:36:22 +0100 <EvanR> yeah
2022-02-08 01:38:03 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds)
2022-02-08 01:38:07 +0100 <EvanR> > pi == (4 * atan 1 :: CReal) -- B)
2022-02-08 01:38:09 +0100 <lambdabot> True
2022-02-08 01:39:18 +0100k8yun_(~k8yun@24.244.29.102) (Ping timeout: 260 seconds)
2022-02-08 01:39:26 +0100 <monochrom> Someone ought to troll us with an epic continued-fraction approximation of pi so epic that CReal's == can't tell the difference :)
2022-02-08 01:39:56 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
2022-02-08 01:40:42 +0100 <EvanR> it would also say True due to how Eq works
2022-02-08 01:41:02 +0100 <dolio> > pi == (pi - 1e-50 :: CReal)
2022-02-08 01:41:04 +0100 <lambdabot> True
2022-02-08 01:41:08 +0100 <EvanR> with the classic advice "just use deltas"
2022-02-08 01:42:06 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-02-08 01:42:33 +0100 <EvanR> when they really are equal it returns True, good enough for government work
2022-02-08 01:44:18 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-02-08 01:45:09 +0100 <ephemient> https://xkcd.com/217/
2022-02-08 01:45:16 +0100 <monochrom> "Truth doesn't lie." :)
2022-02-08 01:46:24 +0100vysn(~vysn@user/vysn)
2022-02-08 01:49:20 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2022-02-08 01:51:26 +0100cjb(~cjb@user/cjb)
2022-02-08 01:54:56 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net)
2022-02-08 01:55:57 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es) (Remote host closed the connection)
2022-02-08 01:56:40 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net) (Remote host closed the connection)
2022-02-08 01:57:10 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-08 01:57:13 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:1f95:fc24:559b:d565)
2022-02-08 01:57:43 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-02-08 02:03:34 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2022-02-08 02:03:50 +0100 <safinaskar> monochrom: cool phrase :)
2022-02-08 02:04:24 +0100 <safinaskar> monochrom: here is another one: "true means agrees with a model"
2022-02-08 02:05:28 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-08 02:06:25 +0100 <dibblego> monochrom: https://hackage.haskell.org/package/digit-0.11/docs/Data-Digit-Decimal.html#v:parseDecimal
2022-02-08 02:09:01 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es)
2022-02-08 02:10:57 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 256 seconds)
2022-02-08 02:11:30 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2022-02-08 02:12:37 +0100 <safinaskar> monochrom: catMaybes $ map Data.Maybe.listToMaybe $ group xs
2022-02-08 02:13:05 +0100 <safinaskar> % catMaybes $ map Data.Maybe.listToMaybe $ group [2, 2, 3, 3, 3]
2022-02-08 02:13:06 +0100 <yahb> safinaskar: ; <interactive>:120:13: error:; Ambiguous occurrence `map'; It could refer to; either `Data.List.NonEmpty.map', imported from `Data.List.NonEmpty'; or `Prelude.map', imported from `Prelude' (and originally defined in `GHC.Base'); <interactive>:120:42: error:; Ambiguous occurrence `group'; It could refer to; either `Data.List.NonEmpty.group', imported from `Data.Lis
2022-02-08 02:13:13 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-02-08 02:13:29 +0100 <safinaskar> % catMaybes $ Prelude.map Data.Maybe.listToMaybe $ group [2, 2, 3, 3, 3]
2022-02-08 02:13:29 +0100 <yahb> safinaskar: ; <interactive>:121:50: error:; Ambiguous occurrence `group'; It could refer to; either `Data.List.NonEmpty.group', imported from `Data.List.NonEmpty'; or `Data.List.group', imported from `Data.List' (and originally defined in `base-4.15.0.0:Data.OldList')
2022-02-08 02:13:33 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:1f95:fc24:559b:d565) (Quit: Leaving)
2022-02-08 02:13:49 +0100 <geekosaur> oy
2022-02-08 02:13:51 +0100 <safinaskar> % catMaybes $ Prelude.map Data.Maybe.listToMaybe $ Data.List.group [2, 2, 3, 3, 3]
2022-02-08 02:13:51 +0100 <yahb> safinaskar: [2,3]
2022-02-08 02:14:16 +0100 <geekosaur> now, does that actually dpo what you want?
2022-02-08 02:14:26 +0100 <geekosaur> % catMaybes $ Prelude.map Data.Maybe.listToMaybe $ Data.List.group [2, 2, 3, 3, 3, 2]
2022-02-08 02:14:26 +0100 <yahb> geekosaur: [2,3,2]
2022-02-08 02:16:27 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-02-08 02:17:07 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-08 02:20:20 +0100alo(~alo@user/alo) (Ping timeout: 250 seconds)
2022-02-08 02:23:08 +0100safinaskar(~quassel@109-252-91-116.nat.spd-mgts.ru) ()
2022-02-08 02:24:00 +0100ProfSimm(~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds)
2022-02-08 02:24:44 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-08 02:26:35 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-08 02:27:27 +0100 <Inst[m]> can i ask about tuples in haskell?
2022-02-08 02:28:58 +0100 <Inst> are there standard toolsets to manipulate tuples? they look like really interesting data structures, but they seem boring in Haskell
2022-02-08 02:29:48 +0100 <EvanR> XY problem sense tingling
2022-02-08 02:30:21 +0100 <EvanR> tuples are pretty boring
2022-02-08 02:30:33 +0100 <Axman6> They';re just the canonical product type, like Either is the canonical sum type. )nothing particularly interesting about them
2022-02-08 02:30:58 +0100 <EvanR> > swap ('a',1)
2022-02-08 02:30:59 +0100 <lambdabot> (1,'a')
2022-02-08 02:31:27 +0100 <dibblego> > over _1 (+1) (1, 'a')
2022-02-08 02:31:28 +0100 <lambdabot> (2,'a')
2022-02-08 02:32:04 +0100 <Inst> ah okay, so there's ways to deal with tuples beyond fst snd defined in libs
2022-02-08 02:32:15 +0100 <Axman6> % (1, Left 7) & _2 . _Left %~ show
2022-02-08 02:32:15 +0100 <yahb> Axman6: (1,Left "7")
2022-02-08 02:32:26 +0100 <Inst> thanks for the insight that they're just the canonical product type
2022-02-08 02:32:32 +0100 <Axman6> it's one of the usual examples of why lens is useful
2022-02-08 02:32:44 +0100 <Axman6> % :t _1
2022-02-08 02:32:44 +0100 <yahb> Axman6: (Field1 s t a b, Functor f) => (a -> f b) -> s -> f t
2022-02-08 02:33:01 +0100 <Axman6> % :info Field1
2022-02-08 02:33:02 +0100 <yahb> Axman6: type Field1 :: * -> * -> * -> * -> Constraint; class Field1 s t a b | s -> a, t -> b, s b -> t, t a -> s where; _1 :: Lens s t a b; default _1 :: (GHC.Generics.Generic s, GHC.Generics.Generic t, Control.Lens.Tuple.GIxed Control.Lens.Tuple.N0 (GHC.Generics.Rep s) (GHC.Generics.Rep t) a b) => Lens s t a b; -- Defined in `Control.Lens.Tuple'; instance [safe] Field1 (Identity a) (Identity b) a b --
2022-02-08 02:34:06 +0100 <Axman6> https://hackage.haskell.org/package/lens-5.1/docs/Control-Lens-Tuple.html
2022-02-08 02:35:13 +0100 <EvanR> lens or define a function (a -> b) -> (a,c) -> (b,c)
2022-02-08 02:35:14 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 02:35:40 +0100pavonia(~user@user/siracusa)
2022-02-08 02:36:20 +0100 <Axman6> trying to decide if an instance for Field1 for NonEmpty is a dumb idea or not
2022-02-08 02:36:43 +0100 <EvanR> makes sense to me xD
2022-02-08 02:38:35 +0100 <Inst> also, haskell report preface is hilarious
2022-02-08 02:38:47 +0100 <Inst> "2. It should be completely described via the publication of a formal syntax and semantics"
2022-02-08 02:39:05 +0100 <Inst> "Haskell 2010 is the first revision to be created in this way, and new revisions are expected once per year"
2022-02-08 02:39:44 +0100 <EvanR> good old haskell O' ten
2022-02-08 02:40:20 +0100Null_A(~null_a@2601:645:8700:2290:6473:b18:2fbd:1123)
2022-02-08 02:42:15 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2022-02-08 02:44:21 +0100 <jackdk> On the plus side, if a new report dropped tomorrow, there's still a good chance we could call it "Haskell 2020"...
2022-02-08 02:44:29 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Quit: Leaving)
2022-02-08 02:44:43 +0100 <jackdk> Axman6: do it for `Identity` too
2022-02-08 02:45:03 +0100 <Axman6> the :info above says that's aready there
2022-02-08 02:45:31 +0100 <jackdk> Axman6: even better
2022-02-08 02:45:59 +0100 <Axman6> the instance should just be coerce
2022-02-08 02:46:42 +0100 <Axman6> Looking at the lans changelog, it kinda blows my mind that it so recently "Drop[ed] support for GHC 7.10 and older."
2022-02-08 02:47:13 +0100 <Axman6> pretty sure I was using 7.6 when I started learning Haskell, and 7.10 wasn't too long after that
2022-02-08 02:49:49 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-08 02:52:32 +0100asivitz(uid178348@id-178348.tinside.irccloud.com)
2022-02-08 02:53:47 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-08 02:55:34 +0100deadmarshal(~deadmarsh@95.38.117.237)
2022-02-08 02:55:49 +0100n3rdy1(~n3rdy1@69-222-188-145.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-02-08 02:59:37 +0100cjb(~cjb@user/cjb)
2022-02-08 02:59:45 +0100deadmarshal(~deadmarsh@95.38.117.237) (Ping timeout: 250 seconds)
2022-02-08 03:00:38 +0100Null_A(~null_a@2601:645:8700:2290:6473:b18:2fbd:1123) (Remote host closed the connection)
2022-02-08 03:00:55 +0100 <monochrom> @quote monochrom flies.*macro
2022-02-08 03:00:55 +0100 <lambdabot> monochrom says: Time flies like an arrow. Fruit flies like a banana. Syntax rules like a macro.
2022-02-08 03:02:31 +0100caasih(sid13241@ilkley.irccloud.com) (Ping timeout: 256 seconds)
2022-02-08 03:02:33 +0100alanz(sid110616@uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2022-02-08 03:02:39 +0100gmc(sid58314@ilkley.irccloud.com) (Read error: Connection reset by peer)
2022-02-08 03:02:40 +0100caasih(sid13241@id-13241.ilkley.irccloud.com)
2022-02-08 03:02:48 +0100alanz(sid110616@id-110616.uxbridge.irccloud.com)
2022-02-08 03:02:48 +0100gmc(sid58314@id-58314.ilkley.irccloud.com)
2022-02-08 03:06:41 +0100mvk(~mvk@2607:fea8:5cdc:bf00::80f1) (Ping timeout: 250 seconds)
2022-02-08 03:07:01 +0100xff0x(~xff0x@2001:1a81:532d:cf00:6935:8bd3:eb0:937d) (Ping timeout: 240 seconds)
2022-02-08 03:07:35 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-08 03:07:35 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-08 03:07:35 +0100wroathe(~wroathe@user/wroathe)
2022-02-08 03:07:47 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-08 03:09:15 +0100xff0x(~xff0x@2001:1a81:533f:ea00:5f96:9e03:4e30:341d)
2022-02-08 03:09:26 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2022-02-08 03:12:09 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2022-02-08 03:12:23 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-08 03:14:57 +0100califax-(~califax@user/califx)
2022-02-08 03:15:43 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2022-02-08 03:15:57 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-08 03:19:14 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-02-08 03:19:21 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-02-08 03:19:21 +0100califax-califax
2022-02-08 03:19:47 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-08 03:22:44 +0100dajoer(~david@user/gvx)
2022-02-08 03:23:29 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 256 seconds)
2022-02-08 03:25:45 +0100lemonsni-(~lemonsnic@86.4.248.115)
2022-02-08 03:25:51 +0100nunggu(~q@user/nunggu) (Ping timeout: 276 seconds)
2022-02-08 03:25:51 +0100tiferrei(~tiferrei@user/tiferrei) (Ping timeout: 276 seconds)
2022-02-08 03:26:00 +0100razetime(~quassel@49.207.209.26)
2022-02-08 03:26:19 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-08 03:26:19 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection)
2022-02-08 03:26:38 +0100Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Ping timeout: 268 seconds)
2022-02-08 03:27:06 +0100nunggu(~q@user/nunggu)
2022-02-08 03:28:04 +0100tiferrei(~tiferrei@user/tiferrei)
2022-02-08 03:29:29 +0100Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
2022-02-08 03:30:19 +0100justAGuest(~justAGues@136.206.5.117)
2022-02-08 03:31:18 +0100zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
2022-02-08 03:31:18 +0100zfnmxt(~zfnmxtzfn@user/zfnmxt)
2022-02-08 03:31:59 +0100Null_A(~null_a@2601:645:8700:2290:6473:b18:2fbd:1123)
2022-02-08 03:34:38 +0100justAGuest(~justAGues@136.206.5.117) (Client Quit)
2022-02-08 03:49:15 +0100nunggu(~q@user/nunggu) (Ping timeout: 276 seconds)
2022-02-08 03:51:14 +0100nunggu(~q@user/nunggu)
2022-02-08 03:55:58 +0100mbuf(~Shakthi@122.178.191.223)
2022-02-08 03:57:48 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca)
2022-02-08 03:59:27 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca) (Remote host closed the connection)
2022-02-08 03:59:45 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca)
2022-02-08 04:00:38 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-08 04:02:15 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 04:02:48 +0100Null_A(~null_a@2601:645:8700:2290:6473:b18:2fbd:1123) (Remote host closed the connection)
2022-02-08 04:09:32 +0100sshine`sshine
2022-02-08 04:15:41 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2022-02-08 04:15:58 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-02-08 04:22:14 +0100dolio(~dolio@130.44.130.54) (Read error: Connection reset by peer)
2022-02-08 04:22:30 +0100dolio(~dolio@130.44.130.54)
2022-02-08 04:23:06 +0100foul_owl(~kerry@192.145.116.254) (Ping timeout: 260 seconds)
2022-02-08 04:27:11 +0100dolio(~dolio@130.44.130.54) (Client Quit)
2022-02-08 04:28:09 +0100mvr_(uid36976@id-36976.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-08 04:28:10 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-08 04:33:30 +0100dolio(~dolio@130.44.130.54)
2022-02-08 04:38:17 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2022-02-08 04:39:02 +0100m5zs7k(aquares@web10.mydevil.net)
2022-02-08 04:40:40 +0100foul_owl(~kerry@94.140.8.224)
2022-02-08 04:42:16 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-02-08 04:43:29 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-02-08 04:43:32 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-08 04:44:47 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-02-08 04:44:47 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-02-08 04:44:47 +0100finn_elijaFinnElija
2022-02-08 04:48:10 +0100td_(~td@muedsl-82-207-238-072.citykom.de) (Ping timeout: 256 seconds)
2022-02-08 04:50:01 +0100td_(~td@muedsl-82-207-238-149.citykom.de)
2022-02-08 04:50:38 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-02-08 04:51:54 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-08 04:55:05 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca)
2022-02-08 05:00:23 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
2022-02-08 05:04:08 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-08 05:04:20 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2022-02-08 05:06:03 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-08 05:11:06 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 05:15:58 +0100unyu(~pyon@user/pyon) (Quit: WeeChat 3.4)
2022-02-08 05:17:44 +0100unyu(~pyon@user/pyon)
2022-02-08 05:20:33 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 05:21:14 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-08 05:21:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-08 05:21:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-08 05:21:51 +0100wroathe(~wroathe@user/wroathe)
2022-02-08 05:22:03 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 05:25:09 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-08 05:25:19 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 05:25:54 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 05:30:37 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-08 05:42:02 +0100yuvi(~uv125@192.54.96.185)
2022-02-08 05:43:20 +0100mvk(~mvk@2607:fea8:5cdc:bf00::80f1)
2022-02-08 05:45:40 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-02-08 05:48:49 +0100 <yuvi> hi! im new here
2022-02-08 05:49:17 +0100 <Axman6> Hello!
2022-02-08 05:49:50 +0100Chai-T-Rex(~ChaiTRex@user/chaitrex) (Quit: Chai-T-Rex)
2022-02-08 05:50:24 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-02-08 05:52:35 +0100 <Axman6> yuvi: was there anything we can help you with or you just here to hang with the cool kids
2022-02-08 05:55:02 +0100chenqisu1(~chenqisu1@183.217.200.249) (Ping timeout: 260 seconds)
2022-02-08 05:55:19 +0100tommd(~tommd@67-42-147-226.ptld.qwest.net)
2022-02-08 05:55:25 +0100 <yuvi> Axman6: haha both. im stuck on my programming assignment and was curious what irc is like. ill tell it to you
2022-02-08 05:56:42 +0100 <yuvi> so i need to implement my own version of isPrefixOf from Data.List. but the catch is i can only use foldr and map, and recursion is banned
2022-02-08 05:57:08 +0100 <yuvi> the type is startsWith :: String -> String -> Bool
2022-02-08 05:57:10 +0100 <Axman6> go ahead, thought bare in mind that while we're happyu to help you find the solution, we're not going to give it to you (and there is a pretty high chance that your lecturer is in this channel)
2022-02-08 05:57:23 +0100 <yuvi> dont worry i understand :-)
2022-02-08 05:57:24 +0100 <Axman6> That's a fun one!
2022-02-08 05:57:53 +0100 <Axman6> So what have you tried?
2022-02-08 05:58:10 +0100 <Axman6> and what's your understanding of what foldr does?
2022-02-08 05:58:30 +0100little_mac(~little_ma@2601:410:4300:3ce0:c1b4:4e62:c0e4:304a)
2022-02-08 05:59:02 +0100 <yuvi> ive been given a hint that in order to do this without recursion, foldr must itself return a function, which is hard for me to conceptualize
2022-02-08 05:59:21 +0100phma(phma@2001:5b0:215a:adf8:f4aa:f392:c0b4:ceef) (Read error: Connection reset by peer)
2022-02-08 05:59:27 +0100 <yuvi> my guess for the structure of the function is startsWith s1 s2 = (foldr (???) ??? s1) s2
2022-02-08 05:59:43 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-02-08 06:00:06 +0100 <yuvi> my understanding of foldr is that it is a way to reduce a list to a single value using an accumulator. im not sure how a fold can return a function
2022-02-08 06:00:47 +0100phma(phma@2001:5b0:211f:7e68:f18f:96de:b488:61b7)
2022-02-08 06:01:05 +0100unyu(~pyon@user/pyon) (Quit: brb)
2022-02-08 06:03:09 +0100nunggu(~q@user/nunggu) (Ping timeout: 276 seconds)
2022-02-08 06:03:16 +0100 <dibblego> functions are values
2022-02-08 06:04:47 +0100nunggu(~q@user/nunggu)
2022-02-08 06:05:04 +0100 <monochrom> No, the "redcuse by accumulator" model is utterly useless for this.
2022-02-08 06:05:13 +0100haskell_(~haskell@172.56.42.14)
2022-02-08 06:05:25 +0100 <monochrom> That simple model is OK for simple examples like "1+(2+(3+...", sure.
2022-02-08 06:05:27 +0100 <dibblego> also that, but "single value" is fine, and since functions are values, "single function" is also fine
2022-02-08 06:05:31 +0100 <monochrom> But not this advanced question.
2022-02-08 06:05:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-08 06:07:20 +0100haskell_(~haskell@172.56.42.14) (Remote host closed the connection)
2022-02-08 06:08:24 +0100 <Inst> yuvi: just do it with recursion anyways
2022-02-08 06:08:34 +0100 <Inst> then try to think of how you can change it to a foldr
2022-02-08 06:08:45 +0100 <Inst> since foldr is basically just automated recursion
2022-02-08 06:10:15 +0100 <monochrom> Yes I write my own recursion then see how the code fits foldr's recursion.
2022-02-08 06:11:16 +0100 <ski> hm .. can you use pattern-matching (on empty list and non-empty list) ?
2022-02-08 06:11:26 +0100 <yuvi> ok. i did have to do it with recursion for a previous problem already. for that i compared the two heads of s1 and s2 and "anded" them with startsWith on the tails
2022-02-08 06:11:36 +0100 <yuvi> yes pattern matching is permitted
2022-02-08 06:11:43 +0100 <ski> that makes it a lot easier
2022-02-08 06:11:52 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-08 06:11:52 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-08 06:11:52 +0100wroathe(~wroathe@user/wroathe)
2022-02-08 06:12:51 +0100 <yuvi> one problem im thinking of when converting from recursion to foldr is how do i save the boolean value and iterate over the list at the same time. i cant figure out what the type of the accumulator should be
2022-02-08 06:12:58 +0100 <ski> (if you could only traverse the lists via `foldr' and `map', then i wouldn't class this as a beginner problem)
2022-02-08 06:13:27 +0100 <dibblego> another intermediate step: write this with foldr :: [a] -> Maybe (a, [a])
2022-02-08 06:13:28 +0100 <yuvi> i see. this is my first course in haskell and its week 2 LMAO
2022-02-08 06:13:46 +0100 <dibblego> we do a similar exercise on day 1 of fp-course
2022-02-08 06:14:07 +0100 <dibblego> with some hand-holding and a proper explanation of foldr
2022-02-08 06:15:25 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds)
2022-02-08 06:15:42 +0100 <Axman6> > foldr f z [1,2,3] :: Expr
2022-02-08 06:15:44 +0100 <lambdabot> f 1 (f 2 (f 3 z))
2022-02-08 06:16:39 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-08 06:17:30 +0100 <Axman6> yuvi: just as a heads up, this problem is not exactly trivial, and I would probably get it wrong on my first try, so don't get lulled into a sense of simplicity
2022-02-08 06:18:08 +0100 <Axman6> one of the first difficulties is deciding which od the lists you want to recurse over, the needle or the haystack
2022-02-08 06:18:09 +0100 <monochrom> https://ertes.eu/tutorial/foldr.html#foldr shows a useful method.
2022-02-08 06:18:44 +0100 <Inst> wait, is isPrefixOf defined via foldr?
2022-02-08 06:18:53 +0100 <dibblego> dunno is it?
2022-02-08 06:18:55 +0100 <yuvi> Inst: it is defined using recursion
2022-02-08 06:19:15 +0100 <monochrom> In your case, you should think in terms of "isPrefixOf [] = \??? -> ???", "isPrefixOf (x:xs) = \y -> case y of ...???"
2022-02-08 06:19:19 +0100 <Axman6> but is can be defined using foldr
2022-02-08 06:19:20 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-08 06:19:57 +0100 <Axman6> monochrom++
2022-02-08 06:20:39 +0100 <monochrom> To be sure, this is an advanced question (on ground that it requires more abstract thinking, less intuition). I didn't know it could be done until "Hint: return a function".
2022-02-08 06:20:56 +0100 <Inst> btw yuvi: not sure if this is a tip or if i've just being dense
2022-02-08 06:21:00 +0100 <Inst> are you familiar with lambdas?
2022-02-08 06:21:12 +0100 <yuvi> Inst: yes
2022-02-08 06:21:18 +0100 <monochrom> But I have done an even more unbelievable one such as "foldl is a foldr too" so meh.
2022-02-08 06:22:45 +0100 <Inst> also, is it a bad idea to post a GHC feature request asking for =@ to get added to Data.Foldables as a synonym for elem?
2022-02-08 06:23:44 +0100 <ski> why not ⌜(∈)⌝, then ?
2022-02-08 06:24:49 +0100 <monochrom> It's a bad idea because it doesn't belong to GHC feature request. It's a library feature request.
2022-02-08 06:24:52 +0100 <Inst> i see
2022-02-08 06:25:00 +0100 <Inst> is it reasonable to look for a library feature request and post it?
2022-02-08 06:25:16 +0100 <monochrom> GHC feature request would be "may I have predicate subtypes" for example.
2022-02-08 06:25:40 +0100 <monochrom> Or "may I have COBOL syntax"
2022-02-08 06:27:11 +0100 <Inst> also, just curious, i like yuvi's question
2022-02-08 06:27:17 +0100 <Inst> i don't want to solve it for her/him
2022-02-08 06:27:33 +0100 <Inst> if lambdas are allowed, it's possible to do something really degenerate
2022-02-08 06:27:57 +0100tommd(~tommd@67-42-147-226.ptld.qwest.net) (Ping timeout: 250 seconds)
2022-02-08 06:28:14 +0100 <monochrom> Ugh allowing lambdas is not degenerate.
2022-02-08 06:28:28 +0100 <monochrom> It is disallowing lambda that's degenerate. Look at COBOL for example.
2022-02-08 06:28:50 +0100 <monochrom> 1st-order-only or even 0th-order-only.
2022-02-08 06:29:25 +0100 <monochrom> In the same sense that, for example, 0-dimension vector space is a degenerate vector space.
2022-02-08 06:30:33 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr)
2022-02-08 06:30:45 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-02-08 06:31:11 +0100k8yun_(~k8yun@24.244.29.99)
2022-02-08 06:34:24 +0100 <Inst> it should be possible to use the accumulator to store information, and use a lambda that takes \x y to analyze the information on the accumulator
2022-02-08 06:34:40 +0100skinever really understood why some people want to exclude such degeneracy cases from falling under the definition
2022-02-08 06:34:42 +0100 <Inst> it's just really ugly though
2022-02-08 06:35:10 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca) (Ping timeout: 260 seconds)
2022-02-08 06:35:53 +0100 <EvanR> that's why they're called turing tarpits and not turing um taj mahals
2022-02-08 06:35:59 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 250 seconds)
2022-02-08 06:37:23 +0100haskell_(~haskell@172.56.42.64)
2022-02-08 06:37:47 +0100haskell_(~haskell@172.56.42.64) (Remote host closed the connection)
2022-02-08 06:38:54 +0100nunggu(~q@user/nunggu) (Ping timeout: 276 seconds)
2022-02-08 06:40:19 +0100nunggu(~q@user/nunggu)
2022-02-08 06:43:28 +0100 <Inst> can also consider nested lambdas
2022-02-08 06:51:23 +0100nunggu(~q@user/nunggu) (Remote host closed the connection)
2022-02-08 06:51:42 +0100 <dsal> Inst: Are you wanting a paramorphism?
2022-02-08 06:51:44 +0100nunggu(~q@user/nunggu)
2022-02-08 06:52:10 +0100 <dsal> It's unclear exactly what you're trying to do, but if you've not read the barbed wire paper, that might help.
2022-02-08 06:53:58 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-08 06:54:05 +0100 <ski> Inst isn't the one wanting to do it, really
2022-02-08 06:54:44 +0100haskell_(~haskell@172.56.42.179)
2022-02-08 06:55:15 +0100haskell_(~haskell@172.56.42.179) (Remote host closed the connection)
2022-02-08 06:57:25 +0100zebrag(~chris@user/zebrag) (Remote host closed the connection)
2022-02-08 06:57:31 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 06:59:17 +0100Inst(~delicacie@2601:6c4:4080:3f80:740e:1010:1471:f716) (Ping timeout: 240 seconds)
2022-02-08 07:01:54 +0100deadmarshal(~deadmarsh@95.38.117.237)
2022-02-08 07:02:12 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-02-08 07:04:29 +0100rusrushal13(~rusrushal@2401:4900:30b1:b349:313f:fa70:9419:b887)
2022-02-08 07:05:32 +0100 <yuvi> ill be back tomorrow if i still cant figure it out. thanks all
2022-02-08 07:05:42 +0100yuvi(~uv125@192.54.96.185) (Quit: WeeChat 2.8)
2022-02-08 07:07:58 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-02-08 07:10:09 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-08 07:11:55 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-08 07:14:41 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
2022-02-08 07:19:07 +0100myme(~myme@2a01:799:d5a:cd00:fb5a:85b7:3647:e056) (Ping timeout: 268 seconds)
2022-02-08 07:19:59 +0100myme(~myme@2a01:799:d5a:cd00:4746:bc4e:ee58:44d9)
2022-02-08 07:23:42 +0100xff0x(~xff0x@2001:1a81:533f:ea00:5f96:9e03:4e30:341d) (Ping timeout: 260 seconds)
2022-02-08 07:24:27 +0100xff0x(~xff0x@2001:1a81:533f:ea00:7b8c:668:4058:35b)
2022-02-08 07:26:35 +0100rusrushal13(~rusrushal@2401:4900:30b1:b349:313f:fa70:9419:b887) (Ping timeout: 256 seconds)
2022-02-08 07:27:57 +0100cosimone(~user@93-47-228-151.ip115.fastwebnet.it)
2022-02-08 07:28:30 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-08 07:33:07 +0100Jing(~hedgehog@240e:390:7c53:a7e1:2d5c:e7c5:18a:2cdc)
2022-02-08 07:37:50 +0100 <hololeap> does anyone know of a framework to deploy threepenny-gui other than electron? I remember seeing an alternative but I can't remember the name
2022-02-08 07:39:59 +0100FroskyArr(~froskyarr@120.239.9.146)
2022-02-08 07:41:05 +0100mvk(~mvk@2607:fea8:5cdc:bf00::80f1) (Ping timeout: 256 seconds)
2022-02-08 07:43:47 +0100foul_owl(~kerry@94.140.8.224) (Ping timeout: 250 seconds)
2022-02-08 07:46:48 +0100shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-02-08 07:52:20 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 07:58:21 +0100foul_owl(~kerry@94.140.8.51)
2022-02-08 08:02:29 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-08 08:04:34 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-02-08 08:07:04 +0100jakalx(~jakalx@base.jakalx.net)
2022-02-08 08:07:43 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi)
2022-02-08 08:11:13 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-02-08 08:13:36 +0100k8yun_(~k8yun@24.244.29.99) (Read error: Connection reset by peer)
2022-02-08 08:14:57 +0100xff0x(~xff0x@2001:1a81:533f:ea00:7b8c:668:4058:35b) (Ping timeout: 240 seconds)
2022-02-08 08:16:13 +0100xff0x(~xff0x@2001:1a81:533f:ea00:4e49:abcb:9c05:c4b8)
2022-02-08 08:22:13 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 08:25:46 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
2022-02-08 08:25:53 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:1001:bfbe:d16:fcbe)
2022-02-08 08:27:03 +0100frosky_(~froskyarr@120.239.9.146)
2022-02-08 08:28:25 +0100yauhsien_(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-02-08 08:30:26 +0100FroskyArr(~froskyarr@120.239.9.146) (Ping timeout: 260 seconds)
2022-02-08 08:36:52 +0100ardell(~ardell@user/ardell)
2022-02-08 08:37:14 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds)
2022-02-08 08:39:12 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 08:39:41 +0100frosky_(~froskyarr@120.239.9.146) (Ping timeout: 256 seconds)
2022-02-08 08:40:42 +0100cosimone(~user@93-47-228-151.ip115.fastwebnet.it) (Remote host closed the connection)
2022-02-08 08:40:59 +0100michalz(~michalz@185.246.204.75)
2022-02-08 08:43:48 +0100cosimone(~user@93-47-228-151.ip115.fastwebnet.it)
2022-02-08 08:44:22 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-02-08 08:47:08 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-08 08:47:48 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net)
2022-02-08 08:49:54 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-08 08:50:38 +0100chenqisu1(~chenqisu1@183.217.200.249) (Max SendQ exceeded)
2022-02-08 08:51:05 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-08 08:55:58 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-08 08:56:35 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-08 08:56:40 +0100kuribas(~user@ptr-25vy0i8mlszjpxncneu.18120a2.ip6.access.telenet.be)
2022-02-08 08:57:53 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-02-08 08:59:08 +0100cfricke(~cfricke@user/cfricke)
2022-02-08 09:03:21 +0100alp(~alp@user/alp)
2022-02-08 09:07:39 +0100Jing(~hedgehog@240e:390:7c53:a7e1:2d5c:e7c5:18a:2cdc) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-08 09:15:34 +0100ubert(~Thunderbi@p548c8cd6.dip0.t-ipconnect.de) (Quit: ubert)
2022-02-08 09:15:42 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 260 seconds)
2022-02-08 09:19:16 +0100mc47(~mc47@xmonad/TheMC47)
2022-02-08 09:21:38 +0100wavemode(~wavemode@2601:241:0:fc90:7b48:d1cc:a5e5:a126) (Ping timeout: 256 seconds)
2022-02-08 09:22:17 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 09:23:27 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-02-08 09:23:51 +0100alp(~alp@user/alp)
2022-02-08 09:25:06 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-02-08 09:26:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 09:28:47 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-02-08 09:31:07 +0100MajorBiscuit(~MajorBisc@c-001-001-054.client.tudelft.eduvpn.nl)
2022-02-08 09:31:34 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-02-08 09:33:39 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 250 seconds)
2022-02-08 09:36:31 +0100mixfix41(~sdenyninn@user/mixfix41)
2022-02-08 09:36:39 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-02-08 09:37:05 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-02-08 09:41:15 +0100AlexisTP(~AlexisTP3@92.57.44.63)
2022-02-08 09:43:49 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 250 seconds)
2022-02-08 09:43:58 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr) (Ping timeout: 256 seconds)
2022-02-08 09:45:49 +0100AlexisTP2(~AlexisTP3@92.57.44.63)
2022-02-08 09:48:15 +0100AlexisTP(~AlexisTP3@92.57.44.63) (Ping timeout: 256 seconds)
2022-02-08 09:48:54 +0100AlexisTP2(~AlexisTP3@92.57.44.63) (Client Quit)
2022-02-08 09:48:55 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-08 09:49:08 +0100AlexisTP2(~AlexisTP3@92.57.44.63)
2022-02-08 09:49:29 +0100rando25892(~homefame@user/rando25892) (Quit: enemy at the gate)
2022-02-08 09:51:37 +0100AlexisTP2AlexisTP
2022-02-08 09:52:04 +0100chele(~chele@user/chele)
2022-02-08 09:52:30 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:1dc4:f5c4:a458:81) (Remote host closed the connection)
2022-02-08 09:52:52 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-02-08 09:59:13 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2022-02-08 10:02:07 +0100AlexisTP(~AlexisTP3@92.57.44.63) (Quit: Leaving)
2022-02-08 10:02:40 +0100mixfix41(~sdenyninn@user/mixfix41) (Ping timeout: 256 seconds)
2022-02-08 10:02:51 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 10:02:56 +0100 <dminuoso> Mmm, is there a tool/way to vendor the entire transitive dependency graph of a cabal package?
2022-02-08 10:03:06 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-08 10:03:12 +0100FragByte(~christian@user/fragbyte)
2022-02-08 10:03:27 +0100 <dminuoso> Background is, Im toying with the idea of checking the dependency graph in as a way to be able to audit changes when I update that dependency graph
2022-02-08 10:03:38 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 10:04:18 +0100 <dminuoso> And while initially I played around the idea of equipping cabal with the tools, it might be much much easier to do it this way because it would amount to some kind of `cabal update && cabal vendor-dependency-graph && git diff`
2022-02-08 10:05:08 +0100AlexisTP(~AlexisTP3@92.57.44.63)
2022-02-08 10:07:57 +0100little_mac(~little_ma@2601:410:4300:3ce0:c1b4:4e62:c0e4:304a) (Ping timeout: 240 seconds)
2022-02-08 10:11:16 +0100 <ephemient> you want something more than `cabal freeze`?
2022-02-08 10:12:24 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 10:12:28 +0100 <dminuoso> Yes, it's not as much the locking part Im concerned about, but being able to vet *source* differences across updates in my dependency graph
2022-02-08 10:14:43 +0100 <dminuoso> Incidentally it also decouples your build process from hackage improving offline builds, and it avoids issues like having some kind of global cabal store on a builder that can be updated causing friction
2022-02-08 10:17:33 +0100 <ephemient> I suppose you could download and unpack all dependencies and tie them together with a `cabal.project`
2022-02-08 10:17:48 +0100 <ephemient> I don't know if there's any tooling that will do that for you though
2022-02-08 10:17:50 +0100 <dminuoso> Yup, that's the idea. :)
2022-02-08 10:27:53 +0100__monty__(~toonn@user/toonn)
2022-02-08 10:30:53 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-02-08 10:34:35 +0100mncheck(~mncheck@193.224.205.254)
2022-02-08 10:38:46 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-02-08 10:39:04 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-08 10:41:38 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-08 10:42:19 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 10:44:37 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-02-08 10:45:21 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 245 seconds)
2022-02-08 10:50:20 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 10:51:09 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-08 10:51:27 +0100max22-(~maxime@2a01cb08833598001ee79bb16bcae2a5.ipv6.abo.wanadoo.fr)
2022-02-08 10:53:01 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:58f7:de82:9fa8:330)
2022-02-08 10:53:05 +0100notzmv(~zmv@user/notzmv)
2022-02-08 10:57:26 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:58f7:de82:9fa8:330) (Ping timeout: 260 seconds)
2022-02-08 10:59:09 +0100ubert(~Thunderbi@2a02:8109:9880:303c:216f:fa56:c9b1:3e43)
2022-02-08 11:03:06 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-02-08 11:04:04 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-02-08 11:08:59 +0100thevishy(~Nishant@2405:201:f005:c007:e0f1:5635:e895:47c6)
2022-02-08 11:09:01 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-08 11:11:03 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 11:11:05 +0100dffo^(~dffo@128-092-182-020.biz.spectrum.com) (Remote host closed the connection)
2022-02-08 11:13:43 +0100zaquest(~notzaques@5.130.79.72)
2022-02-08 11:15:25 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-08 11:16:29 +0100fendor(~fendor@91.141.68.59.wireless.dyn.drei.com)
2022-02-08 11:26:56 +0100jollygood2(~bc8147f2@cerf.good1.com)
2022-02-08 11:31:42 +0100dsrt^(~dsrt@128-092-182-020.biz.spectrum.com)
2022-02-08 11:33:19 +0100Inst(~delicacie@2601:6c4:4080:3f80:4989:132:1295:a68)
2022-02-08 11:35:39 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-08 11:39:50 +0100Inst(~delicacie@2601:6c4:4080:3f80:4989:132:1295:a68) (Ping timeout: 252 seconds)
2022-02-08 11:42:36 +0100sektor|2(~kvirc@87.227.175.182)
2022-02-08 11:49:34 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 11:50:52 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-02-08 11:55:48 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-02-08 11:56:19 +0100ardell(~ardell@user/ardell) (Ping timeout: 256 seconds)
2022-02-08 11:56:21 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 11:57:43 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
2022-02-08 11:58:42 +0100 <jackdk> nix, perhaps?
2022-02-08 11:58:48 +0100slowtyper(~slowtyper@user/slowtyper) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-08 11:59:04 +0100slowtyper(~slowtyper@user/slowtyper)
2022-02-08 11:59:35 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-02-08 12:00:27 +0100Inst(~delicacie@2601:6c4:4080:3f80:385f:7529:31a:7cc)
2022-02-08 12:01:26 +0100 <DigitalKiwi> i was thinking that but everyone gets mad here when we suggest it
2022-02-08 12:03:55 +0100qwedfg(~qwedfg@user/qwedfg) (Quit: ZNC - https://znc.in)
2022-02-08 12:04:55 +0100qwedfg(~qwedfg@user/qwedfg)
2022-02-08 12:05:27 +0100 <geekosaur> nix has its place. it's just not *my* place
2022-02-08 12:07:25 +0100Inst(~delicacie@2601:6c4:4080:3f80:385f:7529:31a:7cc) (Ping timeout: 256 seconds)
2022-02-08 12:16:35 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-08 12:17:14 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 260 seconds)
2022-02-08 12:19:24 +0100Inst(~delicacie@2601:6c4:4080:3f80:49ca:6d07:64a:8665)
2022-02-08 12:26:02 +0100Inst(~delicacie@2601:6c4:4080:3f80:49ca:6d07:64a:8665) (Ping timeout: 252 seconds)
2022-02-08 12:28:20 +0100rtsn(~nstr@h-155-4-221-229.NA.cust.bahnhof.se) (Changing host)
2022-02-08 12:28:20 +0100rtsn(~nstr@user/rtsn)
2022-02-08 12:29:21 +0100Inst(~delicacie@2601:6c4:4080:3f80:68b8:ca9:8601:35d3)
2022-02-08 12:29:42 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 12:32:38 +0100Guest91(~Guest91@103.231.89.231)
2022-02-08 12:32:49 +0100unyu(~pyon@user/pyon)
2022-02-08 12:32:55 +0100rusrushal13(~rusrushal@2409:4056:108:9c3b:d7fd:94d2:1ba2:efdd)
2022-02-08 12:33:50 +0100Guest91(~Guest91@103.231.89.231) (Client Quit)
2022-02-08 12:34:56 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 245 seconds)
2022-02-08 12:36:08 +0100unyu(~pyon@user/pyon) (Client Quit)
2022-02-08 12:38:40 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-08 12:39:23 +0100sheb_(~sheb@31.223.228.71) (Quit: Leaving)
2022-02-08 12:40:37 +0100Inst(~delicacie@2601:6c4:4080:3f80:68b8:ca9:8601:35d3) (Ping timeout: 240 seconds)
2022-02-08 12:47:47 +0100Jing(~hedgehog@240e:390:7c53:a7e1:7c1f:c247:2b7b:d046)
2022-02-08 12:48:46 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 12:49:17 +0100ober(~brian@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-08 12:49:54 +0100ober(~brian@c-73-68-74-41.hsd1.ma.comcast.net) (Client Quit)
2022-02-08 12:50:24 +0100 <maerwald> haha
2022-02-08 12:50:57 +0100quintasan(~quassel@quintasan.pl) (Ping timeout: 256 seconds)
2022-02-08 12:53:33 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-08 12:55:40 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-02-08 12:56:24 +0100rusrushal13(~rusrushal@2409:4056:108:9c3b:d7fd:94d2:1ba2:efdd) (Ping timeout: 256 seconds)
2022-02-08 12:56:41 +0100quintasan(~quassel@quintasan.pl)
2022-02-08 12:56:53 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr)
2022-02-08 12:59:37 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-02-08 13:02:18 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-02-08 13:03:16 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 13:03:53 +0100ubert(~Thunderbi@2a02:8109:9880:303c:216f:fa56:c9b1:3e43) (Remote host closed the connection)
2022-02-08 13:04:05 +0100ubert(~Thunderbi@2a02:8109:9880:303c:947b:22d6:c94:9589)
2022-02-08 13:07:41 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-08 13:12:17 +0100rusrushal13(~rusrushal@2401:4900:447d:f2bb:d612:874b:92ea:4923)
2022-02-08 13:12:22 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-08 13:13:00 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt)
2022-02-08 13:13:09 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-08 13:13:36 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 13:14:00 +0100 <romesrf> o/
2022-02-08 13:14:55 +0100mncheckm(~mncheck@193.224.205.254) (Quit: Leaving)
2022-02-08 13:24:04 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 13:25:59 +0100thyriaen(~thyriaen@simnet-nat-pool-185-130-54-208.stargrpns.pp.ua)
2022-02-08 13:26:43 +0100 <thyriaen> howdy friends, is there a haskell prelude documentation on linux where I can look up specific functions like on a man page ?
2022-02-08 13:26:48 +0100xkuru(~xkuru@user/xkuru)
2022-02-08 13:26:59 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 13:27:22 +0100 <thyriaen> I mean something like hoogle or hackage but as a linux terminal utility
2022-02-08 13:27:49 +0100 <merijn> thyriaen: Hoogle has a commandline client :)
2022-02-08 13:27:58 +0100 <lep> ghci provides a built-in :doc command, and hoogle cli should do it aswell
2022-02-08 13:28:16 +0100 <geekosaur> also https://github.com/lazamar/haskell-docs-cli
2022-02-08 13:28:29 +0100 <merijn> Getting it running the first time is a bit of a hassle, but it does exist. In fact, you can make it index stuff Hoogle doesn't index too :p
2022-02-08 13:29:07 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2022-02-08 13:29:12 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
2022-02-08 13:29:26 +0100 <thyriaen> ah perfect, thanks lep it was what i was looking for
2022-02-08 13:29:37 +0100 <thyriaen> i will give hoogle a shot if that won't be enough for me
2022-02-08 13:30:03 +0100 <lep> yeah it's very nice. before ghci had :doc i had a hoogle alias in my .ghci-file
2022-02-08 13:30:57 +0100 <boxscape_> are haddock comments stored in the interface files?
2022-02-08 13:31:11 +0100 <geekosaur> not currently
2022-02-08 13:31:20 +0100 <boxscape_> where does ghci get them from?
2022-02-08 13:31:51 +0100 <geekosaur> there's an extended interface file spec in development which includes them; I don't *think* it's in play yet though
2022-02-08 13:32:01 +0100 <boxscape_> okay
2022-02-08 13:32:14 +0100 <geekosaur> although maybe it is and ghci is using it
2022-02-08 13:32:34 +0100 <geekosaur> I kinda lost trackof the current state of .hie files
2022-02-08 13:33:12 +0100 <thyriaen> can i list all prelude functions within ghci with doc somehow ?
2022-02-08 13:36:14 +0100 <boxscape_> I think if that were possible it would be part of the :browse command, but the browse command doesn't seem to allow you to display docs
2022-02-08 13:40:00 +0100 <polyphem> thyriaen: hdc :mi Base.Prelude
2022-02-08 13:40:54 +0100 <thyriaen> i ment browse, it is perfect thanks
2022-02-08 13:42:49 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 13:44:31 +0100DNH(~DNH@2a02:8108:1100:16d8:6197:e762:8e5b:d7b9)
2022-02-08 13:47:57 +0100unyu(~pyon@user/pyon)
2022-02-08 13:55:31 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-08 13:57:00 +0100 <jollygood2> is hoogle included with ghc
2022-02-08 13:57:23 +0100 <jollygood2> cli hoogle
2022-02-08 13:59:07 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-02-08 13:59:30 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-02-08 14:00:53 +0100tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-02-08 14:01:38 +0100tiferrei(~tiferrei@user/tiferrei)
2022-02-08 14:03:35 +0100thyriaen(~thyriaen@simnet-nat-pool-185-130-54-208.stargrpns.pp.ua) (Remote host closed the connection)
2022-02-08 14:06:37 +0100quintasan(~quassel@quintasan.pl) (Ping timeout: 240 seconds)
2022-02-08 14:07:10 +0100 <merijn> jollygood2: No, Hoogle is a standalone program
2022-02-08 14:07:31 +0100 <merijn> @hackage hoogle
2022-02-08 14:07:31 +0100 <lambdabot> https://hackage.haskell.org/package/hoogle
2022-02-08 14:07:50 +0100 <merijn> jollygood2: The cabal package for the webservice also includes the CLI executable
2022-02-08 14:15:29 +0100chenqisu1(~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
2022-02-08 14:16:07 +0100bontaq`(~user@ool-45779fe5.dyn.optonline.net)
2022-02-08 14:20:55 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-02-08 14:23:22 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-02-08 14:24:01 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-02-08 14:25:48 +0100jumper149(~jumper149@base.felixspringer.xyz)
2022-02-08 14:27:40 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-02-08 14:27:55 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-08 14:28:16 +0100whatif(~user@123.123.222.32)
2022-02-08 14:28:22 +0100max22-(~maxime@2a01cb08833598001ee79bb16bcae2a5.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2022-02-08 14:29:16 +0100whatif(~user@123.123.222.32) (Client Quit)
2022-02-08 14:32:26 +0100mixfix41(~sdenyninn@user/mixfix41)
2022-02-08 14:32:44 +0100rusrushal13(~rusrushal@2401:4900:447d:f2bb:d612:874b:92ea:4923) (Ping timeout: 256 seconds)
2022-02-08 14:33:28 +0100bontaq`bontaq
2022-02-08 14:44:03 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-02-08 14:45:36 +0100ober(~ober@mail3.belmont.k12.ma.us)
2022-02-08 14:47:02 +0100 <Axman6> Given an Integer, how I figure out how many bits it contains? or the index of the highest bit set? I feel like I know this...
2022-02-08 14:47:02 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Ping timeout: 260 seconds)
2022-02-08 14:47:03 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
2022-02-08 14:47:11 +0100 <Axman6> it's the integer log base 2
2022-02-08 14:47:27 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 14:47:36 +0100 <dminuoso> how many "bits"?
2022-02-08 14:47:54 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es)
2022-02-08 14:48:06 +0100 <Axman6> yes, how many bits does the number take to represent
2022-02-08 14:48:29 +0100 <dminuoso> Do you mean in terms of allocated bytes?
2022-02-08 14:48:34 +0100 <Axman6> like, 64 would be 6
2022-02-08 14:48:49 +0100 <Axman6> I guess I want the index of the highest bit set
2022-02-08 14:48:54 +0100 <dminuoso> bitSizeMaybe?
2022-02-08 14:49:04 +0100 <Axman6> doesn't work for Integers
2022-02-08 14:49:12 +0100 <dminuoso> Why not?
2022-02-08 14:49:17 +0100 <dminuoso> % import Data.Bits
2022-02-08 14:49:17 +0100 <yahb> dminuoso:
2022-02-08 14:49:19 +0100 <dminuoso> % :t bitSizeMaybe
2022-02-08 14:49:19 +0100 <yahb> dminuoso: Bits a => a -> Maybe Int
2022-02-08 14:49:24 +0100 <dminuoso> % bitSizeMaybe (1 :: Integer)
2022-02-08 14:49:25 +0100 <yahb> dminuoso: Nothing
2022-02-08 14:49:28 +0100 <Axman6> =)
2022-02-08 14:49:32 +0100 <dminuoso> Mmm
2022-02-08 14:49:46 +0100 <dminuoso> Returns Nothing for types that do not have a fixed bitsize, like Integer.
2022-02-08 14:50:33 +0100 <merijn> bitSize is the highest possible bit
2022-02-08 14:50:41 +0100 <merijn> I think Axman wants the "highest non-zero" bit?
2022-02-08 14:50:49 +0100s4msungs5smong
2022-02-08 14:50:52 +0100 <Axman6> yes
2022-02-08 14:51:01 +0100 <Axman6> bitSize for Integer throws *** Exception: Data.Bits.bitSize(Integer)
2022-02-08 14:51:23 +0100 <dminuoso> So some integerLog2
2022-02-08 14:51:48 +0100 <Axman6> @goofle log2
2022-02-08 14:51:50 +0100 <lambdabot> No Result Found.
2022-02-08 14:51:56 +0100 <dminuoso> https://hackage.haskell.org/package/base-4.16.0.0/docs/GHC-Integer-Logarithms.html#v:integerLog2-35-
2022-02-08 14:52:07 +0100 <dminuoso> There, pretty wrap that with I# back into an Int
2022-02-08 14:52:11 +0100 <Axman6> ah, that'll help
2022-02-08 14:52:13 +0100 <merijn> Axman6: bitSize operates on a *type*, i.e. the bitsize of the type, not of the value
2022-02-08 14:53:01 +0100 <dminuoso> Axman6: Remember to correctly rule out negative Integer
2022-02-08 14:53:08 +0100 <dminuoso> Or even 0.
2022-02-08 14:53:32 +0100 <Axman6> yeah these integers are all positive
2022-02-08 14:55:20 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 14:55:27 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 14:55:46 +0100 <ski> % map (\n -> if n == 0 then 0 else GHC.Int.I# (GHC.Integer.Logarithms.integerLog2# n) + 1) [0 ..]
2022-02-08 14:55:51 +0100 <yahb> ski: [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
2022-02-08 14:55:56 +0100mvr_(uid36976@id-36976.tinside.irccloud.com)
2022-02-08 15:02:59 +0100bjourne(~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5)
2022-02-08 15:04:29 +0100oats(~thomas@user/oats) (Quit: until later, my friends)
2022-02-08 15:04:55 +0100oats(~thomas@user/oats)
2022-02-08 15:05:09 +0100 <jumper149> Do the `MonadFix` instances for `Maybe` and `Either e` really make sense? They seem very partial to me.
2022-02-08 15:05:22 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-02-08 15:05:38 +0100 <ski> > mfix (\_ -> Nothing)
2022-02-08 15:05:39 +0100 <lambdabot> Nothing
2022-02-08 15:05:47 +0100 <ski> > mfix (\xs -> Just (1:xs))
2022-02-08 15:05:49 +0100 <lambdabot> Just [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
2022-02-08 15:06:05 +0100 <ski> > mfix (\_ -> [])
2022-02-08 15:06:07 +0100 <lambdabot> []
2022-02-08 15:06:25 +0100 <ski> > map (take 4) (mfix (\xs -> [1:xs,2:xs]))
2022-02-08 15:06:26 +0100 <lambdabot> [[1,1,1,1],[2,2,2,2]]
2022-02-08 15:06:45 +0100 <ski> jumper149 : they do. they can't really be more total
2022-02-08 15:06:45 +0100x_kuru(~xkuru@user/xkuru)
2022-02-08 15:07:18 +0100 <bjourne> ghc refuses to start due to missing package db, how do i rebuild it?
2022-02-08 15:07:42 +0100 <ski> (`Either e' basically behaves the same as `Maybe' above, so i didn't show it)
2022-02-08 15:09:01 +0100xkuru(~xkuru@user/xkuru) (Ping timeout: 268 seconds)
2022-02-08 15:12:13 +0100vicfred(~vicfred@user/vicfred)
2022-02-08 15:14:52 +0100 <jumper149> ski: That last example breaks my brain x)
2022-02-08 15:14:55 +0100slack1256(~slack1256@181.42.40.211)
2022-02-08 15:15:16 +0100 <ski> jumper149 : it just makes a single nondeterministic (binary) choice
2022-02-08 15:15:58 +0100 <ski> in the first choice, you effectively have `fix (\xs -> 1:xs)'; in the second, `fix (\xs -> 2:xs)'
2022-02-08 15:15:58 +0100 <jumper149> > take 5 $ mfix $ \ x -> [x]
2022-02-08 15:16:00 +0100 <lambdabot> [*Exception: <<loop>>
2022-02-08 15:16:09 +0100 <jumper149> What is wrong here?
2022-02-08 15:16:28 +0100 <ski> that's equal to `take 5 [fix (\x -> x)]'
2022-02-08 15:16:40 +0100 <jumper149> ah :(
2022-02-08 15:17:06 +0100 <jumper149> so that is equivalent to bottom I guess
2022-02-08 15:17:12 +0100 <ski> no
2022-02-08 15:17:30 +0100 <ski> > seq (mfix (\ x -> [x])) ()
2022-02-08 15:17:32 +0100 <lambdabot> ()
2022-02-08 15:17:41 +0100 <ski> > case mfix (\ x -> [x]) of [_] -> ()
2022-02-08 15:17:42 +0100 <lambdabot> ()
2022-02-08 15:17:50 +0100 <ski> > case mfix (\ x -> [x]) of [!_] -> ()
2022-02-08 15:17:52 +0100 <lambdabot> *Exception: <<loop>>
2022-02-08 15:19:14 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-08 15:19:14 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-08 15:19:14 +0100wroathe(~wroathe@user/wroathe)
2022-02-08 15:22:24 +0100 <jumper149> > fix id
2022-02-08 15:22:26 +0100 <lambdabot> *Exception: <<loop>>
2022-02-08 15:22:30 +0100 <maerwald> why does Identity not have MonadFail?
2022-02-08 15:22:31 +0100 <jumper149> That is bottom tough, right?
2022-02-08 15:22:47 +0100 <maerwald> sure
2022-02-08 15:22:49 +0100 <jumper149> maerwald: How do you want it to fail? `error`?
2022-02-08 15:22:53 +0100 <maerwald> yeah
2022-02-08 15:23:29 +0100 <maerwald> I think you can expect non-strict errors from a non-strict monad
2022-02-08 15:23:44 +0100 <jumper149> Well then you can say "Why doesnt every monad have `MonadFail`", right?
2022-02-08 15:23:58 +0100 <maerwald> not sure about that
2022-02-08 15:25:14 +0100 <jumper149> Hmm, why don't you just use `error` directly?
2022-02-08 15:25:25 +0100 <bjourne> im very annoyed that stack is using ~/.stack rather than ~/.config/stack and ~/.cache/stack like any well-behaved application should
2022-02-08 15:25:51 +0100 <jumper149> like `do { let x = error "fail here" ; pure x }
2022-02-08 15:26:07 +0100 <jumper149> Then you can unwrap `Identity`, without forcing x
2022-02-08 15:26:42 +0100 <ski> isn't `Identity' strict ?
2022-02-08 15:26:58 +0100 <jumper149> ski: Ok maybe it is, idk! :o
2022-02-08 15:27:02 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 15:27:13 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 15:27:16 +0100 <ski> `newtype' data constructors are a little bit weird, in that way
2022-02-08 15:27:33 +0100 <ski> semantically, they're strict, but operationally, they don't force (since they're no-ops)
2022-02-08 15:27:43 +0100 <jumper149> Ah because of newtype, ... maybe
2022-02-08 15:28:18 +0100 <ski> (and ditto for matching on them not forcing)
2022-02-08 15:28:27 +0100 <ski> > case undefined of Identity _ -> ()
2022-02-08 15:28:28 +0100 <lambdabot> ()
2022-02-08 15:28:55 +0100 <jumper149> that is horrible x)
2022-02-08 15:29:29 +0100 <ski> what else to expect ?
2022-02-08 15:29:30 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 15:29:37 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 15:30:15 +0100 <tomsmeding> could you formulate it as: for a newtype A = A T, the bottoms "_|_" and "A _|_" are identified, and both behave as "A _|_". This contrary to what would be more intuitive (at least for me), which is that they would both behave as "_|_"
2022-02-08 15:30:46 +0100 <merijn> bjourne: Considering it's on life-support maintenance, I doubt that will ever change
2022-02-08 15:30:50 +0100vysn(~vysn@user/vysn) (Ping timeout: 252 seconds)
2022-02-08 15:30:54 +0100 <ski> well, sure, they're identified
2022-02-08 15:31:06 +0100 <ski> (not sure you really have to add that "both behave as .." part)
2022-02-08 15:31:12 +0100quintasan(~quassel@quintasan.pl)
2022-02-08 15:31:14 +0100 <jumper149> ski: It does make sense, but its not intuitive :p
2022-02-08 15:31:29 +0100 <ski> it's a gotcha / caveat emptor
2022-02-08 15:31:37 +0100 <geekosaur> I somewhat distrust "intuitive". Intuitive to whom?
2022-02-08 15:31:49 +0100 <ski> to the one who's not used to it
2022-02-08 15:32:06 +0100 <tomsmeding> geekosaur: to me :p
2022-02-08 15:33:33 +0100 <tomsmeding> ski: point is, I think that if any occurrence of a bottom of type A would be automatically, immediately converted to a bottom wrapped in an "A" constructur (imagining a VM where newtypes aren't represented as no-ops), you'd get the same behaviour as Haskell currently does
2022-02-08 15:33:46 +0100 <ski> (that is, i'm not sure what "both behave as \"A _|_\"" vs. "both behave as \"_|_\"" would even mean)
2022-02-08 15:33:59 +0100 <jumper149> > data A a = A a
2022-02-08 15:34:00 +0100 <lambdabot> <hint>:1:1: error: parse error on input ‘data’
2022-02-08 15:34:10 +0100 <jumper149> > case undefined of A _ -> ()
2022-02-08 15:34:11 +0100 <lambdabot> error: Not in scope: data constructor ‘A’
2022-02-08 15:34:15 +0100 <tomsmeding> whereas converting any bottom in an A constructor automatically to a bottom of type A would have different behaviour: indeed, then 'case undefined of A _ -> ()' should crash
2022-02-08 15:34:18 +0100 <ski> @let data A a = MkA a deriving Show
2022-02-08 15:34:19 +0100 <lambdabot> Defined.
2022-02-08 15:34:39 +0100 <jumper149> > case undefined of A _ -> ()
2022-02-08 15:34:41 +0100 <lambdabot> error: Not in scope: data constructor ‘A’
2022-02-08 15:34:46 +0100 <jumper149> > case undefined of MkA _ -> ()
2022-02-08 15:34:47 +0100 <lambdabot> *Exception: Prelude.undefined
2022-02-08 15:34:50 +0100 <tomsmeding> ski: my intuition works for 'data', and I'm trying to formulate a modification to my 'data' intuition to arrive at 'newtype' semantics
2022-02-08 15:34:55 +0100 <jumper149> sry for spam :D
2022-02-08 15:35:26 +0100 <bjourne> marijan: stack is on life-support?! just as i was getting comfortable with cabal
2022-02-08 15:35:41 +0100 <ski> tomsmeding : seems reasonable, i suppose
2022-02-08 15:36:07 +0100 <ski> s/marijan/merijn/
2022-02-08 15:36:07 +0100 <geekosaur> bjourne, it's gone to "community maintained", but thecommunity doesn't seem to be doing much if any maintenance
2022-02-08 15:36:33 +0100 <jumper149> geekosaur: You could say Haskellers are 'lazy' :D
2022-02-08 15:36:40 +0100 <ski> (interesting nickname mutation, btw)
2022-02-08 15:36:54 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-08 15:37:11 +0100tomsmedingsuspects mistype of merij to marij, then auto-complete
2022-02-08 15:37:18 +0100 <bjourne> geekosaur: are we stuck with cabal or is there a new thing coming?
2022-02-08 15:37:27 +0100 <boxscape_> what's wrong with cabal?
2022-02-08 15:37:29 +0100 <merijn> bjourne: Define "stuck"?
2022-02-08 15:37:32 +0100 <ski> oh .. didn't notice there was someone else, with that nick
2022-02-08 15:37:42 +0100 <tomsmeding> lol bjourne got the dogs out
2022-02-08 15:37:43 +0100 <maerwald> boxscape_: --help for starters
2022-02-08 15:37:44 +0100 <merijn> I always liked cabal better than stack anyway, so *shrug*
2022-02-08 15:37:51 +0100tomsmedinglikes cabal
2022-02-08 15:37:55 +0100 <maerwald> the cli interface of cabal is a mess
2022-02-08 15:37:56 +0100 <boxscape_> I admit I've never tried running cabal --help
2022-02-08 15:38:05 +0100 <geekosaur> I think you'll find much of this channel prefers cabal anyway
2022-02-08 15:38:22 +0100 <maerwald> cabal process handling is confusing (and sometimes buggy)
2022-02-08 15:38:22 +0100 <jumper149> Never used stack. Nix is cool though. Cabal is fine.
2022-02-08 15:38:28 +0100 <geekosaur> which is not to say cabal doesn't have its problems, but it's still under active development
2022-02-08 15:38:36 +0100 <maerwald> but those all seem fixable things, not so much design decisions
2022-02-08 15:38:40 +0100 <merijn> maerwald: Everyone's processing handling is confusing and frequently buggy :p
2022-02-08 15:38:47 +0100 <merijn> s/processing/process
2022-02-08 15:38:56 +0100 <geekosaur> stack's process hand;ling used to be fairly buggy too
2022-02-08 15:39:02 +0100 <maerwald> merijn: well, `stack exec` works better than `cabal exec`
2022-02-08 15:39:09 +0100 <maerwald> (hint: cabal doesn't actually exec)
2022-02-08 15:39:26 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-08 15:39:36 +0100 <merijn> tbh, I never used cabal exec, so dunno
2022-02-08 15:39:43 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 15:39:53 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 15:39:58 +0100 <geekosaur> mixing signals and subprocesses is bad enough, trying todo so under a windows/unix compatibility layer ius much much worse
2022-02-08 15:40:09 +0100 <maerwald> there was a "rewrite" of cabal, but with a different philosophy... I forgot the name
2022-02-08 15:40:14 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 15:40:19 +0100 <maerwald> it couldn't build some projects
2022-02-08 15:40:25 +0100 <maerwald> I think it didn't support custom Setup.hs
2022-02-08 15:40:33 +0100 <maerwald> (which is not so sad)
2022-02-08 15:40:47 +0100 <dminuoso> 15:39:09 maerwald | (hint: cabal doesn't actually exec)
2022-02-08 15:40:51 +0100 <dminuoso> Does it run through a shell?
2022-02-08 15:41:06 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 15:41:06 +0100 <maerwald> it just spawns a subprocess
2022-02-08 15:41:16 +0100 <geekosaur> that's more portably
2022-02-08 15:41:23 +0100 <geekosaur> windows doesn't do exec
2022-02-08 15:41:26 +0100 <dminuoso> Mmm, so whether thats wrong or not is debatable
2022-02-08 15:41:30 +0100 <maerwald> geekosaur: lol
2022-02-08 15:41:38 +0100 <dminuoso> I dont consider it surprising, I never thougth that `exec` might have implied the syscall
2022-02-08 15:41:38 +0100 <maerwald> geekosaur: stack obviously doesn't exec on windows
2022-02-08 15:41:46 +0100 <maerwald> that's not a portability problem
2022-02-08 15:42:10 +0100 <maerwald> that's proper platform-specific code
2022-02-08 15:42:28 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 15:42:31 +0100 <bjourne> marijan: i thought everyone hated cabal, i might have been mistaken
2022-02-08 15:42:36 +0100 <maerwald> portability doesn't mean to do the wrong thing on all platforms to be consistent
2022-02-08 15:42:50 +0100skipities marijan
2022-02-08 15:43:37 +0100 <boxscape_> bjourne cabal has changed a few things since stack was developed, which makes stack much less necessary
2022-02-08 15:43:56 +0100 <maerwald> yeah and it might support stackage directly at some point
2022-02-08 15:44:43 +0100 <jumper149> At that point I hope they rename it to "cabbage"
2022-02-08 15:45:01 +0100 <bjourne> +1
2022-02-08 15:45:09 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-02-08 15:45:14 +0100 <dminuoso> Im quite satisfied with cabal
2022-02-08 15:45:34 +0100 <merijn> boxscape_: Correction: Those changes in cabal started before stack development :p
2022-02-08 15:45:40 +0100 <boxscape_> ah, fair enough
2022-02-08 15:45:46 +0100 <dminuoso> While there's certainly some rough edges here and there, like making it hard to just start a repl with some libraries in scope, overall its fine
2022-02-08 15:46:06 +0100 <ski> bjourne : note there's different things referred to as "cabal", by people. <https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07>
2022-02-08 15:46:28 +0100 <boxscape_> dminuoso not that hard, "cabal repl --build-depends=distributive,lens"
2022-02-08 15:46:46 +0100 <dminuoso> Oh
2022-02-08 15:46:54 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 15:47:27 +0100 <maerwald> or `cabal install --lib --package-env=.` and then just ghci
2022-02-08 15:47:31 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-08 15:47:33 +0100 <merijn> bjourne: tbh, I don't think stack got more than 50-60% mindshare even at it's most popular
2022-02-08 15:47:40 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 15:47:53 +0100 <merijn> bjourne: I will say that the 50-60% it did attract were probably...the most aggressively vocal people
2022-02-08 15:48:02 +0100 <maerwald> merijn: in industry, I'd say, it's more popular... although that may be shrinking as well
2022-02-08 15:48:17 +0100 <merijn> to the point that their opinion seems to drown out everything else on social media
2022-02-08 15:48:18 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-08 15:49:13 +0100 <merijn> bjourne: Even "cabal sandbox" was already pretty nice, but kinda annoying and a hassle to work with. But v2-build basically eliminates all of the nasty corners/edges from the sandbox thing
2022-02-08 15:49:58 +0100 <maerwald> merijn: I actually prefer sandboxes over nix-style stores
2022-02-08 15:50:32 +0100 <maerwald> easier to clean up without wreaking havoc
2022-02-08 15:50:37 +0100 <maerwald> debugging easier
2022-02-08 15:51:05 +0100 <bjourne> so the reason i asked is because the profs at my uni thinks (and teaches) that stack is *the* cabal replacement
2022-02-08 15:51:08 +0100Sgeo(~Sgeo@user/sgeo)
2022-02-08 15:51:21 +0100 <maerwald> bjourne: well, tell them to look at the official download page maybe
2022-02-08 15:51:31 +0100 <merijn> bjourne: https://www.snoyman.com/blog/babies-oss-maintenance/
2022-02-08 15:51:40 +0100 <merijn> bjourne: Maybe point him in that direction
2022-02-08 15:51:41 +0100 <maerwald> https://www.haskell.org/downloads/
2022-02-08 15:52:06 +0100 <maerwald> Haskell toolchain is defined as: GHC, cabal-install, stack, HLS
2022-02-08 15:52:53 +0100 <maerwald> merijn: well, he was vocal about needing maintainers, but didn't attend to most of my PRs... so I'm not sure what I conclude from that
2022-02-08 15:53:16 +0100 <merijn> maerwald: The conclusion is that it's mostly unmaintained :p
2022-02-08 15:53:47 +0100dsrt^(~dsrt@128-092-182-020.biz.spectrum.com) (Remote host closed the connection)
2022-02-08 15:54:12 +0100 <dminuoso> bjourne: For one, most people live in a really small bubble.
2022-02-08 15:54:47 +0100 <dminuoso> If you happen to work at FP complete, you might be led to believe that nobody uses cabal-install.
2022-02-08 15:55:03 +0100 <bjourne> maerwald: i could, but they don't have time to update their lecture material anyway
2022-02-08 15:55:08 +0100 <dminuoso> It's hard to gain a good indicator of what the wide community uses outside haskell surveys.
2022-02-08 15:55:16 +0100 <maerwald> bjourne: ah... there's the real reason :p
2022-02-08 15:55:23 +0100 <dminuoso> And even they give a biases result since its tough to get an accurate representative picture
2022-02-08 15:56:05 +0100 <maerwald> https://taylor.fausak.me/2021/11/16/haskell-survey-results/#s2q1
2022-02-08 15:57:13 +0100 <jumper149> In 2017 stack was twice as popular as cabal. Nowadays it's roughly equal according to the Haskell surcey
2022-02-08 15:57:35 +0100 <merijn> jumper149: Some of the earliest Haskell surveys were *incredibly* biased in population that responded
2022-02-08 15:57:41 +0100 <dminuoso> maerwald: Online surveys are still incredibly poor.
2022-02-08 15:58:15 +0100 <dminuoso> They suffer from (non)response bias and coverage bias
2022-02-08 15:58:21 +0100 <merijn> jumper149: Since they were largely advertised/popularised on FPComplete related sides, which (for obvious reason) had audiences skewing to stack hard
2022-02-08 15:58:37 +0100 <merijn> jumper149: The more recent surveys are more broadly circulated and probably more representative
2022-02-08 15:58:40 +0100 <maerwald> sure... my guess is that the survey is mostly targeting opensource community
2022-02-08 15:58:55 +0100 <maerwald> don't think managers tell their 5 haskell employees to complete the survey
2022-02-08 15:59:04 +0100 <bjourne> maerwald: indeed, it's no one's fault, but software churn wastes a lot of time. no one has time to keep up with it
2022-02-08 15:59:05 +0100 <dminuoso> No, that's not what Im suggesting.
2022-02-08 15:59:35 +0100 <maerwald> my guess is if you'd do that survey in industry, stack would be at 70%
2022-02-08 16:00:48 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-02-08 16:01:16 +0100comerijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 16:01:32 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:01:42 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Read error: Connection reset by peer)
2022-02-08 16:03:22 +0100messier102(~messier10@user/messier102)
2022-02-08 16:03:27 +0100fef(~thedawn@user/thedawn)
2022-02-08 16:03:34 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:03:45 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-02-08 16:04:43 +0100messier102_(~messier10@user/messier102)
2022-02-08 16:05:03 +0100califax(~califax@user/califx)
2022-02-08 16:06:16 +0100tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 250 seconds)
2022-02-08 16:06:33 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds)
2022-02-08 16:08:32 +0100tomboy64(~tomboy64@user/tomboy64)
2022-02-08 16:10:47 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 16:11:34 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 16:12:27 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:13:13 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:13:38 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net)
2022-02-08 16:14:03 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net) (Remote host closed the connection)
2022-02-08 16:15:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 16:17:14 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-02-08 16:17:14 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:17:19 +0100nek0(~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2022-02-08 16:17:54 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:19:26 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-02-08 16:19:27 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:20:00 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:22:23 +0100ober(~ober@mail3.belmont.k12.ma.us) (Remote host closed the connection)
2022-02-08 16:22:40 +0100ober(~ober@mail3.belmont.k12.ma.us)
2022-02-08 16:22:49 +0100mbuf(~Shakthi@122.178.191.223) (Quit: Leaving)
2022-02-08 16:24:27 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca)
2022-02-08 16:24:34 +0100comerijnmerijn
2022-02-08 16:24:38 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-08 16:25:03 +0100ober(~ober@mail3.belmont.k12.ma.us) (Read error: Connection reset by peer)
2022-02-08 16:25:22 +0100ober(~ober@mail3.belmont.k12.ma.us)
2022-02-08 16:26:48 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net)
2022-02-08 16:26:49 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:27:20 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net) (Remote host closed the connection)
2022-02-08 16:27:50 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:28:11 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-08 16:28:25 +0100ober_(~ober@mail3.belmont.k12.ma.us)
2022-02-08 16:28:26 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:28:34 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:29:20 +0100ober(~ober@mail3.belmont.k12.ma.us) (Read error: Connection reset by peer)
2022-02-08 16:30:48 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-08 16:31:42 +0100rembo10(~rembo10@remulis.com)
2022-02-08 16:37:20 +0100Inst(~delicacie@2601:6c4:4080:3f80:18a9:c2e9:8c77:2fcf)
2022-02-08 16:37:41 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:37:48 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:39:09 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 16:39:11 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-08 16:40:15 +0100ober(~ober@mail3.belmont.k12.ma.us)
2022-02-08 16:41:48 +0100ober_(~ober@mail3.belmont.k12.ma.us) (Read error: Connection reset by peer)
2022-02-08 16:43:33 +0100thevishy(~Nishant@2405:201:f005:c007:e0f1:5635:e895:47c6) (Quit: Leaving)
2022-02-08 16:43:52 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-02-08 16:43:57 +0100Inst(~delicacie@2601:6c4:4080:3f80:18a9:c2e9:8c77:2fcf) (Ping timeout: 240 seconds)
2022-02-08 16:45:05 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr) (Ping timeout: 256 seconds)
2022-02-08 16:45:10 +0100ober(~ober@mail3.belmont.k12.ma.us) (Quit: Leaving)
2022-02-08 16:46:01 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 16:47:33 +0100safinaskar(~quassel@109.252.91.116)
2022-02-08 16:47:43 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-02-08 16:48:01 +0100safinaskar(~quassel@109.252.91.116) ()
2022-02-08 16:49:38 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:1001:bfbe:d16:fcbe) (Quit: WeeChat 2.8)
2022-02-08 16:50:25 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 16:50:43 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 16:50:50 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 16:50:51 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 16:51:02 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 16:55:39 +0100messier102_(~messier10@user/messier102) (Ping timeout: 250 seconds)
2022-02-08 16:55:39 +0100messier102(~messier10@user/messier102) (Ping timeout: 250 seconds)
2022-02-08 16:57:51 +0100Guest72(~Guest72@27.56.151.17)
2022-02-08 16:58:10 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2022-02-08 16:59:05 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-08 16:59:16 +0100Inst(~delicacie@2601:6c4:4080:3f80:a48f:8f89:30fa:5637)
2022-02-08 17:00:27 +0100olle(~olle@p5784fa92.dip0.t-ipconnect.de)
2022-02-08 17:00:40 +0100 <olle> You guys have a way to put a side-effects in a queue to be executed at a later point?
2022-02-08 17:00:45 +0100 <olle> -s*
2022-02-08 17:01:00 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 17:01:31 +0100 <ski> huh ?
2022-02-08 17:01:51 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 17:01:59 +0100 <ski> you can put actions in a queue, if you want, and perhaps later execute them, sure
2022-02-08 17:02:09 +0100 <olle> ski: Define "action"
2022-02-08 17:02:28 +0100 <ski> any value of type `f a', where `f' is an instance of `Applicative'
2022-02-08 17:02:52 +0100 <olle> ski: Alright :)
2022-02-08 17:03:17 +0100 <ski> (btw, sometimes people would express that as `Applicative f => f a' .. but that's wrong)
2022-02-08 17:03:19 +0100 <olle> Sooo, say I have print "foo" and wrap it inside a lambda instead. Can I remove the IO monad from that function then?
2022-02-08 17:03:31 +0100 <merijn> olle: You can simply have a threat with a channel and then execute those one at a time
2022-02-08 17:03:33 +0100 <olle> Or maybe the queue must be mutable
2022-02-08 17:03:45 +0100 <ski> what do you mean by "wrap it inside a lambda instead" ?
2022-02-08 17:03:47 +0100 <merijn> olle: You can just put IO actions into things directly
2022-02-08 17:04:00 +0100 <merijn> :t map putStrlN ["foo", "bar"]
2022-02-08 17:04:01 +0100 <lambdabot> error:
2022-02-08 17:04:01 +0100 <lambdabot> • Variable not in scope: putStrlN :: [Char] -> b
2022-02-08 17:04:02 +0100 <lambdabot> • Perhaps you meant one of these:
2022-02-08 17:04:07 +0100 <merijn> :t map putStrLn ["foo", "bar"]
2022-02-08 17:04:08 +0100 <lambdabot> [IO ()]
2022-02-08 17:04:31 +0100 <merijn> olle: IO actions are just values like anything else and you can put them in data structures, pass them around, whatever
2022-02-08 17:04:47 +0100 <ski> could be mutable queue, could be immutable
2022-02-08 17:04:51 +0100 <ski> whichever you want
2022-02-08 17:04:56 +0100 <olle> I'm looking for ways to extend the "functional core" in different ways, that's my motivation
2022-02-08 17:05:06 +0100 <olle> Without tagless final or free monad
2022-02-08 17:05:36 +0100 <olle> ski: Well, if the queue is immutable, I'd have to include it in the function signature somehow, or pass it around. Well, maybe that's OK...
2022-02-08 17:06:22 +0100 <ski> seeing as we have almost no idea of what you're wanting to do, we can't really give much specific advice on such things
2022-02-08 17:06:25 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-08 17:06:43 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-02-08 17:07:17 +0100 <olle> Right
2022-02-08 17:07:31 +0100 <ski> olle : i'm still having trouble understanding "Sooo, say I have print \"foo\" and wrap it inside a lambda instead. Can I remove the IO monad from that function then?"
2022-02-08 17:07:51 +0100 <olle> ski: The difference between do print "bla" vs \x -> do print "bla"
2022-02-08 17:08:06 +0100 <ski> one is a function, the other isn't
2022-02-08 17:08:16 +0100 <ski> or, if you prefer, one is parameterized, the other isn't
2022-02-08 17:09:03 +0100 <ski> you can't go from `X -> IO Y' to `X -> Y', anyway, if that's what you're asking
2022-02-08 17:09:27 +0100 <olle> ski: Why not?
2022-02-08 17:09:57 +0100 <ski> because all functions of type `IO Y -> Y' are constant
2022-02-08 17:10:41 +0100 <olle> Not sure what that means, sorry
2022-02-08 17:10:42 +0100 <ski> you can't compute an `Y' from a recipe for how to interact with the OS to obtain an `Y'
2022-02-08 17:10:56 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2022-02-08 17:11:08 +0100 <ski> you need to actually, you know, perform the I/O interaction, to arrive at the `Y'
2022-02-08 17:11:10 +0100 <olle> You don't have void or nil or unit in Haskell?
2022-02-08 17:11:18 +0100 <ski> sure, we have `()'
2022-02-08 17:11:26 +0100 <ski> @type putStrLn
2022-02-08 17:11:27 +0100 <lambdabot> String -> IO ()
2022-02-08 17:11:56 +0100 <olle> Hm hm hm
2022-02-08 17:12:06 +0100 <ski> the only way to perform the I/O action is to define `main' to be that action (or to make it a part of `main') .. or, in the interactor, to enter the action there for it to execute
2022-02-08 17:12:33 +0100 <ski> execution can't be triggered from evaluation (but the opposite happens all the time)
2022-02-08 17:12:47 +0100 <olle> Sure, main will have IO, but a subfunction might go from X -> IO Y to X -> Y if that specific IO interaction is put in that queue instead, was my idea.
2022-02-08 17:13:35 +0100 <ski> (more specifically, I/O execution. execution of many other types of actions can be triggered from evaluation. e.g. `Maybe',`[]',`State s',`Either e',..)
2022-02-08 17:13:39 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-08 17:14:05 +0100 <ski> olle : well, you can for sure do `X -> Queue (IO Y)' or somesuch
2022-02-08 17:14:38 +0100 <polyphem> X -> STM Y
2022-02-08 17:14:44 +0100 <olle> STM?
2022-02-08 17:14:50 +0100 <olle> Statement?
2022-02-08 17:14:55 +0100 <ski> (or, *if* `Y' is recursive, incorporates a `Queue (IO Y)' in one case, then, sure, you can do `X -> Y')
2022-02-08 17:15:00 +0100 <polyphem> SoftwareTransactionalMemory
2022-02-08 17:15:04 +0100 <ski> Software-Transactional Memory
2022-02-08 17:16:08 +0100 <olle> Checking...
2022-02-08 17:16:19 +0100 <ski> `STM' is if you'd like to use concurrent mutable data structures, with multiple threads, with transaction that can rollback or commit
2022-02-08 17:16:30 +0100 <olle> Ah
2022-02-08 17:16:47 +0100 <ski> (`IO' can also do that, except for the transaction part)
2022-02-08 17:17:05 +0100 <polyphem> they give you Transactional Queues for yoir "internal IO Actions"
2022-02-08 17:17:07 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-08 17:17:07 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-08 17:17:07 +0100wroathe(~wroathe@user/wroathe)
2022-02-08 17:17:16 +0100 <polyphem> *your*
2022-02-08 17:17:43 +0100yuvi(~uv125@192.54.96.185)
2022-02-08 17:17:43 +0100 <ski> heh, "internal IO Actions" does sound a bit confusing :)
2022-02-08 17:17:48 +0100 <ski> re yuvi
2022-02-08 17:18:24 +0100 <yuvi> what up haskell irc
2022-02-08 17:18:27 +0100 <ski> any progress with `startsWith' ?
2022-02-08 17:18:34 +0100shapr`(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-02-08 17:18:35 +0100 <yuvi> yes!
2022-02-08 17:18:46 +0100 <yuvi> i can share my solution
2022-02-08 17:18:51 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 17:18:52 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2022-02-08 17:19:23 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 17:19:24 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 17:20:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-08 17:21:13 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2022-02-08 17:21:29 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 17:22:29 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2022-02-08 17:22:29 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 17:22:51 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.4)
2022-02-08 17:23:02 +0100 <yuvi> hmm how do i share a multiline function here
2022-02-08 17:23:07 +0100 <ski> @where paste
2022-02-08 17:23:07 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2022-02-08 17:23:46 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 17:24:23 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-08 17:24:53 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2022-02-08 17:25:01 +0100 <polyphem> ski: s/internal/unexecuted|prepared/ IO Actions
2022-02-08 17:25:28 +0100razetime(~quassel@49.207.209.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-08 17:25:53 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 17:25:59 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-08 17:26:25 +0100 <yuvi> https://paste.tomsmeding.com/IgquexPc
2022-02-08 17:28:12 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-08 17:29:01 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr)
2022-02-08 17:32:15 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 17:32:52 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 17:33:22 +0100 <c_wraith> yuvi: you have a bunch of unnecessary parens in there. (const True) is the only thing that actually needs them
2022-02-08 17:34:16 +0100 <boxscape_> and (x : xs)
2022-02-08 17:35:01 +0100 <Inst> did yuvi solve the foldr isPrefix problem yet?
2022-02-08 17:35:12 +0100 <yuvi> Inst: yes!
2022-02-08 17:35:18 +0100 <Inst> how did you do it?
2022-02-08 17:35:31 +0100 <yuvi> i linked my solution above, can u see it?
2022-02-08 17:35:40 +0100mvr_(uid36976@id-36976.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-08 17:36:02 +0100 <yuvi> i fold over the prefix, and use the const Tru function to "Accumulate" bools
2022-02-08 17:37:27 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 17:37:35 +0100 <Inst> you're using recursion
2022-02-08 17:37:49 +0100 <c_wraith> one convention thing: the name "go" is usually used for a recursive helper, but "go" isn't recursive
2022-02-08 17:37:52 +0100 <Inst> go c acc (x : xs)
2022-02-08 17:37:52 +0100 <Inst> | c == x = acc xs
2022-02-08 17:38:16 +0100 <c_wraith> Inst: that's not recursive. It's more like calling a continuation
2022-02-08 17:38:18 +0100 <yuvi> what's the recursion
2022-02-08 17:38:23 +0100 <Inst> i see
2022-02-08 17:39:05 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 17:40:01 +0100 <Inst> anyways my solution wouldn't have worked
2022-02-08 17:40:09 +0100 <Inst> type system would have stopped me
2022-02-08 17:40:27 +0100 <boxscape_> would the solution have been correct if you had inserted unsafeCoerce?
2022-02-08 17:40:39 +0100k8yun_(~k8yun@24.244.29.114)
2022-02-08 17:40:53 +0100 <yuvi> i do appreciate the help
2022-02-08 17:42:35 +0100monochromsuggests "goter" meaning "the go-to helper" meaning "this is the generic name you go to for helper functions when you can't think of a specific name"
2022-02-08 17:43:33 +0100 <yuvi> gotcha
2022-02-08 17:43:47 +0100 <yuvi> c u guys later
2022-02-08 17:43:49 +0100yuvi(~uv125@192.54.96.185) (Quit: WeeChat 2.8)
2022-02-08 17:44:15 +0100k8yun(~k8yun@198-48-158-40.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2022-02-08 17:46:36 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2022-02-08 17:47:43 +0100dajoer(~david@user/gvx) (Quit: leaving)
2022-02-08 17:49:12 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-02-08 17:50:55 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-02-08 17:51:23 +0100alp(~alp@user/alp) (Ping timeout: 256 seconds)
2022-02-08 17:52:10 +0100k8yun_(~k8yun@24.244.29.114) (Changing host)
2022-02-08 17:52:10 +0100k8yun_(~k8yun@user/k8yun)
2022-02-08 17:52:49 +0100jumper149(~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.3)
2022-02-08 17:53:56 +0100Guest72(~Guest72@27.56.151.17) (Quit: Client closed)
2022-02-08 17:56:24 +0100Akiva(~Akiva@user/Akiva)
2022-02-08 17:56:37 +0100slack5035(~slack1256@191.126.99.83)
2022-02-08 17:58:40 +0100slack1256(~slack1256@181.42.40.211) (Ping timeout: 256 seconds)
2022-02-08 18:00:00 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 18:00:24 +0100shapr`shapr
2022-02-08 18:03:49 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr) (Ping timeout: 240 seconds)
2022-02-08 18:05:00 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-08 18:05:12 +0100emf(~emf@2601:602:9400:8f0:435:b386:5ad4:6eb2)
2022-02-08 18:07:22 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection)
2022-02-08 18:08:25 +0100ubert(~Thunderbi@2a02:8109:9880:303c:947b:22d6:c94:9589) (Remote host closed the connection)
2022-02-08 18:12:02 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-08 18:12:02 +0100Merfont(~Kaiepi@156.34.47.253) (Quit: Leaving)
2022-02-08 18:12:18 +0100Kaiepi(~Kaiepi@156.34.47.253)
2022-02-08 18:14:09 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:15:57 +0100unyu(~pyon@user/pyon) (Ping timeout: 240 seconds)
2022-02-08 18:16:43 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-02-08 18:18:12 +0100unyu(~pyon@user/pyon)
2022-02-08 18:19:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:19:21 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:19:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:19:43 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:19:50 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:20:05 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:20:06 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr)
2022-02-08 18:20:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:20:26 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:20:33 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:20:48 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:20:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:21:09 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:21:16 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:21:31 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:21:38 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:21:52 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:22:00 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:22:14 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:22:21 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:22:36 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:22:44 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:22:59 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:23:05 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:23:12 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-08 18:23:20 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:23:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:23:43 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:23:51 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:24:06 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:24:14 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:24:28 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:24:35 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:24:49 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:24:57 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:25:11 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:25:19 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:25:23 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-02-08 18:25:25 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-08 18:25:32 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:25:40 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:25:54 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:26:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:26:16 +0100mncheckm(~mncheck@193.224.205.254)
2022-02-08 18:26:18 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:26:26 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:26:40 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:26:48 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:27:02 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:27:10 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:27:24 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:27:31 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:27:46 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:27:51 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 18:27:54 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:28:09 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:28:16 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:28:31 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:28:37 +0100mncheck(~mncheck@193.224.205.254) (Ping timeout: 240 seconds)
2022-02-08 18:28:39 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:28:40 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 18:28:53 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 18:30:59 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 18:31:13 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 18:31:21 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-08 18:31:52 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2)
2022-02-08 18:34:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection)
2022-02-08 18:37:03 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli)
2022-02-08 18:37:03 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 18:37:22 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 18:37:40 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 18:37:52 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-08 18:37:58 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 18:39:21 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-02-08 18:42:58 +0100vysn(~vysn@user/vysn)
2022-02-08 18:45:01 +0100Jing(~hedgehog@240e:390:7c53:a7e1:7c1f:c247:2b7b:d046) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-08 18:47:08 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr) (Quit: leaving)
2022-02-08 18:50:40 +0100fendor(~fendor@91.141.68.59.wireless.dyn.drei.com) (Remote host closed the connection)
2022-02-08 18:51:59 +0100MatthiasG2(~matthias@i6DFA026C.versanet.de)
2022-02-08 18:52:32 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 18:54:21 +0100alp(~alp@user/alp)
2022-02-08 18:56:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 18:57:32 +0100jollygood2(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-02-08 18:59:03 +0100olle(~olle@p5784fa92.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-02-08 19:00:21 +0100emf_(~emf@2620:10d:c090:400::5:57ea)
2022-02-08 19:03:57 +0100emf(~emf@2601:602:9400:8f0:435:b386:5ad4:6eb2) (Ping timeout: 240 seconds)
2022-02-08 19:04:37 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-08 19:06:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 19:07:58 +0100 <boxscape_> Would it be possible to extend Haskell's type system so you could write `fix :: (a -> a) -> a; fix = \f -> (\x -> f (unsafeCoerce x x)) (\x -> f (unsafeCoerce x x))` without the unsafeCoerce?
2022-02-08 19:08:15 +0100 <boxscape_> In the spirit of broadening the overlap between correct programs and programs that typecheck
2022-02-08 19:09:19 +0100 <boxscape_> (Alternatively, is there some weird way to do it with the existing type system?)
2022-02-08 19:10:34 +0100 <ski> boxscape_ : you can use `newtype Santa a = MkSanta (Santa a -> a)'
2022-02-08 19:10:44 +0100 <boxscape_> ah, right, newtypes, that makes sense
2022-02-08 19:10:53 +0100 <boxscape_> is there a reason it's called Santa?
2022-02-08 19:11:32 +0100 <monochrom> A system that allows infinite types will accept it. Essentially you need a type S such that S = S->a, which is Santa above.
2022-02-08 19:11:39 +0100 <boxscape_> okay
2022-02-08 19:11:54 +0100 <monochrom> TaPL has a chapter and a toy language that allows infinite types (it says "equirecursive types").
2022-02-08 19:12:08 +0100 <boxscape_> Ah, I've been meaning to continue reading that
2022-02-08 19:12:15 +0100 <monochrom> whereas using a newtype wrapper is "isorecursive types" in TaPL.
2022-02-08 19:12:22 +0100 <ski> boxscape_ : "Löb’s Theorem: Santa Claus and Provability" by XOR's Hammer in 2008-08-13 at <https://xorshammer.com/2008/08/13/loebs-theorem/>
2022-02-08 19:12:30 +0100 <boxscape_> thanks
2022-02-08 19:13:20 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 19:13:43 +0100Codaraxis(~Codaraxis@user/codaraxis)
2022-02-08 19:13:53 +0100 <boxscape_> I suppose fix's type does look similar to Löb’s theorem
2022-02-08 19:14:28 +0100 <ski> boxscape_ : you can also do it, without extra fluff, in `ocaml -rectypes' (which enables unrestricted equi-recursive types)
2022-02-08 19:14:38 +0100 <boxscape_> interesting
2022-02-08 19:15:11 +0100 <ski> (without `-rectypes', the cycles have to go through at least one object type. this is used in the OO system, to express "binary methods" and "clone methods")
2022-02-08 19:15:22 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 19:15:35 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 19:16:31 +0100 <boxscape_> part of what I was wondering is if you can do this without making your language inconsistent or something - looks like the main problem is harder type checking/inference
2022-02-08 19:16:46 +0100 <ski> "inconsistent", in which sense ?
2022-02-08 19:16:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-08 19:17:05 +0100 <ski> equi-recursive types isn't really that much harder to check/inder
2022-02-08 19:17:34 +0100 <ski> the issue is the number of false positives. instead of getting a type error for when you write nonsense, you'll often instead get crazy cyclic types inferred
2022-02-08 19:17:52 +0100 <boxscape_> hm, okay. I was taking that from https://en.wikipedia.org/wiki/Recursive_data_type#Equirecursive_types which says "Algorithmic problems such as type checking and type inference are more difficult for equirecursive types as well"
2022-02-08 19:17:52 +0100 <boxscape_> But yeah weird type errors make sense
2022-02-08 19:18:01 +0100 <monochrom> Yeah consider the typo in "if b then x else [x,x]"
2022-02-08 19:18:12 +0100 <boxscape_> I was thinking "inconsistent" in the sense of "let's say we add this to agda, could you prove false"
2022-02-08 19:18:39 +0100 <boxscape_> or weird types rather
2022-02-08 19:18:46 +0100 <dolio> fix lets you prove false.
2022-02-08 19:18:46 +0100 <ski> `fix' allows you to prove falsum, sure
2022-02-08 19:18:56 +0100 <boxscape_> ah, hm, right
2022-02-08 19:19:11 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 19:20:05 +0100 <monochrom> S=S->a makes S a non-well-founded recursive type. Agda allows well-founded recursive types only, equi or iso.
2022-02-08 19:20:19 +0100 <boxscape_>  I see
2022-02-08 19:20:43 +0100skifixes it to `S = (S -> a) -> a'
2022-02-08 19:22:09 +0100little_mac(~little_ma@2601:410:4300:3ce0:c1b4:4e62:c0e4:304a)
2022-02-08 19:22:10 +0100 <dolio> Agda doesn't allow that, either.
2022-02-08 19:22:39 +0100 <ski> yea, i know ;)
2022-02-08 19:22:50 +0100 <monochrom> "fixes" :)
2022-02-08 19:23:25 +0100 <ski> heh, that was even not a conscious reference
2022-02-08 19:23:57 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 19:24:19 +0100MajorBiscuit(~MajorBisc@c-001-001-054.client.tudelft.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-08 19:25:21 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 19:27:15 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-08 19:28:06 +0100 <dolio> You can show some types satisfy that with extra assumptions, though.
2022-02-08 19:28:18 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e)
2022-02-08 19:28:56 +0100 <dolio> Well, some without extra assumptions, but they're pretty boring.
2022-02-08 19:30:13 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-08 19:31:51 +0100emf_(~emf@2620:10d:c090:400::5:57ea) (Quit: emf_)
2022-02-08 19:32:23 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-08 19:32:29 +0100DNH(~DNH@2a02:8108:1100:16d8:6197:e762:8e5b:d7b9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-08 19:32:34 +0100emf(~emf@2620:10d:c090:400::5:57ea)
2022-02-08 19:33:30 +0100safinaskar(~quassel@109.252.91.116)
2022-02-08 19:33:48 +0100 <safinaskar> why "cabal v2-install" doesn't work as before anymore?
2022-02-08 19:34:14 +0100 <safinaskar> in past i typed "cabal v2-install --lib some-library-name"
2022-02-08 19:34:16 +0100DNH(~DNH@2a02:8108:1100:16d8:30a6:9d4e:5fe4:7e50)
2022-02-08 19:34:18 +0100 <safinaskar> (for example, Earley)
2022-02-08 19:34:39 +0100 <safinaskar> and then i imported such lib in .hs file and compiled the file using "ghc File.hs"
2022-02-08 19:34:44 +0100 <safinaskar> now this doesn't work
2022-02-08 19:34:46 +0100 <safinaskar> why?
2022-02-08 19:34:54 +0100 <monochrom> works for me.
2022-02-08 19:35:10 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-08 19:35:35 +0100 <[exa]> safinaskar: what's the error you get there?
2022-02-08 19:35:36 +0100 <geekosaur> define "doesn't work"
2022-02-08 19:36:13 +0100 <geekosaur> also, using --lib is overriding cabal-install's safeies and you can end up with e.g. incompatible versions of packages in the same environment file,which can cause build conflicts or even failures
2022-02-08 19:36:15 +0100 <[exa]> safinaskar: anyway you might need to select the available packages manually, e.g. `ghc -package Earley File.hs`
2022-02-08 19:36:19 +0100 <geekosaur> *safeties
2022-02-08 19:36:36 +0100 <safinaskar> [exa]: geekosaur: "Could not find module ‘Text.Earley’"
2022-02-08 19:37:00 +0100 <monochrom> No I don't think --lib overrides safety.
2022-02-08 19:38:44 +0100 <monochrom> Oh haha agda has a --type-in-type flag?
2022-02-08 19:38:55 +0100 <dolio> Yeah.
2022-02-08 19:39:03 +0100 <safinaskar> [exa]: this doesn't work, too
2022-02-08 19:39:04 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-08 19:39:21 +0100 <safinaskar> [exa]: now i see "<command line>: cannot satisfy -package Earley"
2022-02-08 19:39:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Ping timeout: 250 seconds)
2022-02-08 19:39:52 +0100 <safinaskar> ghc 9.2.1
2022-02-08 19:39:59 +0100 <dolio> It has flags for not checking positivity, too.
2022-02-08 19:40:15 +0100 <safinaskar> cabal 3.6.2.0
2022-02-08 19:40:33 +0100 <safinaskar> i can send exact dockerfile i used to build this environment if this helps
2022-02-08 19:42:43 +0100 <dolio> Just installing a lib doesn't mark it available for use with raw GHC.
2022-02-08 19:42:56 +0100ehammarstrom(~ehammarst@62-20-203-39-no182.tbcn.telia.com)
2022-02-08 19:43:12 +0100 <dolio> Possibly in the past it might have generated a hidden file that did so, but I recall people complaining a lot about that.
2022-02-08 19:43:40 +0100 <geekosaur> --lib does in fact create a package-env file still
2022-02-08 19:44:10 +0100 <safinaskar> monochrom: moreover, idris 2 has some stupid unsoundness issue, which is always present. I don't remember exactly this issue. Either there is always type-in-type, either they don't have termination checker. It seems the first
2022-02-08 19:45:06 +0100cosimone(~user@93-47-228-151.ip115.fastwebnet.it) (Remote host closed the connection)
2022-02-08 19:45:10 +0100ehammarstrom(~ehammarst@62-20-203-39-no182.tbcn.telia.com) (Remote host closed the connection)
2022-02-08 19:45:43 +0100 <safinaskar> but "-package" supposed to work, right?!
2022-02-08 19:46:14 +0100bjourne(~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) (Quit: Konversation terminated!)
2022-02-08 19:47:17 +0100 <EvanR> idris historically appeared to have type in type unless you knew how to read between the lines of the repl
2022-02-08 19:47:40 +0100 <geekosaur> -package can only work if ghc has access to the package database. neither stack nor cabal gives raw ghc/ghci that access
2022-02-08 19:47:51 +0100 <geekosaur> package environment files can be used with cabal to simulate it
2022-02-08 19:47:57 +0100 <EvanR> I would have thought integer division by zero causing a hard crash was a more important unsoundness issue
2022-02-08 19:48:00 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-02-08 19:48:19 +0100vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2022-02-08 19:52:00 +0100mmhat(~mmh@55d4a370.access.ecotel.net)
2022-02-08 19:54:37 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 19:54:41 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-02-08 19:55:29 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-02-08 19:55:49 +0100Pickchea(~private@user/pickchea)
2022-02-08 19:56:50 +0100shailangsa(~shailangs@host86-185-98-37.range86-185.btcentralplus.com) (Remote host closed the connection)
2022-02-08 19:58:28 +0100 <safinaskar> i think rust is absolutely always than haskell, even for writting provers. i can say why i think so, if you want
2022-02-08 19:58:38 +0100 <kuribas> I think the Type in Type issue is being addressed now...
2022-02-08 19:58:42 +0100 <kuribas> in idris.
2022-02-08 19:59:31 +0100 <kuribas> safinaskar: you missed an adjective.
2022-02-08 20:00:59 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 20:01:44 +0100 <kuribas> 3 `div` 0 =>
2022-02-08 20:01:44 +0100 <kuribas> let False = True in prim__div_Integer x y
2022-02-08 20:01:50 +0100 <kuribas> interesting :)
2022-02-08 20:02:26 +0100 <safinaskar> kuribas: oops
2022-02-08 20:02:36 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-02-08 20:02:38 +0100 <safinaskar> kuribas: *absolutely always better than haskell :)
2022-02-08 20:02:53 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-08 20:02:56 +0100 <kuribas> "better" is a bad qualifier...
2022-02-08 20:03:22 +0100 <boxscape_> safinaskar why are you using haskell?
2022-02-08 20:03:49 +0100 <safinaskar> boxscape_: :) good question
2022-02-08 20:04:07 +0100 <maerwald> rust is way more verbose... if you have chronic pain from RSI, you better not use it xD
2022-02-08 20:04:09 +0100 <kuribas> safinaskar: "safer"? "faster"? "easier to read"? "easier concurrency"? ...
2022-02-08 20:04:38 +0100 <dsal> I've still not managed to find something where rust makes my life better. I do keep meaning to try it again someday.
2022-02-08 20:05:07 +0100 <maerwald> dsal: migrate one of your C projects... that makes it very apparent
2022-02-08 20:05:17 +0100 <maerwald> I did and it was a bliss
2022-02-08 20:05:35 +0100 <dsal> I should do that, yeah. I surely have something lying around in C that I still care about. :)
2022-02-08 20:05:41 +0100 <Franciman> high five maerwald (but cautiously, so we don't get hurt)
2022-02-08 20:06:39 +0100 <monochrom> safinaskar: https://github.com/haskell/cabal/issues/7819
2022-02-08 20:06:47 +0100 <kuribas> EvanR: I'd think with fancy dependent types, you could prove the denominator nonzero...
2022-02-08 20:07:05 +0100 <maerwald> Franciman: I thought you left for that HVM :p
2022-02-08 20:07:23 +0100 <safinaskar> boxscape_: "why are you using haskell?" - currently i'm writting rust library for working with binary format apache avro. i'm missing haskell's GADTs, so now i am writting gadt-style avro implementation in haskell as an experiment. But I already got first problem: i have to use ugly singletons (i talked about my task yesterday here). So, this even further proves that rust is better than haskell. Yes, rust doesn't have GADTs, but in haskell GADTs are
2022-02-08 20:07:23 +0100 <safinaskar> not so useful either, because any suffentiently hard task will depend on singletons
2022-02-08 20:07:24 +0100 <kuribas> I am a bit done with haskell, in that it doesn't have much secrets left for me...
2022-02-08 20:07:27 +0100 <EvanR> kuribas, you could
2022-02-08 20:07:56 +0100 <EvanR> or you could ask the bot to divide by zero without doing that and it crashes xD
2022-02-08 20:08:24 +0100 <kuribas> err :total div => Prelude.Num.div is total
2022-02-08 20:08:24 +0100 <EvanR> I guess if you have the phD to program with dependent types, you wouldn't do something so dumb
2022-02-08 20:08:26 +0100 <DigitalKiwi> ugh and i thought haskell was supposed to be safe!
2022-02-08 20:08:37 +0100 <Franciman> maerwald: i don't code anymore these days
2022-02-08 20:08:39 +0100 <EvanR> kuribas, yeah it was listed as total so things could compile
2022-02-08 20:08:44 +0100 <maerwald> Franciman: smart choice
2022-02-08 20:08:45 +0100 <DigitalKiwi> letting you divide by zero is gross
2022-02-08 20:08:51 +0100 <Franciman> so i have more time left for saying bullshit
2022-02-08 20:08:56 +0100 <maerwald> xD
2022-02-08 20:08:57 +0100 <kuribas> EvanR: I don't think idris is meant as a proof system.
2022-02-08 20:09:01 +0100 <Franciman> and laughing at the lack of a formal semantics of haskell in the standard
2022-02-08 20:09:07 +0100 <Franciman> standard ML is centuries ahead
2022-02-08 20:09:22 +0100 <kuribas> EvanR: I mean, writing programs as proof, rather than the other way.
2022-02-08 20:09:22 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Read error: Connection reset by peer)
2022-02-08 20:09:25 +0100 <maerwald> There's also CakeML
2022-02-08 20:09:29 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-08 20:09:31 +0100 <Franciman> fancy
2022-02-08 20:09:39 +0100 <EvanR> kuribas, well, regardless any time someone proves false, it was listed as a bug and presumably needed to be fixed (except for this)
2022-02-08 20:09:43 +0100 <boxscape_> safinaskar If I'm understanding your argument correctly it's "rust doesn't have a feature I like, Haskell does have that feature but it's limited, therefore rust is better"?
2022-02-08 20:10:08 +0100 <maerwald> yeah, Haskell was never a choice for projects like everest or seL4 linux I think
2022-02-08 20:10:32 +0100 <maerwald> but I usually don't code crypto libraries or kernels, so...
2022-02-08 20:11:12 +0100 <maerwald> it's like cutting an apple with a samurai sword
2022-02-08 20:11:17 +0100 <kuribas> safinaskar: rust doesn't have singletons, does it?
2022-02-08 20:11:34 +0100 <safinaskar> boxscape_: yes. and this argument should be combined with other rust arguments, such as "faster", "bigger community" etc
2022-02-08 20:11:54 +0100 <safinaskar> kuribas: doesn't. and this is good, because singletons are ugly
2022-02-08 20:12:07 +0100 <maerwald> rust has the advantage that it was kickstarted by a large company
2022-02-08 20:12:10 +0100 <kuribas> safinaskar: I agree about that. Not about "I have to use singletons".
2022-02-08 20:12:31 +0100 <EvanR> was it really, which company?
2022-02-08 20:12:35 +0100 <safinaskar> maerwald: what is RSI?
2022-02-08 20:12:46 +0100 <ski> Repetetive Stress Injury
2022-02-08 20:12:59 +0100 <monochrom> maerwald: I think sword makers cut toilet paper with swords to show off. :)
2022-02-08 20:13:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-08 20:13:06 +0100 <maerwald> EvanR: Mozilla research?
2022-02-08 20:13:11 +0100 <kuribas> "any suffentiently hard task will depend on singletons" <= Apparently I never did a hard task in haskell :)
2022-02-08 20:13:23 +0100 <maerwald> EvanR: and not in order to waste money, but to use it
2022-02-08 20:13:32 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-02-08 20:13:54 +0100 <kuribas> safinaskar: it looks like you are falling in the fancy type level haskell trap.
2022-02-08 20:14:15 +0100 <safinaskar> kuribas: "safer", "faster", "easier to read" and more productive. rust is simply better suited for any task, even for provers
2022-02-08 20:14:24 +0100 <EvanR> :thonk:
2022-02-08 20:14:49 +0100 <monochrom> To reduce RSI, please stop using IRC. :)
2022-02-08 20:14:54 +0100ChanServ+o geekosaur
2022-02-08 20:14:56 +0100 <kuribas> safinaskar: I hardly know any rust, I only looked at some parser library, and it looked much less neat than in haskell.
2022-02-08 20:15:33 +0100 <kuribas> safinaskar: I also wonder how it could be "safer"?
2022-02-08 20:15:46 +0100 <monochrom> kuribas: The hardware is a singleton. I would think every program has to depend on that singleton. :)
2022-02-08 20:15:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
2022-02-08 20:16:05 +0100 <EvanR> we need to put together yet another giant addictive profitable MMORPG. Use haskell or rust??
2022-02-08 20:16:10 +0100 <kuribas> monochrom: I think he refers to the "singleton" library, or not?
2022-02-08 20:16:44 +0100 <EvanR> the universe is a singleton, unless you use many worlds
2022-02-08 20:17:04 +0100 <geekosaur> evenif you use many worlds, unless you're using some popular misconception of it
2022-02-08 20:17:05 +0100Kaiepi(~Kaiepi@156.34.47.253) (Remote host closed the connection)
2022-02-08 20:17:34 +0100Kaiepi(~Kaiepi@156.34.47.253)
2022-02-08 20:17:45 +0100 <monochrom> I can actually mean it to be serious. A week ago we had a discussion on how much we need global variables. Well, we still need them for coordinating multiple threads that try to access the same piece of hardware, for example we have only one GPU (usually) and its API exposes a scarce resource...
2022-02-08 20:18:23 +0100 <EvanR> well you need a shared variable for locking access
2022-02-08 20:18:53 +0100cynomys(~cynomys@user/cynomys)
2022-02-08 20:19:13 +0100 <EvanR> or multiple if the clients form a hierarchy
2022-02-08 20:19:41 +0100 <monochrom> w00t we need a plural of singetons!
2022-02-08 20:19:52 +0100 <EvanR> a multiton
2022-02-08 20:20:07 +0100 <boxscape_> "singletons" is already in plural form
2022-02-08 20:20:15 +0100 <DigitalKiwi> ty boxscape_
2022-02-08 20:20:15 +0100 <monochrom> "it's singletons all the way down"
2022-02-08 20:21:59 +0100k8yun_(~k8yun@user/k8yun) (Quit: Leaving)
2022-02-08 20:23:41 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2) (Quit: Client closed)
2022-02-08 20:23:53 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2)
2022-02-08 20:25:07 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 20:25:26 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-08 20:27:35 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 20:28:26 +0100cosimone(~user@93-47-228-151.ip115.fastwebnet.it)
2022-02-08 20:29:43 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 20:32:01 +0100raym(~raym@user/raym) (Quit: kernel update, rebooting...)
2022-02-08 20:33:19 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-02-08 20:33:54 +0100 <safinaskar> (i am writting big rant why rust is better than haskell. i will show it when it is done. want nearly 5 mins)
2022-02-08 20:34:34 +0100 <geekosaur> you can send it somewhere other than #haskell
2022-02-08 20:34:55 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-08 20:35:00 +0100 <geekosaur> this is what blogs arefor
2022-02-08 20:37:11 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Remote host closed the connection)
2022-02-08 20:37:43 +0100 <Inst> thanks @yuvi
2022-02-08 20:37:45 +0100 <Inst> ugh, he's gone
2022-02-08 20:37:52 +0100 <EvanR> clearly the only way forward is to design mortal kombat representations of rust and haskell and have a tournament
2022-02-08 20:37:55 +0100 <Inst> and yeah, that's extremely pretty
2022-02-08 20:38:07 +0100 <Inst> has to be coded in C, though
2022-02-08 20:38:20 +0100 <Inst> erm, not C, prolog
2022-02-08 20:39:00 +0100 <EvanR> "why are we fighting" "no idea, ask safinaskar khan"
2022-02-08 20:39:59 +0100 <Inst> jeez, i'm such an imbecile
2022-02-08 20:40:00 +0100 <DigitalKiwi> does geekosaur have a problem with space key
2022-02-08 20:40:04 +0100 <Inst> i've never seen code like yuvi's before
2022-02-08 20:40:06 +0100 <geekosaur> yes
2022-02-08 20:40:28 +0100 <geekosaur> and randomly other keys that get duplicated
2022-02-08 20:40:38 +0100 <DigitalKiwi> :(
2022-02-08 20:40:52 +0100 <safinaskar> geekosaur: i don't have a blog. and don't want to create one
2022-02-08 20:41:02 +0100 <dolio> Well, this isn't your blog.
2022-02-08 20:41:06 +0100 <safinaskar> geekosaur: okey, i will send to #rust, too :)
2022-02-08 20:41:09 +0100 <geekosaur> so you feel entirely entitled to make noise here
2022-02-08 20:41:18 +0100 <safinaskar> i will send the rant using pastebin, don't worry
2022-02-08 20:41:27 +0100 <Inst> have you tried trolling the pythonistas instead?
2022-02-08 20:41:29 +0100raym(~raym@user/raym)
2022-02-08 20:42:05 +0100 <Inst> and safinaskar: Haskell actually does suck
2022-02-08 20:42:14 +0100econo(uid147250@user/econo)
2022-02-08 20:42:22 +0100 <geekosaur> but so does everything else
2022-02-08 20:42:37 +0100 <Inst> Haskell just has a very specific use-case, Haskellers like using Haskell for Haskell use-cases, etc
2022-02-08 20:42:45 +0100 <dsal> This channel has a weird attraction to people who think they understand things.
2022-02-08 20:42:52 +0100 <Inst> sorry
2022-02-08 20:42:53 +0100 <Inst> ;_;
2022-02-08 20:43:07 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-02-08 20:43:13 +0100 <monochrom> dsal: My decades of experience in physics and math channels, too.
2022-02-08 20:43:19 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-08 20:43:25 +0100 <EvanR> haskell is a general purpose programming language
2022-02-08 20:43:30 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-08 20:43:46 +0100 <EvanR> the opposite of "specific use-cases"
2022-02-08 20:43:47 +0100 <monochrom> People come in to say how they think they have trumped professional physicists or mathematicians.
2022-02-08 20:43:48 +0100 <geekosaur> every generalpurpose programming language has its Turing tarpits
2022-02-08 20:43:51 +0100 <dsal> I'm working at a company that uses Haskell as a general programming language for doing general stuff. There's nothing particularly haskell-specific of just about anything we do.
2022-02-08 20:44:12 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-08 20:44:55 +0100 <monochrom> Fortunately mostly "my physics/math is better than yours" rather than "my religion is better than physics/math".
2022-02-08 20:45:14 +0100 <Inst> haskell is primarily a highly pure functional programming language which is a popular haunt of academics to dump their new language extensions in
2022-02-08 20:45:18 +0100 <dsal> I bet those idiots don't even know how to divide by zero.
2022-02-08 20:45:21 +0100 <Inst> as GP, so, why is it so hard to do GUI?
2022-02-08 20:45:39 +0100 <dsal> If C is a general programming language, why is it so hard to do anything at all?
2022-02-08 20:46:11 +0100 <EvanR> it's "easy" to do GUI the same terrible way everyone else does
2022-02-08 20:46:13 +0100 <monochrom> Hey I know how to divide by zero in C! >:)
2022-02-08 20:46:25 +0100 <EvanR> which non-coincidentally, sucks
2022-02-08 20:46:44 +0100 <EvanR> though immediate mode gui might be easier even in haskell
2022-02-08 20:47:10 +0100 <geekosaur> we've had gtk2hs for a decade. I think it still works. and gi-gtk is still well maintained. it's just not Haskelly
2022-02-08 20:47:14 +0100 <Inst> okay, fine, i'm butchering the english language again, specific use-case includes stuff like availability of coders, performance constraints and specifications
2022-02-08 20:47:25 +0100 <Inst> i mean rust def beats haskell on performance for idiomatic code, no?
2022-02-08 20:47:31 +0100 <dsal> We hire people who've never programmed in Haskell and have them work on Haskell.
2022-02-08 20:47:38 +0100 <EvanR> depends on who runs the benchmarks
2022-02-08 20:47:48 +0100 <monochrom> Why argue?
2022-02-08 20:47:52 +0100 <Inst> dsal: what's your training time?
2022-02-08 20:47:54 +0100 <monochrom> Show data.
2022-02-08 20:48:17 +0100 <dsal> Most of what slows down our production code is dumb database access patterns. It doesn't matter what language you write a dumb database access pattern in.
2022-02-08 20:48:21 +0100 <davean> Inst: I'd say thats varied. Their idiom is messier. The type of code matters a LOT
2022-02-08 20:49:03 +0100geekosaur-o geekosaur
2022-02-08 20:49:03 +0100 <dsal> I had similar complaints when I worked in erlang. "C is so much faster!" Turns out, that actually wasn't even true given CPU loads, but the disk doesn't care about the accent of the request sender.
2022-02-08 20:49:26 +0100 <polyphem> monochrom: • No instance for (Show (data)) arising from a use of ‘Show Data’
2022-02-08 20:49:38 +0100 <monochrom> Heh
2022-02-08 20:49:56 +0100 <Inst> did safinaskar run away?
2022-02-08 20:50:01 +0100 <dsal> Inst: I spent significantly longer learning how to use google frameworks in languages I "knew" at Google than we spend getting people productive in Haskell at this organization, as far as I can tell.
2022-02-08 20:50:07 +0100 <davean> dsal: well, disks sorta care. They like deep queues if they're modern NVMe for example. How well async IO works matters a ton. Or if they're HDDs the opposite.
2022-02-08 20:50:24 +0100 <geekosaur> went off to troll #rust, I think
2022-02-08 20:51:28 +0100 <dsal> davean: This was a while back. We were waiting for seeks on spinning disks. The benchmark people claimed to care about was a single-core cheap developer laptop. The C alternative they tried *was* faster there, but by the time you got to two cores, the overall performance was better in erlang. It just used more CPU.
2022-02-08 20:52:12 +0100 <davean> dsal: right. I will say languages vary a TON by how well they interact with async IO though
2022-02-08 20:52:15 +0100 <dsal> Right now, most of our code is waiting on database transactions or external API calls. If the code runs faster, it's not going to matter. There are a few bits that are computationally expensive theoretically, but we can FFI those.
2022-02-08 20:52:22 +0100 <davean> thats only true of people doing ACTUAL high performance stuff
2022-02-08 20:52:26 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-08 20:52:28 +0100 <monochrom> Yay EvanR was right, "depends on who runs the benchmarks" :)
2022-02-08 20:52:30 +0100 <davean> and ... if you have to think about it, you aren't one of them
2022-02-08 20:52:40 +0100 <dsal> Right. It wasn't even a question.
2022-02-08 20:53:01 +0100 <davean> VERY few people are actually intimate with the HW enough to do real optimizations here
2022-02-08 20:54:16 +0100 <Inst> does it just prove i'm a noob
2022-02-08 20:54:34 +0100 <dsal> I don't think we were seeking proof.
2022-02-08 20:54:38 +0100 <davean> Inst: 99+% of profesionals in any given field are noobs, don't feel bad
2022-02-08 20:54:38 +0100 <Inst> if i still find this code incredibly beautiful / fascinating? https://paste.tomsmeding.com/IgquexPc
2022-02-08 20:55:03 +0100 <davean> Inst: you walk into a room of 1000 people well regarded in their field and you MIGHT find someone who knows WTF they're talking about
2022-02-08 20:55:15 +0100 <EvanR> dunno if this is still at thing but spec cpu benchmarks were this thing that cpu designers could target and win against other cpus. Whether or not this is stuff consumers would use cpus for.
2022-02-08 20:55:23 +0100 <EvanR> They shouldn't have put some functional problems in there xD
2022-02-08 20:55:24 +0100 <Inst> sturgeon's law, but i'm a blowhard, sort of like safinaskar except i post more often
2022-02-08 20:55:26 +0100 <EvanR> should've
2022-02-08 20:55:58 +0100 <davean> Noobs can do good work, they just have to have more goes at it
2022-02-08 20:55:59 +0100 <Inst> i guess it just means i really don't understand foldr ;_;
2022-02-08 20:56:15 +0100 <EvanR> foldr is the easy one if you're lazy
2022-02-08 20:56:21 +0100 <EvanR> foldl is easy if you're eager
2022-02-08 20:56:23 +0100 <Inst> f x (f x2... (f xz [])
2022-02-08 20:56:26 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-08 20:57:52 +0100 <EvanR> > foldr (\x _ -> x) 'z' (cycle "hello world ")
2022-02-08 20:57:53 +0100 <lambdabot> 'h'
2022-02-08 20:58:23 +0100 <Inst> that's this code, right?
2022-02-08 20:58:24 +0100 <Inst> https://en.wikipedia.org/wiki/Continuation-passing_style
2022-02-08 20:58:30 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-02-08 20:58:39 +0100 <Inst> i mean, re yuvi's code
2022-02-08 20:58:53 +0100 <EvanR> what
2022-02-08 21:00:30 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-08 21:00:48 +0100 <dsal> What is the type of `startsWith'`?
2022-02-08 21:01:24 +0100 <safinaskar> so, i finally wrote the rant. Rust is better than haskell for everything, even for provers. https://zerobin.net/?4ae40c2bc3cd95df#xogo0KqhD5e8oXCCSGvF0CeyijPjWWN3L824v4LzGFQ=
2022-02-08 21:01:42 +0100 <Inst> (Foldable t, Eq a) => t a -> [a] -> Bool
2022-02-08 21:01:42 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-08 21:01:48 +0100 <Inst> safinaskar: one liner: Haskell got me laid.
2022-02-08 21:02:55 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-08 21:03:12 +0100 <Inst> i guess he has nothing else to say
2022-02-08 21:03:14 +0100Instshrugs
2022-02-08 21:04:19 +0100 <ski> <yuvi> the type is startsWith :: String -> String -> Bool
2022-02-08 21:05:15 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 250 seconds)
2022-02-08 21:05:40 +0100 <kuribas> dsal: I think haskell is great for abstracting over the database.
2022-02-08 21:05:40 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-08 21:05:50 +0100 <kuribas> dsal: hence haskell is the fastest language :)
2022-02-08 21:06:50 +0100 <kuribas> dsal: for example, I wrote a (applicative) batching effect, which can easily collect results.
2022-02-08 21:06:57 +0100 <kuribas> dsal: it worked from the first time.
2022-02-08 21:07:20 +0100juhp(~juhp@128.106.188.82)
2022-02-08 21:07:25 +0100 <kuribas> good luck doing it in a "fast" language like C++.
2022-02-08 21:07:37 +0100 <EvanR> the first time at least
2022-02-08 21:08:16 +0100 <EvanR> would not be surprised if C++ already has Applicative xD
2022-02-08 21:09:22 +0100 <kuribas> everytime I look at java API's I cringe about the complexity.
2022-02-08 21:09:23 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-08 21:09:25 +0100 <kuribas> Like the cron library.
2022-02-08 21:09:36 +0100 <kuribas> And C++ must be even worse...
2022-02-08 21:09:42 +0100xff0x(~xff0x@2001:1a81:533f:ea00:4e49:abcb:9c05:c4b8) (Ping timeout: 260 seconds)
2022-02-08 21:10:06 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 21:11:33 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-02-08 21:11:58 +0100DNH(~DNH@2a02:8108:1100:16d8:30a6:9d4e:5fe4:7e50) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-08 21:12:30 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2022-02-08 21:14:30 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-08 21:14:56 +0100 <kuribas> EvanR: Why do you think you need a PHD to write idris? I believe that writing type level haskell is harder than DT idris.
2022-02-08 21:15:14 +0100 <EvanR> Inst, in case of infinite list your expansion is more like f x1 (f x2 (f x3 (... forcing you harder to understand laziness
2022-02-08 21:15:41 +0100 <EvanR> kuribas, semi joking
2022-02-08 21:15:42 +0100 <Inst> oh, i think yuvi's code is actually broken
2022-02-08 21:15:52 +0100 <Inst> well, no, it's not
2022-02-08 21:15:56 +0100 <EvanR> it's just everyone in the idris channel has phDs so
2022-02-08 21:16:19 +0100 <Inst> was briefly thinking about inf list situation, but that's not needed because the prefix is carrying the code
2022-02-08 21:16:21 +0100 <dolio> I don't have a PhD.
2022-02-08 21:16:30 +0100neurocyte0917090(~neurocyte@ip-094046064199.dynamic.medianet-world.de)
2022-02-08 21:16:30 +0100neurocyte0917090(~neurocyte@ip-094046064199.dynamic.medianet-world.de) (Changing host)
2022-02-08 21:16:30 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-02-08 21:16:36 +0100 <EvanR> really? surprised xD
2022-02-08 21:17:30 +0100 <monochrom> I have a PhD and I would rather study more type theories than write more type level Haskell. PhDs actually have good tastes for how to spend their time!
2022-02-08 21:17:59 +0100 <[exa]> my phd is literally about finding drugs and drawing pictures, does that still count?
2022-02-08 21:19:09 +0100 <EvanR> Inst, just in general for "understanding foldr"
2022-02-08 21:19:17 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-02-08 21:21:09 +0100 <kuribas> EvanR: I am in the channel too :)
2022-02-08 21:21:22 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-08 21:21:59 +0100 <monochrom> ooohhhh the true statement is "everyone in #idris thinks everyone else has a PhD"
2022-02-08 21:22:57 +0100 <EvanR> doctor. doctor. doctor. doctor doct....
2022-02-08 21:24:00 +0100 <EvanR> (n^2 / 2 handshakes)
2022-02-08 21:24:01 +0100 <safinaskar> monochrom: https://github.com/haskell/cabal/issues/7819 - thanks
2022-02-08 21:25:02 +0100nahcetan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-02-08 21:25:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-08 21:26:14 +0100 <int-e> EvanR: so half of the people are shaking hands with themselves?
2022-02-08 21:26:45 +0100 <[exa]> (n^2 / 2) even leaves us with a dangerous half-handshake
2022-02-08 21:26:58 +0100 <EvanR> 🤔
2022-02-08 21:27:05 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection)
2022-02-08 21:27:21 +0100 <janus> if a half-handshake is a fist bump, it could be safer
2022-02-08 21:27:41 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-08 21:27:47 +0100 <geekosaur> or elbow bump (covid y'know)
2022-02-08 21:27:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-08 21:28:31 +0100 <monochrom> Let's make an app for virtual AR handshakes over Zoom or something...
2022-02-08 21:28:42 +0100ski. o O ( half-duplex )
2022-02-08 21:28:55 +0100kuribas(~user@ptr-25vy0i8mlszjpxncneu.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-02-08 21:29:12 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 21:29:13 +0100 <monochrom> Introduce a thing analogous to avatars, but this time for hands. You can customize what your hand looks like.
2022-02-08 21:29:24 +0100 <monochrom> And make some of them NFTs bwhahahaha
2022-02-08 21:29:33 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-02-08 21:29:33 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-02-08 21:29:33 +0100finn_elijaFinnElija
2022-02-08 21:30:04 +0100geekosaurstill hasn't gotten used to fistbumps and now we got those elbow bumps, what next?
2022-02-08 21:30:21 +0100 <monochrom> eye winks
2022-02-08 21:30:24 +0100monochromwinks
2022-02-08 21:30:28 +0100 <EvanR> non-euclidean geometry bumps
2022-02-08 21:30:31 +0100 <safinaskar> kuribas: "Not about "I have to use singletons"." well, yesterday i presented this code here: https://paste.debian.net/1230075/ . i tried to use GADTs in them. and i understood that i need to use singletons to use GADTs in this code. the only other way is not to use GADTs, but then there is no advantages over rust
2022-02-08 21:30:33 +0100geekosaurblinks
2022-02-08 21:31:11 +0100 <EvanR> rust = haskell - GADTs huh
2022-02-08 21:31:13 +0100 <sshine> geekosaur, emojis with unicode zero-width joiners
2022-02-08 21:31:40 +0100 <monochrom> Oh, you could also consider saying "elbow bump" orally, as opposed to doing it...
2022-02-08 21:31:54 +0100 <int-e> monochrom: Hmm, what could NFTs be... Non-euclidean F? Tentacles
2022-02-08 21:33:25 +0100 <monochrom> Oh, you could also dab, for old time's sake. "old time". :)
2022-02-08 21:34:19 +0100 <janus> @package old-time was last revised by herbert in 2017
2022-02-08 21:34:19 +0100 <lambdabot> https://hackage.haskell.org/package/old-time was last revised by herbert in 2017
2022-02-08 21:35:39 +0100 <safinaskar> (by "singleton" i meant hackage package "singleton", of course)
2022-02-08 21:36:03 +0100 <sshine> when will Haskell get NFDTs? non-fungible data structures.
2022-02-08 21:36:25 +0100 <sshine> this is the post-ICO era, after all.
2022-02-08 21:36:32 +0100 <EvanR> this is weak sauce, I need the full list of terrible stuff in haskell. singletons is a dead horse
2022-02-08 21:37:16 +0100 <EvanR> sshine, linear types?
2022-02-08 21:37:24 +0100 <janus> EvanR: acid-state, unmaintained stack, partial functions in base, monad of no return still not implemented, mtl 2.3 dragging on for years
2022-02-08 21:37:49 +0100 <safinaskar> monochrom: "A week ago we had a discussion on how much we need global variables" - in rust (using crate "crossbeam"'s scoped threads) you don't need global variables even for synchronizing threads. You simply have local variables and access them from scoped threads (and rust forces you to use proper locking)
2022-02-08 21:37:57 +0100 <sshine> 💪-bump
2022-02-08 21:38:49 +0100 <EvanR> proper locking sounds relative to the developer
2022-02-08 21:39:10 +0100 <EvanR> an audio developer will see "proper locking" and exclaim improperness
2022-02-08 21:39:13 +0100 <hololeap> safinaskar: you do realize that a lot of haskell developers also use and enjoy rust, right? what are you trying to prove here?
2022-02-08 21:39:44 +0100 <[exa]> is there #haskell-rust ?
2022-02-08 21:40:31 +0100 <monochrom> is there #harsuksetll so haskell and rust blend together? >:)
2022-02-08 21:40:54 +0100 <janus> [exa]: there is https://github.com/koka-lang/koka/discussions
2022-02-08 21:41:14 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-02-08 21:41:33 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-08 21:41:54 +0100Inst(~delicacie@2601:6c4:4080:3f80:a48f:8f89:30fa:5637) (Ping timeout: 260 seconds)
2022-02-08 21:41:54 +0100xff0x(~xff0x@2001:1a81:533f:ea00:4e49:abcb:9c05:c4b8)
2022-02-08 21:42:06 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds)
2022-02-08 21:43:07 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 21:43:30 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 21:43:55 +0100 <ski> safinaskar : `read :: forall a. String -> Avro a; read @CString x = ...' -- huh ?
2022-02-08 21:45:00 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 21:46:02 +0100 <[exa]> janus: ok wow. :]
2022-02-08 21:46:59 +0100 <janus> i dunno if that is what you thought of when you said haskell-rust, but i would think it appeals to both since it has fancy typing but also in-place computation?
2022-02-08 21:47:47 +0100 <[exa]> no I was reacting to the other discussion there, but I had no idea koka exists and it looks pretty cool
2022-02-08 21:48:01 +0100 <[exa]> so yeah you hit it. :D
2022-02-08 21:48:12 +0100 <EvanR> functional reactive discussing
2022-02-08 21:49:27 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2022-02-08 21:49:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 21:49:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-08 21:50:39 +0100 <dminuoso> Also, "locking" for concorrent access is synchronization.
2022-02-08 21:51:52 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 21:52:56 +0100 <dminuoso> Ah I misinterpreted perhaps.
2022-02-08 21:54:20 +0100 <dminuoso> safinaskar: Also, you dont *need* global variables indeed. The actor model gets away without it, and is the predominant synchronization mechanism in most Erlang/OTP architectures
2022-02-08 21:54:56 +0100 <dminuoso> That way you can avoid the need of locking entirely
2022-02-08 21:58:20 +0100 <EvanR> software transactional memory is cool
2022-02-08 21:59:28 +0100 <dolio> You can just reject the entire premise that leads to 'needing' global variables in that argument.
2022-02-08 22:00:11 +0100 <safinaskar> ski: "read @CString x = ...' -- huh" - i tried to pattern match on "a" (note that "a :: Typ")
2022-02-08 22:00:31 +0100 <ski> safinaskar : that's not how parametric polymorphism works
2022-02-08 22:00:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-08 22:01:04 +0100 <ski> if you want to use GADTs to get around such problems, you must match on a GADT *input*
2022-02-08 22:02:40 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-08 22:03:01 +0100 <ski> (perhaps that input could be a defunctionalized continuation corresponding to `Avro a -> ...'. or perhaps it would just be some kind of selector describing which `a' you want to look for)
2022-02-08 22:03:05 +0100zebrag(~chris@user/zebrag)
2022-02-08 22:03:29 +0100 <ski> (or else, you could simply let `read' try to parse all the possible inputs, and compute the appropriate `a' (in result type) for each case)
2022-02-08 22:04:30 +0100 <safinaskar> EvanR: this article http://joeduffyblog.com/2010/01/03/a-brief-retrospective-on-transactional-memory/ proves that STM is bad thing (compared to usual mutexes, at least in imperative languages)
2022-02-08 22:04:46 +0100 <EvanR> interesting
2022-02-08 22:05:30 +0100 <EvanR> I'll have to see why it's wrong later
2022-02-08 22:05:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-08 22:06:10 +0100 <dibblego> over-confident, ill-informed opinions are why I fly aeroplanes
2022-02-08 22:06:11 +0100 <dolio> The author wasn't using Haskell.
2022-02-08 22:07:26 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-08 22:08:20 +0100foul_owl(~kerry@94.140.8.51) (Read error: Connection reset by peer)
2022-02-08 22:08:26 +0100 <safinaskar> dolio: yes. but he is aware about haskell. in this article http://joeduffyblog.com/2016/11/30/15-years-of-concurrency/ he says he have read simon jones article on haskell foundatations multiple times
2022-02-08 22:08:46 +0100Inst(~delicacie@2601:6c4:4080:3f80:6cf2:b906:2bc7:1ff9)
2022-02-08 22:08:50 +0100 <[exa]> I read "let's break stm atomics by doing precisely the first thing the stm atomics are not meant to do"
2022-02-08 22:08:51 +0100 <geekosaur> you can read something many times and still not understand it
2022-02-08 22:09:20 +0100 <[exa]> +1 ^, can confirm on myself. :D :D
2022-02-08 22:09:49 +0100 <safinaskar> why nobody argues about my rant? https://zerobin.net/?4ae40c2bc3cd95df#xogo0KqhD5e8oXCCSGvF0CeyijPjWWN3L824v4LzGFQ=
2022-02-08 22:10:47 +0100 <Inst> because people either agree with it or treat it as irrelevant
2022-02-08 22:10:57 +0100 <Inst> agree with particular points, i mean
2022-02-08 22:11:40 +0100ChanServ+o geekosaur
2022-02-08 22:11:42 +0100 <yushyin> #haskell is one of my channels with the most users on my ignore list, grows almost daily :)
2022-02-08 22:11:43 +0100DNH(~DNH@2a02:8108:1100:16d8:30a6:9d4e:5fe4:7e50)
2022-02-08 22:11:49 +0100 <Inst> :(
2022-02-08 22:12:41 +0100natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2022-02-08 22:13:28 +0100ski's never used `/ignore'
2022-02-08 22:13:41 +0100geekosaurdoesn't either
2022-02-08 22:14:14 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-08 22:15:02 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 250 seconds)
2022-02-08 22:16:39 +0100 <Franciman> safinaskar: i suggest you rephrase your rant's title as: why rust is more useful for me than haskell
2022-02-08 22:16:55 +0100 <Franciman> because othersmay have different needs than yours
2022-02-08 22:17:14 +0100 <Franciman> for example i personally never use cabal, nor stack
2022-02-08 22:17:16 +0100 <geekosaur> safinaskar has been openy confrontational every time they've come here. I'm quite certain a non-confrontational title is not acceptable
2022-02-08 22:17:28 +0100 <Franciman> so your point about cabal stack dicotomy doesn't stand for me
2022-02-08 22:17:57 +0100 <Franciman> second point, all the times i used cabal, i could use it with every package
2022-02-08 22:18:04 +0100 <Franciman> so again, the dicotomy has no issue for me
2022-02-08 22:18:21 +0100 <janus> it's not worth arguing about when anybody is smart enough to know how they're cutting corners in their arguments.
2022-02-08 22:18:31 +0100 <Inst> it's a troll
2022-02-08 22:18:34 +0100 <Franciman> regarding «i don't need types, so they are not useful»
2022-02-08 22:18:39 +0100 <Franciman> i don't need haskell types either
2022-02-08 22:18:41 +0100 <Inst> don't feed the troll, if you want to entertain safinaskar, query him
2022-02-08 22:18:42 +0100 <Franciman> but rust types are worse
2022-02-08 22:18:49 +0100sclvencourages people to not feed the troll
2022-02-08 22:18:49 +0100 <Franciman> i usually need idris or agda grade types
2022-02-08 22:18:50 +0100 <dolio> We don't need responses to this "rant".
2022-02-08 22:18:57 +0100sclvencourages people to talk about interesting things instead
2022-02-08 22:19:15 +0100 <dolio> Just like we don't need the rant.
2022-02-08 22:19:47 +0100 <[exa]> a nice ACM-formatted conference rant would do though
2022-02-08 22:20:46 +0100 <dsal> "proves that STM is a bad thing" is pretty bold as someone who relies on it in production for code that'd be *really* hard to write with "usual mutexes"
2022-02-08 22:21:09 +0100 <ph88> is there a GHC extension of library that allows sum types to be open for extension ? or something that mimics this behaviour ?
2022-02-08 22:21:27 +0100 <Inst> how about I troll safinaskar back?
2022-02-08 22:21:35 +0100 <geekosaur> notin channel
2022-02-08 22:21:36 +0100 <Inst> Rust is just C/C++ with better functional programming support
2022-02-08 22:21:39 +0100 <Inst> oh okay
2022-02-08 22:21:42 +0100 <ski> how about you don't
2022-02-08 22:22:13 +0100emf(~emf@2620:10d:c090:400::5:57ea) (Quit: emf)
2022-02-08 22:22:24 +0100 <sclv> ph88 there's a lot of libs for open sum tpes
2022-02-08 22:22:39 +0100 <Inst> i queried him, and he's not responding :(
2022-02-08 22:22:42 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 22:22:49 +0100 <sclv> https://hackage.haskell.org/package/fastsum
2022-02-08 22:24:26 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Ping timeout: 256 seconds)
2022-02-08 22:24:28 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-02-08 22:24:33 +0100 <sclv> ph88: I recommend reading data types a la carte for the basic idea https://webspace.science.uu.nl/~swier004/publications/2008-jfp.pdf
2022-02-08 22:24:45 +0100michalz(~michalz@185.246.204.75) (Remote host closed the connection)
2022-02-08 22:25:00 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-08 22:25:03 +0100foul_owl(~kerry@23.82.194.73)
2022-02-08 22:25:28 +0100bliminse(~bliminse@host86-188-36-166.range86-188.btcentralplus.com) (Quit: leaving)
2022-02-08 22:25:50 +0100 <ph88> thanks sclv
2022-02-08 22:25:51 +0100myShoggoth(~myShoggot@75.164.32.244)
2022-02-08 22:25:59 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2) (Quit: Client closed)
2022-02-08 22:26:10 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-02-08 22:26:59 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-08 22:27:16 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-08 22:28:28 +0100motherfsck(~motherfsc@user/motherfsck) (Quit: quit)
2022-02-08 22:28:56 +0100k8yun(~k8yun@user/k8yun)
2022-02-08 22:29:42 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2)
2022-02-08 22:31:36 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-08 22:31:42 +0100sektor|3(~kvirc@94.155.193.66)
2022-02-08 22:31:59 +0100bliminse(~bliminse@host86-188-36-166.range86-188.btcentralplus.com)
2022-02-08 22:33:25 +0100mmhat(~mmh@55d4a370.access.ecotel.net) (Ping timeout: 250 seconds)
2022-02-08 22:34:12 +0100 <Inst> why is Safinaskar not arguing with me about my counterrant?
2022-02-08 22:34:30 +0100 <dolio> We don't need updates about this, either.
2022-02-08 22:34:57 +0100sektor|2(~kvirc@87.227.175.182) (Ping timeout: 256 seconds)
2022-02-08 22:35:01 +0100 <Inst> in reality he's extremely reasonable about it, and I explained to him, "very few people really know Haskell, and most people go through the same process you do, then eventually they learn more Haskell and figure out their complaint was misplaced"
2022-02-08 22:37:11 +0100slack5035(~slack1256@191.126.99.83) (Remote host closed the connection)
2022-02-08 22:37:21 +0100 <geekosaur> Inst, please take this elsewhere
2022-02-08 22:37:46 +0100 <Inst> k, done
2022-02-08 22:39:29 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-08 22:40:17 +0100 <Franciman> i can understand people being annoyed to answer to imprecise critiques to haskell
2022-02-08 22:40:28 +0100 <Franciman> but i don't understand why actiely repeating: we don't need to answer
2022-02-08 22:40:39 +0100 <Franciman> do you prefer messages to be either:
2022-02-08 22:40:52 +0100 <Franciman> - technical questions about haskell
2022-02-08 22:40:58 +0100 <Franciman> - love messages on haskell
2022-02-08 22:41:00 +0100 <Franciman> ?
2022-02-08 22:41:13 +0100 <geekosaur> polite discussion is encouraged. responding to someone who's being actively confrontational is not
2022-02-08 22:41:14 +0100 <Franciman> asking to align
2022-02-08 22:42:02 +0100 <geekosaur> attitude has a lot to do with how what you say will be received
2022-02-08 22:42:12 +0100 <Franciman> say is the keyword :D
2022-02-08 22:42:17 +0100 <geekosaur> and it's not as if everyone here thinks haskell is flawless
2022-02-08 22:42:36 +0100 <Franciman> we write, don't say
2022-02-08 22:42:39 +0100 <Franciman> but ok, I understand
2022-02-08 22:45:26 +0100 <int-e> safinaskar: Lovely. "All these snags led to the realization that we direly needed a memory model for TM." (But basically they tried to do much more than what Haskell's STM offers... and mostly failed, so it can't be taken as evidence that Haskell's flavor of STM fails.)
2022-02-08 22:46:02 +0100 <[exa]> Franciman: cf. https://gist.github.com/quchen/5280339 :]
2022-02-08 22:46:02 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-02-08 22:46:11 +0100 <int-e> (AFAICS most of the failures can be blamed on those extensions)
2022-02-08 22:46:15 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-02-08 22:46:58 +0100mmhat(~mmh@55d4b3be.access.ecotel.net)
2022-02-08 22:48:09 +0100 <Franciman> lol
2022-02-08 22:48:45 +0100 <safinaskar> int-e: ok, possibly. i just shared a link
2022-02-08 22:52:14 +0100pgib(~textual@173.38.117.82)
2022-02-08 22:54:08 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
2022-02-08 22:54:34 +0100 <dsal> STM is bad in most languages that aren't Haskell that have tried it because you can't express a way to do it that's remotely sensible in those languages. e.g., rust has an STM implementation with a big list of things you have to do to use it safely. Few of those unsafe things will compile in Haskell code.
2022-02-08 22:54:54 +0100 <EvanR> myth, STM is awesome. We tried to build STM and failed. Myth busted
2022-02-08 22:55:09 +0100Pickchea(~private@user/pickchea)
2022-02-08 22:55:16 +0100lavaman(~lavaman@98.38.249.169)
2022-02-08 22:55:22 +0100 <Franciman> what about clojure's implementation, dsal ?
2022-02-08 22:55:53 +0100 <dsal> I've not sampled everything… just the few where it might have been relevant to me.
2022-02-08 22:56:02 +0100 <dsal> I have no idea what clojure's looks like. It might be OK.
2022-02-08 22:56:14 +0100 <dolio> Almost everything is going to have the same problems.
2022-02-08 22:56:28 +0100 <dsal> https://github.com/Marthog/rust-stm#stm-safety
2022-02-08 22:56:30 +0100 <dolio> Because the problems are caused by not being pure.
2022-02-08 22:57:20 +0100 <dolio> Or some analogous notion. I was serious when I said the problem was that the author of the article wasn't using Haskell.
2022-02-08 22:57:49 +0100 <dolio> It's not enough to be aware of Haskell if almost every language lacks a fundamental aspect that makes STM viable.
2022-02-08 22:58:20 +0100 <dsal> rust fails to allow the library author to build code that can be used safely. In haskell, STM is great. In a language like rust, it requires you to think a lot harder and might not be better than just doing a simple thing.
2022-02-08 22:58:30 +0100 <monochrom> janus: I had been too lazy to take a look at algebraic effects. Koka looks like a very nice and concrete gateway drug. Thanks! Maybe one day I could also teach this approach in a "principles of programming languages" course.
2022-02-08 22:58:53 +0100 <dibblego> I teach people who are "aware of haskell" — they are the hardest. I also teach people who are "aware of how an aeroplane works because MSFS" — also the hardest
2022-02-08 23:00:03 +0100 <dolio> Being aware of Java doesn't make it easier to not write memory leaks in C.
2022-02-08 23:00:27 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 256 seconds)
2022-02-08 23:00:35 +0100 <Franciman> i mean, haskell is not pure either
2022-02-08 23:00:57 +0100 <Franciman> so the real problem, to me, seems how confortable it is to write pure code in the language
2022-02-08 23:01:25 +0100 <EvanR> "no true pure language"
2022-02-08 23:01:38 +0100 <geekosaur> haskell prevents you from mixing impure code into pure code
2022-02-08 23:01:44 +0100 <Franciman> :t unsafePerformIO
2022-02-08 23:01:45 +0100 <lambdabot> error: Variable not in scope: unsafePerformIO
2022-02-08 23:01:49 +0100 <Franciman> rip
2022-02-08 23:01:57 +0100 <EvanR> what is this unsafePerformIO you speak of
2022-02-08 23:01:58 +0100 <geekosaur> which right away chops out several of the things that can go wrong with rust-stm
2022-02-08 23:02:17 +0100 <monochrom> What is the point of all these arguments and why it hasn't ended after all these hours?
2022-02-08 23:02:33 +0100 <Franciman> for example, i don't see why standard ML could have a nice STM implementation
2022-02-08 23:02:37 +0100 <geekosaur> everyone is bored?
2022-02-08 23:03:01 +0100 <Franciman> you just have to take care and not use ref functions
2022-02-08 23:03:08 +0100 <monochrom> During which I have already watched a favourite 1-hour TV show and started looking at Koka.
2022-02-08 23:03:15 +0100 <geekosaur> but the type system should be taking care for you
2022-02-08 23:03:23 +0100 <monochrom> And I am not even a fast learner or coder.
2022-02-08 23:03:38 +0100 <geekosaur> which is the point of Haskell's STM, the typesystem prevents all the gotchas
2022-02-08 23:03:44 +0100 <yushyin> monochrom: it's usually always the same discussions here anyway, with mostly the same people involved :)
2022-02-08 23:03:51 +0100 <monochrom> Imagine what you could have accompllished given that all of you read books and write code twice as fast as I can.
2022-02-08 23:04:06 +0100 <geekosaur> you *can't* mix impure code into your pure code. you *can't* nest `atomically`s. etc.
2022-02-08 23:04:15 +0100 <EvanR> but clearly STM has no utility because there's an unsafeSTMtoIO function
2022-02-08 23:04:20 +0100 <EvanR> literally all bets are off ever
2022-02-08 23:04:34 +0100 <Franciman> EvanR: this is an oversimplification
2022-02-08 23:04:48 +0100 <Franciman> i just said that it's not about purity, but how comfortable it is to write pure functional code
2022-02-08 23:04:54 +0100 <EvanR> haskell is equal to malbolge, or something
2022-02-08 23:04:57 +0100 <Franciman> ok
2022-02-08 23:05:13 +0100 <Franciman> i don't know what i did wrong this time
2022-02-08 23:05:18 +0100 <Franciman> and why you are making fun of me
2022-02-08 23:05:23 +0100 <EvanR> well I found it comfortable to write pure code in javascript, that just isn't enough though
2022-02-08 23:05:33 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-08 23:05:39 +0100 <EvanR> nothing you interact with agrees to, or could
2022-02-08 23:05:58 +0100 <EvanR> so it's not entirely about the language
2022-02-08 23:06:26 +0100 <Franciman> so you think that me being wrong means i can be made fun of
2022-02-08 23:06:28 +0100 <Franciman> i understand
2022-02-08 23:06:33 +0100 <geekosaur> nobody's making fun of you, Franciman. you're acting like you have a guilty conscience and reacting to things not aimed at you
2022-02-08 23:06:45 +0100 <Franciman> i think EvanR is aiming at me
2022-02-08 23:06:47 +0100 <Franciman> being sarcastic
2022-02-08 23:07:02 +0100 <geekosaur> apparently we're not allowed to talk around you because you might decide we're laughing behind your back, or something
2022-02-08 23:07:19 +0100 <safinaskar> monochrom: you may also like this language: https://www.unisonweb.org/ . it also has particular way of dealing with effects
2022-02-08 23:07:19 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-08 23:07:41 +0100 <Franciman> geekosaur: i mean he was being sarcastic at me
2022-02-08 23:07:46 +0100 <Franciman> not beyond me
2022-02-08 23:08:39 +0100 <EvanR> I'm serious about javascript though
2022-02-08 23:08:42 +0100 <Franciman> tell me how i should behave
2022-02-08 23:08:44 +0100 <Franciman> and i will
2022-02-08 23:08:48 +0100 <Franciman> i want to be part of the community
2022-02-08 23:08:53 +0100 <Franciman> i don't know what else to say
2022-02-08 23:09:20 +0100 <geekosaur> just don't ascribe things to yourself that aren'taimed at you. you've done that pretty much every time you've been in here.
2022-02-08 23:09:34 +0100 <Franciman> EvanR: so you weren't being sarcastic with me?
2022-02-08 23:10:02 +0100 <geekosaur> if it'snot obviously aimed at you, just assume it's not and keep quiet.(if it *is* aimed at you, either someone will step in or you can pop into #haskell-ops; that behavior is not tolerated here)
2022-02-08 23:10:06 +0100 <EvanR> regardless of personal discipline writing your own js, it's like boiling the ocean since no framework exists to respect purity among different developers
2022-02-08 23:10:15 +0100cosimone(~user@93-47-228-151.ip115.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
2022-02-08 23:10:46 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es) (Remote host closed the connection)
2022-02-08 23:11:01 +0100 <Franciman> ok
2022-02-08 23:11:21 +0100 <geekosaur> and you're hosed if some function you thought was [pure turns out not to be, or changes in its next release
2022-02-08 23:11:31 +0100 <ProfSimm> Can I make a type that mimics both a scalar an a list of values where the first item is the scalar, so everyone can see what they expect to see.
2022-02-08 23:11:37 +0100 <geekosaur> which is another thing the type system will catch for you
2022-02-08 23:12:11 +0100 <geekosaur> ProfSimm, no. that's pretty much the antithesis of Haskell types
2022-02-08 23:12:19 +0100 <geekosaur> that's a Perl type
2022-02-08 23:12:32 +0100 <ProfSimm> geekosaur: well is it tho. It's two typeclasses supported by one type
2022-02-08 23:12:46 +0100 <monochrom> Wait, does Perl actually convert a list to its head in scalar contexts?
2022-02-08 23:12:56 +0100 <geekosaur> depends on context
2022-02-08 23:13:01 +0100 <monochrom> Yikes.
2022-02-08 23:13:09 +0100 <geekosaur> and you can look at context and control what happens thereby
2022-02-08 23:13:13 +0100 <monochrom> My recollection is that the scalar is the length of the list...
2022-02-08 23:13:16 +0100 <ProfSimm> Wait so it does that?
2022-02-08 23:13:19 +0100 <dolio> What is the value of the "well actually ..." in response to my explanation to why STM works in Haskell and almost nowhere else? It makes me just not want to offer any explanations at all, because they're not going to be thought about without answering a bunch of language pedantry.
2022-02-08 23:13:26 +0100 <geekosaur> usually a list is converted to its length, but sometimes to the first element or other things
2022-02-08 23:13:27 +0100 <ProfSimm> Oh Perl, yes
2022-02-08 23:13:41 +0100 <monochrom> If Haskell did that, I would leave Haskell.
2022-02-08 23:13:47 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-02-08 23:13:49 +0100 <geekosaur> and you can always look at wantarray
2022-02-08 23:14:09 +0100 <ProfSimm> I'm thinking more like jQuery. Everything is a list, when you want to work with one item you have a jQuery object with 1 item
2022-02-08 23:14:10 +0100 <monochrom> This is why I am against "unconditionally get more people to adopt Haskell".
2022-02-08 23:14:17 +0100nek0(~nek0@nek0.eu)
2022-02-08 23:14:31 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2) (Quit: Client closed)
2022-02-08 23:14:56 +0100 <monochrom> Not to say that "exclusively get same-minded people into Haskell" is healthy either. I know that.
2022-02-08 23:15:10 +0100 <Franciman> lol
2022-02-08 23:15:38 +0100 <geekosaur> I'm fine with comparative language discussion. but first know what the hell you're talking about
2022-02-08 23:16:01 +0100sektor|2(~kvirc@87.227.175.182)
2022-02-08 23:16:03 +0100alp(~alp@user/alp)
2022-02-08 23:16:03 +0100 <ProfSimm> Well I'm thinking reality is a bit like that. We see just 3D projectsions of an 248 dimensional lattice E8
2022-02-08 23:16:17 +0100 <monochrom> Uh that's pretty useless, geekosaur. Everyone thinks they know what they're talking about. :)
2022-02-08 23:16:19 +0100 <ProfSimm> If you wanna see 3D you get 3D. If you want to see all 248 dimensions, you might
2022-02-08 23:18:18 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es)
2022-02-08 23:18:32 +0100safinaskar(~quassel@109.252.91.116) ()
2022-02-08 23:19:29 +0100sektor|3(~kvirc@94.155.193.66) (Ping timeout: 256 seconds)
2022-02-08 23:20:51 +0100 <Franciman> ok dolio i'll take care
2022-02-08 23:20:54 +0100 <Franciman> thanks for the tip
2022-02-08 23:21:45 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-08 23:22:26 +0100 <Franciman> i was reading the comments under the HVM post on hacker news and a person said: well but you are comparing GHC using a single thread to HVM using parallelism
2022-02-08 23:22:30 +0100 <Franciman> so it's unfair
2022-02-08 23:22:48 +0100 <Franciman> but i think it is VERY fair, because one of the promises of functional languages is to better adapt to multicores, i think
2022-02-08 23:22:55 +0100 <Franciman> so if my runtime can automatically take care of it
2022-02-08 23:23:03 +0100 <Franciman> much better than GHC which requires the user intervention
2022-02-08 23:23:08 +0100 <Franciman> it is a big step forward
2022-02-08 23:23:25 +0100 <monochrom> I would not read Hacker News at all.
2022-02-08 23:23:32 +0100 <Franciman> thanks oracle
2022-02-08 23:23:50 +0100 <monochrom> Indeed, I don't.
2022-02-08 23:24:33 +0100 <Franciman> the idea of automatic parallelism is very intriguing
2022-02-08 23:24:44 +0100 <Franciman> haskell failed to get it, but i don't quite understand why
2022-02-08 23:25:08 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2022-02-08 23:25:32 +0100 <Franciman> i remember somebody mentioning that one could not determine what the correct granularity of parallelism would be
2022-02-08 23:26:05 +0100 <Franciman> but somehow you can still have a form of automation, aided by human annotations
2022-02-08 23:27:21 +0100 <ski> @type Control.Parallel.par
2022-02-08 23:27:22 +0100 <lambdabot> a -> b -> b
2022-02-08 23:27:55 +0100 <Franciman> ski: how does this manage to be pure?
2022-02-08 23:28:18 +0100 <ski> it just adds a spark for a computation
2022-02-08 23:28:29 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-02-08 23:28:37 +0100 <ski> @where PCPH
2022-02-08 23:28:37 +0100 <lambdabot> "Parallel and Concurrent Programming in Haskell" by Simon Marlow in 2013 at <http://community.haskell.org/~simonmar/pcph/>,<http://chimera.labs.oreilly.com/books/1230000000929/>,<https://web.archive.
2022-02-08 23:28:37 +0100 <lambdabot> org/web/20180117194842/http://chimera.labs.oreilly.com/books/1230000000929>,<https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939/>
2022-02-08 23:28:42 +0100 <hololeap> if it's obvious some operation will work well in parallel, you can basically get automatic parallelism using the parallel package
2022-02-08 23:28:46 +0100 <ski> see above ^
2022-02-08 23:29:11 +0100 <Franciman> thanks
2022-02-08 23:29:58 +0100 <Franciman> i'd like to learn sml and adapt its semantics to these use cases
2022-02-08 23:30:09 +0100 <Franciman> it feels very much like scheme
2022-02-08 23:30:12 +0100 <Franciman> while haskell is pure bloat
2022-02-08 23:30:22 +0100 <Franciman> for a prototype
2022-02-08 23:30:23 +0100 <ski> SML is neat
2022-02-08 23:30:32 +0100 <Franciman> i could never write an haskell compiler
2022-02-08 23:30:40 +0100 <Franciman> and haskell also lacks formal semantics
2022-02-08 23:30:45 +0100 <Franciman> so i should learn about core, etc
2022-02-08 23:30:51 +0100 <dsal> I doubt any person could write a haskell compiler.
2022-02-08 23:31:04 +0100ski. o O ( JHC )
2022-02-08 23:31:07 +0100 <Franciman> agree ski
2022-02-08 23:31:13 +0100 <Franciman> sml is pretty cool
2022-02-08 23:31:17 +0100deadmarshal(~deadmarsh@95.38.117.237) (Ping timeout: 240 seconds)
2022-02-08 23:31:18 +0100 <dolio> Franciman: Here's my question: how did HVM solve the problem that previous researchers on this ran into?
2022-02-08 23:31:40 +0100 <dolio> I don't see an explanation in the repo.
2022-02-08 23:31:51 +0100 <monochrom> SML and Scheme are both pretty fat languages too.
2022-02-08 23:32:02 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2)
2022-02-08 23:32:27 +0100 <monochrom> If you think SML is small, you're forgetting its parametrized module system and the eqtype thing.
2022-02-08 23:32:49 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-08 23:32:50 +0100 <Franciman> monochrom: is it larger than haskell?
2022-02-08 23:33:01 +0100 <monochrom> If you think Scheme is small, you're forgetting its macro system, or call/cc, or shift/reset, or a plural of them.
2022-02-08 23:33:08 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-08 23:33:10 +0100safinaskar(~safinaska@109.252.91.116)
2022-02-08 23:33:20 +0100 <Franciman> the cool thing of sml, imho, is that it's nicely defined in pieces
2022-02-08 23:33:22 +0100 <Franciman> so you can define subsets
2022-02-08 23:33:28 +0100 <Franciman> like you usually do when twekaing with scheme
2022-02-08 23:33:30 +0100 <safinaskar> wow! Koka has true total functions! https://koka-lang.github.io/koka/doc/book.html
2022-02-08 23:33:32 +0100 <dolio> It has parallel benchmarks, but I don't see any explanation for how it's parallelized.
2022-02-08 23:33:33 +0100 <Franciman> so it's a pretty cool first language to implement
2022-02-08 23:33:45 +0100 <Franciman> dolio: sorry, but i don't know
2022-02-08 23:33:50 +0100 <safinaskar> fun sqr : (int) -> total int // total: mathematical total function
2022-02-08 23:34:15 +0100 <dolio> And the parallelism section in the "HOW.mc" is "[TODO]".
2022-02-08 23:34:19 +0100 <Franciman> :)
2022-02-08 23:34:19 +0100 <wavemode> are ints in koka arbitrary precision?
2022-02-08 23:34:25 +0100 <Franciman> SrPx may know more
2022-02-08 23:34:28 +0100 <Franciman> they are the author
2022-02-08 23:34:49 +0100 <safinaskar> Franciman: "so it's a pretty cool first language to implement" - well, first i would recommend implementing BASIC interpreter. i think it is most simple thing to do
2022-02-08 23:34:57 +0100 <Franciman> dolio: i was asking what the previous issues researches found
2022-02-08 23:35:01 +0100 <Franciman> i don't know about them
2022-02-08 23:35:03 +0100 <monochrom> If you're subsetting then subsetting Haskell is just as easy/difficult. See codeworld.
2022-02-08 23:35:17 +0100 <safinaskar> Franciman: then scheme interpreter. this is harder, because scheme has lambdas. but it is untyped, to there is no messing with type system
2022-02-08 23:35:25 +0100 <safinaskar> Franciman: then you can implement ML
2022-02-08 23:35:29 +0100 <dolio> It's what you mentioned. Parallelism has overhead that isn't always worth it.
2022-02-08 23:35:44 +0100 <safinaskar> personally i implemented scheme interpreter
2022-02-08 23:35:46 +0100 <Franciman> i think HVM has a «dirty trick»
2022-02-08 23:35:49 +0100 <safinaskar> (small)
2022-02-08 23:35:51 +0100 <dolio> You can parallelise `(1 + 2) + (3 + 4)`, but it's faster to just add them all up.
2022-02-08 23:36:02 +0100 <Franciman> they run HVM on specific examples which vastly scale
2022-02-08 23:36:04 +0100safinaskar(~safinaska@109.252.91.116) ()
2022-02-08 23:36:27 +0100 <Franciman> i read from the HOW.md that laziness fails to «commute» with lambdas
2022-02-08 23:36:34 +0100 <Franciman> monochrom: sure sure sure sure
2022-02-08 23:36:42 +0100 <Franciman> haskell is just as easy
2022-02-08 23:36:46 +0100 <dolio> That's a separate issue.
2022-02-08 23:36:54 +0100 <Franciman> i know
2022-02-08 23:37:00 +0100 <Franciman> i'm trying to say that
2022-02-08 23:37:03 +0100 <Franciman> it works so well
2022-02-08 23:37:05 +0100Codaraxis_(~Codaraxis@user/codaraxis)
2022-02-08 23:37:07 +0100 <Franciman> because of that reason
2022-02-08 23:37:13 +0100 <Franciman> probably not because of massive parallelsim
2022-02-08 23:37:49 +0100 <Franciman> monochrom: given that it's just as easy, sml has the advantage of having a formal semantics fully specified and the bare language is pretty small
2022-02-08 23:37:52 +0100 <Franciman> haskell lacks that
2022-02-08 23:37:55 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-08 23:38:09 +0100 <Franciman> so this helps implementing a compiler, imho
2022-02-08 23:38:14 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-08 23:38:20 +0100 <monochrom> I'm done with this moving goalpost.
2022-02-08 23:38:33 +0100 <Franciman> you are the n1 haskell fanperson ^^
2022-02-08 23:38:36 +0100 <Franciman> it's ok
2022-02-08 23:38:57 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-08 23:39:24 +0100 <Franciman> my goal is: it's easier to use sml as a framework for implementing a toy functional language that you can reason about carefully
2022-02-08 23:39:27 +0100 <Franciman> rather than haskell
2022-02-08 23:39:37 +0100 <Franciman> it's moving faaaaaaaaast
2022-02-08 23:39:49 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
2022-02-08 23:40:00 +0100 <monochrom> I may agree about the formal semantics part on those days when I'm anal, but this "bare language" is clearly a moving goalpost, maliciously defined so that "bare SML exists but bare Haskell doesn't".
2022-02-08 23:40:09 +0100 <Franciman> monochrom: pardon me
2022-02-08 23:40:14 +0100 <Franciman> but bare sml is defined in the standard (revised)
2022-02-08 23:43:31 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-08 23:43:38 +0100mikail(~mikail@94.3.253.161)
2022-02-08 23:44:20 +0100foul_owl(~kerry@23.82.194.73) (Ping timeout: 256 seconds)
2022-02-08 23:44:59 +0100lbseale_(~ep1ctetus@user/ep1ctetus)
2022-02-08 23:46:07 +0100 <Franciman> this is exactly what i am referring to, when i say that it is easier to split sml in pieces, because they already did so in the standard
2022-02-08 23:46:17 +0100 <Franciman> with precise semantics
2022-02-08 23:46:40 +0100 <dsal> It sort of reads like you're speaking from imagined experience.
2022-02-08 23:46:41 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-02-08 23:46:41 +0100deadmarshal(~deadmarsh@95.38.116.14)
2022-02-08 23:48:37 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
2022-02-08 23:50:20 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-02-08 23:50:34 +0100vysn(~vysn@user/vysn)
2022-02-08 23:50:38 +0100 <Franciman> thanks dsal
2022-02-08 23:51:47 +0100 <dsal> i.e., it sounds like you're talking about which one of two things you're not doing would be easier. If you were actually going to do something, I'd expect putting effort into doing it would be more productive than telling other people why it's probably hard to do it using tools they are using.
2022-02-08 23:52:03 +0100 <Franciman> after being told i maliciously define entities, now i also know that i am a delusional person
2022-02-08 23:52:45 +0100 <dsal> Everyone imagines things. That doesn't make us delusional.
2022-02-08 23:53:01 +0100 <Franciman> the quasi-structuralist quote «you only know yourself through others» is now more true than ever
2022-02-08 23:53:07 +0100 <Franciman> is more true than ever*
2022-02-08 23:53:08 +0100 <dsal> There's just no practicality to your argument. You don't seem to actually want to do the things you're imagining.
2022-02-08 23:53:38 +0100 <Franciman> dsal: i am learning the sml standard, and I'm having vastly easier time than learning the haskell language report, which btw isn't really the haskell most people use
2022-02-08 23:53:48 +0100 <Franciman> and i'm going to implement it in zig
2022-02-08 23:57:14 +0100deadmarshal(~deadmarsh@95.38.116.14) (Ping timeout: 260 seconds)
2022-02-08 23:59:46 +0100emf(~emf@2620:10d:c090:400::5:c6d7)
2022-02-08 23:59:52 +0100 <dsal> OK. I guess I still don't quite understand what you're arguing here, but that might just be because I'm working and not paying that much attention. I write Haskell code for money, but I don't write Haskell compilers, so I guess I just don't see the issue.