Home liberachat/#haskell: Logs Calendar

Logs on 2022-02-08 (liberachat/#haskell)

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

All times are in UTC on 2022-02-08.