Logs: freenode/#haskell
| 2020-11-11 20:51:35 | <tomsmeding> | in that inner lambda, \x -> f x, 'f' is free and 'x' is bound |
| 2020-11-11 20:51:58 | <dminuoso> | frdg: it's just a name for it. |
| 2020-11-11 20:52:09 | <tomsmeding> | if you leave out the surrounding stuff and just look at the following in isolation: \n -> add n |
| 2020-11-11 20:52:12 | → | neiluj joins (~jco@24.104.204.77.rev.sfr.net) |
| 2020-11-11 20:52:13 | <dminuoso> | frdg: when studying systems, sometimes certain things have properties. |
| 2020-11-11 20:52:16 | <tomsmeding> | then 'add' is free and 'n' is bound ;) |
| 2020-11-11 20:52:21 | <dminuoso> | and we tend to name these certain things |
| 2020-11-11 20:52:23 | → | centril joins (~centril@213-66-146-92-no250.tbcn.telia.com) |
| 2020-11-11 20:53:15 | <frdg> | tomsmeding: these were nice examples. It is clear to me now. |
| 2020-11-11 20:54:22 | <dminuoso> | frdg: As a teaser, GHC has the notion of supercombinators which is related: |
| 2020-11-11 20:54:25 | <dminuoso> | https://wiki.haskell.org/Super_combinator |
| 2020-11-11 20:54:42 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 2020-11-11 20:54:48 | <frdg> | ill read this |
| 2020-11-11 20:55:02 | <dminuoso> | (The impact of this is largely related to performance/optimization topics in GHC) |
| 2020-11-11 20:55:29 | × | britva quits (~britva@2a02:aa13:7240:2980:710d:443e:844f:5480) (Quit: This computer has gone to sleep) |
| 2020-11-11 20:56:23 | <dminuoso> | frdg: If we ignore bits and pieces, we could actually make one first realization: we can always float a combinator out right until the top level in haskell. |
| 2020-11-11 20:56:34 | <dminuoso> | But how would we even express what expression we can float out? |
| 2020-11-11 20:56:48 | <dminuoso> | Well, it's easy. If the expression is a combinator, then we can float it out as it |
| 2020-11-11 20:56:50 | <dminuoso> | *as is |
| 2020-11-11 20:57:03 | <dminuoso> | (This you probably do manually regularly in Haskell) |
| 2020-11-11 20:57:42 | <frdg> | by float it out you mean un-nest it? |
| 2020-11-11 20:58:01 | → | riddle00 joins (~riddle00@78-62-232-255.static.zebra.lt) |
| 2020-11-11 20:58:18 | <dminuoso> | I mean it in the sense of let-floating |
| 2020-11-11 20:58:30 | <dminuoso> | https://wiki.haskell.org/Lifting_pattern |
| 2020-11-11 20:59:05 | <frdg> | ohh the opposite of lift |
| 2020-11-11 20:59:19 | <dminuoso> | no, this is also called "lifting" |
| 2020-11-11 20:59:22 | <frdg> | no. lift |
| 2020-11-11 20:59:24 | <dminuoso> | (a terribly overused word) |
| 2020-11-11 21:00:01 | × | alorente quits (~alorente@217.146.82.202) () |
| 2020-11-11 21:00:17 | <riddle00> | . |
| 2020-11-11 21:00:21 | <koz_> | Haskell is the strongest proglang. |
| 2020-11-11 21:00:22 | <dminuoso> | So the term "combinator" just lets us have a clear terminology. if you were to write in GHC, and wondering "when can I float an expression to the top and give it a name", I'd say "you can do this if it is a combinator" |
| 2020-11-11 21:00:23 | <koz_> | All we do is lift. |
| 2020-11-11 21:00:43 | × | riddle00 quits (~riddle00@78-62-232-255.static.zebra.lt) (Client Quit) |
| 2020-11-11 21:00:47 | <dminuoso> | Or equivalently, if you identify a particular expression to be a combinator, you know you can float it out all the way to the top (or half the way) and give it a name. |
| 2020-11-11 21:00:49 | <dminuoso> | And it's fine |
| 2020-11-11 21:01:09 | <frdg> | now I really understand why we could float a combinator. Like tomsmeding's example `consider: \f -> (\x -> f x) 1`. we could not float the inner lambda because it relies on f. |
| 2020-11-11 21:01:50 | <frdg> | but we could float f itself |
| 2020-11-11 21:01:51 | → | riddle00 joins (~riddle00@78-62-232-255.static.zebra.lt) |
| 2020-11-11 21:02:06 | tomsmeding | . o O ( "f itself"? ) |
| 2020-11-11 21:02:54 | → | bquest_123_ joins (~bquest_12@5.112.15.240) |
| 2020-11-11 21:04:43 | <dminuoso> | We tend to do this sort of reasoning in our heads when we refactor code, but compilers dont have heads, they have to be implemented with algorithms. So they need to know what mechanical transformations they are allowed to do and what not |
| 2020-11-11 21:04:46 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 2020-11-11 21:05:05 | × | bquest_123 quits (~bquest_12@89.47.70.167) (Ping timeout: 240 seconds) |
| 2020-11-11 21:06:18 | → | acidjnk_new joins (~acidjnk@p200300d0c718f6600567fd11fa2fcde0.dip0.t-ipconnect.de) |
| 2020-11-11 21:07:17 | → | zincy_ joins (~tom@2a00:23c8:970a:3501:d0cd:312d:55de:c707) |
| 2020-11-11 21:09:11 | → | son0p joins (~son0p@181.136.122.143) |
| 2020-11-11 21:09:25 | × | knupfer quits (~Thunderbi@i5E86B416.versanet.de) (Ping timeout: 240 seconds) |
| 2020-11-11 21:11:12 | → | britva joins (~britva@2a02:aa13:7240:2980:710d:443e:844f:5480) |
| 2020-11-11 21:12:00 | hackage | tasty-hspec 1.1.6 - Hspec support for the Tasty test framework. https://hackage.haskell.org/package/tasty-hspec-1.1.6 (mitchellwrosen) |
| 2020-11-11 21:13:29 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 2020-11-11 21:17:19 | → | brodie joins (~brodie@207.53.253.137) |
| 2020-11-11 21:17:42 | × | geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection) |
| 2020-11-11 21:18:02 | × | brodie quits (~brodie@207.53.253.137) (Client Quit) |
| 2020-11-11 21:18:16 | × | britva quits (~britva@2a02:aa13:7240:2980:710d:443e:844f:5480) (Quit: This computer has gone to sleep) |
| 2020-11-11 21:21:27 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 2020-11-11 21:22:44 | × | hiroaki quits (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 2020-11-11 21:23:37 | × | darjeeling_ quits (~darjeelin@122.245.210.116) (Ping timeout: 264 seconds) |
| 2020-11-11 21:24:05 | → | darjeeling_ joins (~darjeelin@122.245.210.116) |
| 2020-11-11 21:24:13 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 2020-11-11 21:28:31 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz) |
| 2020-11-11 21:29:06 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 260 seconds) |
| 2020-11-11 21:29:26 | × | Guest76112 quits (uid472329@gateway/web/irccloud.com/x-kbynhnxavlyhpluo) (Quit: Connection closed for inactivity) |
| 2020-11-11 21:29:33 | × | avdb quits (~avdb@ip-83-134-202-84.dsl.scarlet.be) (Ping timeout: 260 seconds) |
| 2020-11-11 21:31:25 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 264 seconds) |
| 2020-11-11 21:31:38 | → | TMA joins (tma@twin.jikos.cz) |
| 2020-11-11 21:34:57 | → | conal joins (~conal@66.115.157.100) |
| 2020-11-11 21:35:46 | × | petersen quits (~petersen@redhat/juhp) (Quit: petersen) |
| 2020-11-11 21:36:26 | → | petersen joins (~petersen@redhat/juhp) |
| 2020-11-11 21:37:03 | × | centril quits (~centril@213-66-146-92-no250.tbcn.telia.com) (*.net *.split) |
| 2020-11-11 21:37:03 | × | neiluj quits (~jco@24.104.204.77.rev.sfr.net) (*.net *.split) |
| 2020-11-11 21:37:03 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (*.net *.split) |
| 2020-11-11 21:37:03 | × | dddddd quits (~dddddd@unaffiliated/dddddd) (*.net *.split) |
| 2020-11-11 21:37:03 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (*.net *.split) |
| 2020-11-11 21:37:03 | × | Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (*.net *.split) |
| 2020-11-11 21:37:03 | × | DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (*.net *.split) |
| 2020-11-11 21:37:03 | × | coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (*.net *.split) |
| 2020-11-11 21:37:03 | × | hololeap quits (~hololeap@unaffiliated/hololeap) (*.net *.split) |
| 2020-11-11 21:37:03 | × | sud0 quits (~Death@hackspaceuy/member/sud0) (*.net *.split) |
| 2020-11-11 21:37:03 | × | dan64 quits (~dan64@dannyadam.com) (*.net *.split) |
| 2020-11-11 21:37:03 | × | ystael quits (~ystael@209.6.50.55) (*.net *.split) |
| 2020-11-11 21:37:03 | × | perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (*.net *.split) |
| 2020-11-11 21:37:03 | × | Benzi-Junior quits (~BenziJuni@dsl-149-67-198.hive.is) (*.net *.split) |
| 2020-11-11 21:37:03 | × | samebchase- quits (~samebchas@51.15.68.182) (*.net *.split) |
| 2020-11-11 21:37:03 | × | dcoutts__ quits (~duncan@33.14.75.194.dyn.plus.net) (*.net *.split) |
| 2020-11-11 21:37:03 | × | mud quits (~mud@unaffiliated/kadoban) (*.net *.split) |
| 2020-11-11 21:37:03 | × | Benett quits (~Benett@unaffiliated/benett) (*.net *.split) |
| 2020-11-11 21:37:03 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (*.net *.split) |
| 2020-11-11 21:37:03 | × | tsrt^ quits (tsrt@ip98-184-89-2.mc.at.cox.net) (*.net *.split) |
| 2020-11-11 21:37:03 | × | dxld quits (~dxld@80-109-136-248.cable.dynamic.surfer.at) (*.net *.split) |
| 2020-11-11 21:37:03 | × | nurupo quits (~nurupo.ga@unaffiliated/nurupo) (*.net *.split) |
| 2020-11-11 21:37:03 | × | Bergle_2 quits (~Bergle_4@101.165.90.119) (*.net *.split) |
| 2020-11-11 21:37:03 | × | drewolson quits (~drewolson@64.227.24.16) (*.net *.split) |
| 2020-11-11 21:37:03 | × | glamas quits (~glamas@107.182.17.237) (*.net *.split) |
| 2020-11-11 21:37:03 | × | blackdog quits (~blackdog@198.211.112.85) (*.net *.split) |
| 2020-11-11 21:37:03 | × | polux20013 quits (~polux@51.15.169.172) (*.net *.split) |
| 2020-11-11 21:37:03 | × | sdx32 quits (~sdx23@unaffiliated/sdx23) (*.net *.split) |
| 2020-11-11 21:37:03 | × | hexagoxel quits (~hexagoxel@hexagoxel.de) (*.net *.split) |
| 2020-11-11 21:37:04 | × | c_wraith quits (~c_wraith@adjoint.us) (*.net *.split) |
| 2020-11-11 21:37:04 | × | gremax quits (znc@torba.club) (*.net *.split) |
All times are in UTC.