Logs: freenode/#haskell
| 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.