Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→ 502,152 events total
2021-03-23 11:02:26 <rond_> expression:
2021-03-23 11:02:27 <rond_> (f x) + y
2021-03-23 11:02:27 <rond_> CPS form:
2021-03-23 11:02:28 <rond_> f x (\fx. + fx y (\r. k r))
2021-03-23 11:02:28 <rond_> A lazy version of CPS would require the suspended computation inside a thunk to be a
2021-03-23 11:02:29 <rond_> function taking a continuation as its argument. So the CPS form would really be
2021-03-23 11:02:29 <rond_> f x (\fx. force y (\yr. + fx yr (\r. k r)))
2021-03-23 11:02:43 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2021-03-23 11:02:49 × xff0x quits (~xff0x@2001:1a81:5390:3000:45a9:729d:b2a5:971c) (Ping timeout: 244 seconds)
2021-03-23 11:03:06 <rond_> If my understanding is correct, than the word `force` in the last line is completely obsolete
2021-03-23 11:03:07 sord937 joins (~sord937@gateway/tor-sasl/sord937)
2021-03-23 11:03:44 xff0x joins (~xff0x@2001:1a81:5390:3000:995b:3aea:9e89:d26f)
2021-03-23 11:03:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-23 11:04:02 <rond_> I should've also provided the sentence:
2021-03-23 11:04:03 <rond_> "where force is the function which forces a thunk (its first argument) by applying it to force’s second argument (the continuation)."
2021-03-23 11:04:21 × minoru_shiraeesh quits (~shiraeesh@46.34.206.238) (Ping timeout: 256 seconds)
2021-03-23 11:04:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-23 11:05:25 <shachaf> Like I said, it's been a while.
2021-03-23 11:05:46 <shachaf> Why is force unnecessary?
2021-03-23 11:06:26 × Major_Biscuit quits (~Major_Bis@wlan-145-94-219-47.wlan.tudelft.nl) (Ping timeout: 244 seconds)
2021-03-23 11:06:37 <rond_> since y is a thunk that takes a continuation, just apply the continuation to it
2021-03-23 11:07:06 <rond_> which is `(\yr. + fx yr (\r. k r))`. "Take the value of 'yr' (so the value of a a thunk) and do something  with it.
2021-03-23 11:07:42 <rond_> I don't see any need for `force` here
2021-03-23 11:07:50 <rond_> it's all good expressed with continuations
2021-03-23 11:07:54 <shachaf> Do they define "force"? Or is this just given an analogy?
2021-03-23 11:07:58 <shachaf> as an analogy
2021-03-23 11:08:15 curl joins (5ce955fb@gateway/web/cgi-irc/kiwiirc.com/ip.92.233.85.251)
2021-03-23 11:08:16 <rond_> "where force is the function which forces a thunk (its first argument) by applying it to force’s second argument (the continuation)."
2021-03-23 11:08:19 <shachaf> Based on the surrounding text, you might also ask why "fx" isn't forced.
2021-03-23 11:08:43 <rond_> Yeah, the asymetry is also troubling here
2021-03-23 11:08:55 <rond_> hence, with my current understanding, `force` is obsolete
2021-03-23 11:09:19 <curl> hi, i was researching polynomial rootfinding and i found this; https://byorgey.wordpress.com/2019/02/13/finding-roots-of-polynomials-in-haskell/
2021-03-23 11:09:31 <shachaf> My guess is that they're gesturing at the fact that forcing is explicit in STG.
2021-03-23 11:10:01 <shachaf> And not saying something really precise.
2021-03-23 11:10:11 <curl> the modern methods involve orthogonal polynomial pencils, such as the colleague matrix, the eigenvalues of which are the roots of the polynomial
2021-03-23 11:10:35 <curl> the haskell rootfinding implementations dont seem to have that, or at least, i cant see one that does
2021-03-23 11:10:57 × Raito_Bezarius quits (~Raito@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 260 seconds)
2021-03-23 11:11:01 <rond_> shachaf  Okay. So would you say that my interpretaion that, without a `force`, it would work perfectly well seems to be correct?
2021-03-23 11:11:33 <shachaf> It depends on how y is defined.
2021-03-23 11:12:00 <shachaf> I'm imagining something like y :: Int, force :: Int -> (Int# -> r) -> r
2021-03-23 11:12:07 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 260 seconds)
2021-03-23 11:12:09 cabpa joins (~cabpa@180.190.165.139)
2021-03-23 11:12:21 <rond_> Oh, I see
2021-03-23 11:12:53 <rond_> I imagined y :: ( r -> r)
2021-03-23 11:13:22 <rond_> Because "A lazy version of CPS would require the suspended computation inside a thunk to be a
2021-03-23 11:13:22 <rond_> function taking a continuation as its argument"
2021-03-23 11:13:27 <rond_> But I like it your way too
2021-03-23 11:14:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-03-23 11:15:06 <hpc> tomsmeding: i like it
2021-03-23 11:15:28 × malumore quits (~malumore@151.62.117.161) (Ping timeout: 245 seconds)
2021-03-23 11:15:30 fuzzy_id joins (~user@78.30.11.72)
2021-03-23 11:16:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-23 11:16:49 <fuzzy_id> When I want to abort an input in GHCi I sometimes do “Ctrl+c” exiting GHCi itself. Does someone know how to reconfigure this?
2021-03-23 11:17:28 <curl> matlab seems to use chebychev spectra for root finding, with papers citing a toolbox called chebfun as being essential to modern rootfinding
2021-03-23 11:18:44 apeyroux joins (~alex@78.20.138.88.rev.sfr.net)
2021-03-23 11:18:59 <curl> in byorgeys wordpress doc he gives a call for help for better rootfinding in haskell, i think this chebychev linearization approach is the way to go, because it is the industry standard as used via matlab
2021-03-23 11:19:50 <curl> and all the modern papers to do with rootfinding use appraoches based on it to do with pencils
2021-03-23 11:20:41 <curl> which are pretty much exactly the companion matrix for some polynomial the eigenvalues of which are the zeros
2021-03-23 11:22:01 <peanut_> fuzzy_id what OS?
2021-03-23 11:22:35 is_null joins (~jpic@pdpc/supporter/professional/is-null)
2021-03-23 11:22:36 <curl> there are some stability issues with the QR eigensolver, when combined with the pencil to find the roots, and the papers present stability anaysis with eg QZ, but basically for a normal toolkit, any eigensolver available will do
2021-03-23 11:23:26 <curl> i think whats missing in haskell is the companion matrix, but maybe i just cant find it
2021-03-23 11:23:39 <rond_> Thank you shachaf , I need to go. Wish you a great day!
2021-03-23 11:24:36 × rond_ quits (594021ff@89-64-33-255.dynamic.chello.pl) (Quit: Connection closed)
2021-03-23 11:24:41 × thunderrd quits (~thunderrd@183.182.111.116) (*.net *.split)
2021-03-23 11:25:04 Kaiepi joins (~Kaiepi@47.54.252.148)
2021-03-23 11:25:07 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-03-23 11:26:31 thunderrd joins (~thunderrd@183.182.111.116)
2021-03-23 11:26:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-03-23 11:26:39 Major_Biscuit joins (~Major_Bis@wlan-145-94-219-47.wlan.tudelft.nl)
2021-03-23 11:27:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-23 11:27:52 × apeyroux quits (~alex@78.20.138.88.rev.sfr.net) (Ping timeout: 260 seconds)
2021-03-23 11:28:06 malumore joins (~malumore@151.62.117.161)
2021-03-23 11:29:11 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-23 11:31:26 × nf quits (~n@monade.li) (Quit: Fairfarren.)
2021-03-23 11:31:35 nf joins (~n@monade.li)
2021-03-23 11:31:49 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-03-23 11:32:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-23 11:32:45 <L29Ah> is it possible to ask quickcheck what did it choose as arbitrary instances deeper than the tested value type?
2021-03-23 11:32:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-23 11:33:25 × curl quits (5ce955fb@gateway/web/cgi-irc/kiwiirc.com/ip.92.233.85.251) (Quit: Connection closed)
2021-03-23 11:33:52 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2021-03-23 11:34:10 <fuzzypixelz> https://wiki.haskell.org/Bottom say that Bottom is a member of all types because if it were not, the compiler would solve the Halting Problem. That just flew over my head because even if we don't know if the computation will stop or not, we know its type because ... Haskell is statically typed?
2021-03-23 11:34:39 <fuzzypixelz> Obviously I'm wrong in some ridiculous way
2021-03-23 11:35:13 × Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-03-23 11:36:05 <dminuoso> fuzzypixelz: It's just an odd way of phrasing: If bottom was not a member of every type, then `f :: Int -> Int` would only be legit, if `f` would be defined at every value.
2021-03-23 11:36:14 <opqdonut> fuzzypixelz: if the type Bool only had the values True and False (and not Bottom), the expression `fix not :: Bool` would be a type error
2021-03-23 11:36:32 <dminuoso> The implementation would need a general algorithm to decide, whether an arbitrary was indeed defined at every value
2021-03-23 11:36:36 <opqdonut> fuzzypixelz: there are languages like this, they are called total languages. one example is agda
2021-03-23 11:36:42 <dminuoso> And such an algorithm would solve the turing problem
2021-03-23 11:36:51 <dminuoso> Since Haskell is turing complete
2021-03-23 11:36:58 <opqdonut> agda doesn't solve the halting problem, instead it forces the programmer to _prove_ that their function halts
2021-03-23 11:37:14 Kaiepi joins (~Kaiepi@47.54.252.148)
2021-03-23 11:38:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-23 11:38:23 × natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2021-03-23 11:38:32 × RusAlex quits (~Chel@unaffiliated/rusalex) (Ping timeout: 240 seconds)
2021-03-23 11:38:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-23 11:39:42 kam1 joins (~kam1@83.123.174.63)
2021-03-23 11:40:00 × kam1 quits (~kam1@83.123.174.63) (Read error: Connection reset by peer)
2021-03-23 11:40:56 natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)

All times are in UTC.