2020-09-21 00:00:07 +0200 | <edwardk> | not sure how you get lighter weight than do, it acts like parentheses you don't have to close |
2020-09-21 00:00:27 +0200 | <edwardk> | given HSpec doesn't hide prelude's $, it is just the one from Prelude |
2020-09-21 00:01:07 +0200 | <edwardk> | anyways do takes exactly as many characters as ()'s would and self closes when you outdent |
2020-09-21 00:01:37 +0200 | <edwardk> | but using BlockArguments does clean up the 'noise' in an HSpec file |
2020-09-21 00:02:26 +0200 | <edwardk> | BlockArguments https://www.irccloud.com/pastebin/R8v4pxNs/BlockSpec.hs |
2020-09-21 00:02:47 +0200 | <edwardk> | you can swap each of those do's for a $ except the one on the line with describe |
2020-09-21 00:03:23 +0200 | <edwardk> | BlockArguments lets you kill the $ before the lambda for property there as well |
2020-09-21 00:03:36 +0200 | <edwardk> | > 2 * do 3 + 4 |
2020-09-21 00:03:38 +0200 | <lambdabot> | 14 |
2020-09-21 00:04:04 +0200 | <opticblast> | > :t do () |
2020-09-21 00:04:07 +0200 | <lambdabot> | <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘:’ |
2020-09-21 00:04:08 +0200 | <ski> | hyiltiz : no, it's the usual `$' in the library |
2020-09-21 00:04:23 +0200 | <opticblast> | @type do () |
2020-09-21 00:04:25 +0200 | <lambdabot> | () |
2020-09-21 00:04:29 +0200 | <opticblast> | well, that's confusing |
2020-09-21 00:04:35 +0200 | <opticblast> | I thought it would be something like Identity () |
2020-09-21 00:05:07 +0200 | <edwardk> | do doesn't change the types, it just desugars into >>= uses when there is ; -- and maybe does some applicative stuff if applicative do is on |
2020-09-21 00:05:24 +0200 | <edwardk> | when there is only one expression there you want it passed through |
2020-09-21 00:05:25 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 00:05:33 +0200 | <ski> | a `do'-expression has the same type as its last command (which in this case was `()') |
2020-09-21 00:05:40 +0200 | <edwardk> | otherwise in your model do () and do (pure ()) -- would be ambiguous what to do |
2020-09-21 00:05:53 +0200 | <edwardk> | or 'do x' where x happens to be pure y |
2020-09-21 00:06:00 +0200 | <edwardk> | so it _can't_ do the thing you want opticblast |
2020-09-21 00:06:12 +0200 | <opticblast> | ah, makes sense |
2020-09-21 00:06:41 +0200 | <edwardk> | now, back in the day it used to be that do would guide inference to figure out that the type there was the application of some m to some a, but we got them to stop doing that a looong time ago |
2020-09-21 00:07:14 +0200 | drdo | (~drdo@overlord0.drdo.eu) (Remote host closed the connection) |
2020-09-21 00:08:21 +0200 | drdo | (~drdo@overlord0.drdo.eu) |
2020-09-21 00:09:05 +0200 | obihann | (~jhann@156.34.160.69) |
2020-09-21 00:10:13 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Ping timeout: 260 seconds) |
2020-09-21 00:12:08 +0200 | <hyiltiz> | edwardk: thx! BlockArguments seems to really clean up the verbose notation |
2020-09-21 00:12:23 +0200 | <hyiltiz> | and I am sure it works not just work HSpec as well |
2020-09-21 00:12:33 +0200 | <hyiltiz> | Reminds me of Ruby's blocks |
2020-09-21 00:13:14 +0200 | sagax | (~sagax_nb@213.138.71.146) (Ping timeout: 272 seconds) |
2020-09-21 00:13:16 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-09-21 00:14:45 +0200 | <edwardk> | i use it more and more these days mostly because when some library messily needs to take a argument that will be very long right before some other empty list argument or something i can break things up by lines and then just use the do to self delimit _that_ argument, without having to figure out how to put the closing paren, or get all lispy with closing parens dangling on the far right of my screen |
2020-09-21 00:15:27 +0200 | hackage | termbox-banana 0.3.0 - reactive-banana + termbox https://hackage.haskell.org/package/termbox-banana-0.3.0 (mitchellwrosen) |
2020-09-21 00:15:44 +0200 | <yushyin> | 6 |
2020-09-21 00:15:50 +0200 | <yushyin> | ups, sorry |
2020-09-21 00:17:06 +0200 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
2020-09-21 00:17:55 +0200 | <edwardk> | it amazes me that nobody has written an ncurses variant that knows how many lines worth of text it has scrolled in and gives you control over just that portion of the screen space, so it doesn't have to flip to the alt screen and works well for repls. |
2020-09-21 00:18:04 +0200 | GyroW_ | GyroW |
2020-09-21 00:18:05 +0200 | GyroW | (~GyroW@ptr-48ujrfb8c7gfd2lu92q.18120a2.ip6.access.telenet.be) (Changing host) |
2020-09-21 00:18:05 +0200 | GyroW | (~GyroW@unaffiliated/gyrow) |
2020-09-21 00:18:31 +0200 | <edwardk> | everything that works like this is some bespoke readline like monstrosity |
2020-09-21 00:19:52 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 00:21:40 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 00:23:12 +0200 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2020-09-21 00:27:38 +0200 | aenesidemus | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving) |
2020-09-21 00:29:56 +0200 | <dolio> | I think block arguments are a good idea (mostly), but characterising two extra characters as 'verbose' seems a little silly. |
2020-09-21 00:30:38 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 00:33:08 +0200 | isovector1 | (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) (Remote host closed the connection) |
2020-09-21 00:33:16 +0200 | isovector1 | (~isovector@d207-81-8-13.bchsia.telus.net) |
2020-09-21 00:33:23 +0200 | <edwardk> | i mean i grumble about the extra : in :: all the time |
2020-09-21 00:33:38 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) |
2020-09-21 00:33:40 +0200 | <edwardk> | so who am i to begrudge someone a complaint about twice as many characters |
2020-09-21 00:34:46 +0200 | <yushyin> | unfortunate hysterical reasons with the : vs. :: matter |
2020-09-21 00:35:21 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 265 seconds) |
2020-09-21 00:35:44 +0200 | <Rembane> | We need a Haskell dialect where the : and :: are swapped. |
2020-09-21 00:35:55 +0200 | <koz_> | Rembane: So, Idris? :P |
2020-09-21 00:36:48 +0200 | <edwardk> | then the laziness gets ya |
2020-09-21 00:39:57 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 00:40:06 +0200 | <Rembane> | koz_: Yeah, why not? :) |
2020-09-21 00:40:21 +0200 | <dolio> | I don't think the extra typing hurts as much as being different from the settled notation. |
2020-09-21 00:40:29 +0200 | <yushyin> | Rembane: https://github.com/ghc-proposals/ghc-proposals/pull/118 |
2020-09-21 00:41:07 +0200 | ski | . o O ( ⌜∷⌝ ) |
2020-09-21 00:41:20 +0200 | <Axman6> | Rembane: DAML? |
2020-09-21 00:42:53 +0200 | aidecoe | (~aidecoe@unaffiliated/aidecoe) (Ping timeout: 272 seconds) |
2020-09-21 00:43:27 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 260 seconds) |
2020-09-21 00:43:48 +0200 | pingiun | (~pingiun@j63019.upc-j.chello.nl) |
2020-09-21 00:43:50 +0200 | <Rembane> | yushyin: Wow. Nice. |
2020-09-21 00:44:08 +0200 | <Rembane> | Axman6: Dots Are More LOL? |
2020-09-21 00:46:11 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
2020-09-21 00:47:12 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 00:47:43 +0200 | <koz_> | Rembane: Dots Are More Leet. |
2020-09-21 00:47:48 +0200 | isovector1 | (~isovector@d207-81-8-13.bchsia.telus.net) (Ping timeout: 258 seconds) |
2020-09-21 00:47:56 +0200 | <dolio> | Regardless, it's never going to be worth changing in its own right. |
2020-09-21 00:48:46 +0200 | <Rembane> | koz_: Of course! I'm way too tired to get that on the first try. |
2020-09-21 00:53:01 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2020-09-21 00:53:09 +0200 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 260 seconds) |
2020-09-21 00:53:50 +0200 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2020-09-21 00:54:32 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds) |
2020-09-21 00:54:39 +0200 | <Axman6> | @google DAML |
2020-09-21 00:54:40 +0200 | <lambdabot> | No Result Found. |
2020-09-21 00:54:45 +0200 | <Axman6> | uwot |
2020-09-21 00:55:06 +0200 | __monty__ | (~toonn@unaffiliated/toonn) (Quit: leaving) |
2020-09-21 00:55:10 +0200 | <MarcelineVQ> | don't all mutts leak? |
2020-09-21 00:55:55 +0200 | <Axman6> | https://daml.com - a dialect of Haskell for smart contracts, its compiler GHC with some desugaring on the front end (including : <-> ::, ples a lot of other nice extensions which make using the language day to day really nice) |
2020-09-21 00:56:07 +0200 | NaN | (43aa4b1c@c-67-170-75-28.hsd1.wa.comcast.net) |
2020-09-21 00:56:31 +0200 | NaN | Guest39453 |
2020-09-21 00:56:52 +0200 | <koz_> | MarcelineVQ: Don't All Marsupials Lie? |
2020-09-21 00:57:17 +0200 | <MarcelineVQ> | Driven Antelopes Must Leap |
2020-09-21 00:57:30 +0200 | <Guest39453> | uh? |
2020-09-21 00:57:42 +0200 | <Axman6> | this is the secret code, you are now authenticated |
2020-09-21 00:58:18 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
2020-09-21 00:58:48 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 00:59:11 +0200 | <Guest39453> | @help |
2020-09-21 00:59:12 +0200 | <lambdabot> | help <command>. Ask for help for <command>. Try 'list' for all commands |
2020-09-21 00:59:26 +0200 | <Axman6> | plus* |
2020-09-21 00:59:29 +0200 | ski | looks at Guest39453 |
2020-09-21 01:00:00 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) |
2020-09-21 01:00:01 +0200 | <Guest39453> | just seeing if lambdabot is real |
2020-09-21 01:00:49 +0200 | <koz_> | Lambdabot is indeed a figment of your imagination. |
2020-09-21 01:00:53 +0200 | <Axman6> | are bits real? |
2020-09-21 01:00:56 +0200 | <MarcelineVQ> | how can lambdabot be real if our toes aren't real |
2020-09-21 01:01:11 +0200 | howdoi | (uid224@gateway/web/irccloud.com/x-jznybxwchugeubau) |
2020-09-21 01:01:29 +0200 | cosimone_ | (~cosimone@5.170.241.4) |
2020-09-21 01:03:06 +0200 | <Axman6> | deep |
2020-09-21 01:03:17 +0200 | <Axman6> | but not like learning, like the ocean |
2020-09-21 01:04:28 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Ping timeout: 260 seconds) |
2020-09-21 01:05:17 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 260 seconds) |
2020-09-21 01:06:15 +0200 | <orion> | tomsmeding: Is a type familiy the same as a type synonym?: https://github.com/acid-state/acid-state/blob/bf1fa2466e749f91d2e3152ced15331f062e8d10/src/Data/Ac… |
2020-09-21 01:06:58 +0200 | <Axman6> | no |
2020-09-21 01:07:16 +0200 | cosimone_ | cosimone |
2020-09-21 01:07:42 +0200 | MorrowM | (~max@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 272 seconds) |
2020-09-21 01:09:30 +0200 | bahamas | (~lucian@188.24.181.166) |
2020-09-21 01:09:30 +0200 | bahamas | (~lucian@188.24.181.166) (Changing host) |
2020-09-21 01:09:30 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 01:10:52 +0200 | cyphase | (~cyphase@unaffiliated/cyphase) (Ping timeout: 272 seconds) |
2020-09-21 01:12:56 +0200 | machinedgod | (~machinedg@d67-193-126-196.home3.cgocable.net) |
2020-09-21 01:13:03 +0200 | mitchellsalad | (uid40617@gateway/web/irccloud.com/x-ahcdpvrnkonimwkz) |
2020-09-21 01:14:01 +0200 | aidecoe | (~aidecoe@unaffiliated/aidecoe) |
2020-09-21 01:14:15 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 258 seconds) |
2020-09-21 01:17:50 +0200 | <orion> | Oh, tomsmeding was talking about MethodState. |
2020-09-21 01:19:01 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 01:19:35 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@104.200.129.62) (Quit: Leaving) |
2020-09-21 01:20:29 +0200 | Guest39453 | (43aa4b1c@c-67-170-75-28.hsd1.wa.comcast.net) (Remote host closed the connection) |
2020-09-21 01:20:58 +0200 | cyphase | (~cyphase@unaffiliated/cyphase) |
2020-09-21 01:28:29 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Ping timeout: 272 seconds) |
2020-09-21 01:30:14 +0200 | <orion> | tomsmeding: type instance MethodState UpdateNow = AppState |
2020-09-21 01:34:51 +0200 | sepi | (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) |
2020-09-21 01:36:12 +0200 | pera | (~pera@unaffiliated/pera) (Ping timeout: 272 seconds) |
2020-09-21 01:42:14 +0200 | sepi | (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) (Remote host closed the connection) |
2020-09-21 01:45:21 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Remote host closed the connection) |
2020-09-21 01:46:45 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
2020-09-21 01:49:15 +0200 | opticblast | (~june@075-128-229-153.res.spectrum.com) (Quit: leaving) |
2020-09-21 01:49:21 +0200 | jedws | (~jedws@121.209.139.222) |
2020-09-21 01:49:37 +0200 | <orion> | tomsmeding: I got it! All I had to do was change the type signature to this: update :: (UpdateEvent event, MethodState event ~ AppState, MonadIO m, MonadTime m) |
2020-09-21 01:49:39 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 01:50:07 +0200 | <orion> | Thank you for your assistance. |
2020-09-21 01:52:43 +0200 | MorrowM | (~max@bzq-110-168-31-106.red.bezeqint.net) |
2020-09-21 01:53:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-09-21 01:53:20 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Remote host closed the connection) |
2020-09-21 01:53:57 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
2020-09-21 01:54:34 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds) |
2020-09-21 01:57:51 +0200 | cipherchess | (~oned4@151.51.54.223) |
2020-09-21 01:58:07 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) |
2020-09-21 01:58:14 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:3846:7fa4:c749:eb08) |
2020-09-21 02:00:01 +0200 | romtam | (~romtam@s91904426.blix.com) () |
2020-09-21 02:00:10 +0200 | atk | (~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.) |
2020-09-21 02:00:32 +0200 | <cipherchess> | In cabal, what is the difference between v2- and new-? Which one should I use? |
2020-09-21 02:00:50 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-09-21 02:00:54 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
2020-09-21 02:00:59 +0200 | <dolio> | The only difference is the name. |
2020-09-21 02:01:42 +0200 | <dolio> | If your cabal-install is 3 or newer (I think), those are the default, as well. |
2020-09-21 02:01:59 +0200 | ddellacosta | (~dd@86.106.121.168) (Quit: WeeChat 2.8) |
2020-09-21 02:02:02 +0200 | atk | (~Arch-TK@ircpuzzles/staff/Arch-TK) |
2020-09-21 02:02:33 +0200 | <cipherchess> | Oh nice, thank you. |
2020-09-21 02:02:33 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Client Quit) |
2020-09-21 02:02:51 +0200 | <edwardk> | Cale: i figured a way to make everything work. i just had to give up on Nat. |
2020-09-21 02:02:53 +0200 | <edwardk> | =) |
2020-09-21 02:03:54 +0200 | <edwardk> | now it "just works" https://github.com/ekmett/haskell/blob/master/types/example/Vec.hs -- and you can even swap out Natural there for Int, Word, etc. to get things with smaller singletons. |
2020-09-21 02:04:09 +0200 | MorrowM | (~max@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection) |
2020-09-21 02:04:48 +0200 | ddellacosta | (~dd@86.106.121.168) |
2020-09-21 02:05:41 +0200 | <Cale> | Well, that's definitely simpler |
2020-09-21 02:06:15 +0200 | <edwardk> | basically i gave in and made fully general Z' and S' data families and used them to make Word, Word16, Natural ... all inhabitable as kinds. then made 'safe' aliases for Z and S that delegate to 0 and 1+ for the nat case but otherwise use those Z' and S' hacked constructors |
2020-09-21 02:06:21 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 02:07:31 +0200 | <edwardk> | to be fully safe the Z and S I export should have an enumerated set of types for which they work, but the proof of concept is nice |
2020-09-21 02:07:56 +0200 | <edwardk> | you can't use Nat in there or you get the lack of injection issue we had before, but everything else works as expected and Nat is no longer my bottleneck |
2020-09-21 02:08:21 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) |
2020-09-21 02:08:27 +0200 | <Cale> | The definition of the S type family is amusing |
2020-09-21 02:09:06 +0200 | shatriff | (~vitaliish@176.52.219.10) |
2020-09-21 02:09:12 +0200 | cipherchess | (~oned4@151.51.54.223) () |
2020-09-21 02:09:25 +0200 | <edwardk> | what i'll do is switch it to an open type family that way i can enumerate exactly which types it works on and users can extend that set by importing Data.Type.Unsafe and adding a type instance |
2020-09-21 02:09:47 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds) |
2020-09-21 02:10:57 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 02:13:04 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) |
2020-09-21 02:13:13 +0200 | <edwardk> | oh, i have an even better hack, one sec |
2020-09-21 02:13:26 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Client Quit) |
2020-09-21 02:14:27 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 02:16:41 +0200 | <edwardk> | there |
2020-09-21 02:16:58 +0200 | <edwardk> | now you need to instantiate Nice in order to unstick the evaluation of Z and S for your type |
2020-09-21 02:17:06 +0200 | <edwardk> | making them safer to export from Data.Type |
2020-09-21 02:17:16 +0200 | <edwardk> | they'll eval for naturals and any Nice type |
2020-09-21 02:17:44 +0200 | sm[m] | thinks why can't we have a SwapColons extension |
2020-09-21 02:18:37 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-09-21 02:19:06 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Ping timeout: 246 seconds) |
2020-09-21 02:19:58 +0200 | <edwardk> | its not currently as safe as i'd like, because you can just claim 'Nice' for any type you want. a safer version would export the Nice, but not include the defaults i guess |
2020-09-21 02:20:27 +0200 | <edwardk> | that way if you have your own injective zero and succ you can instantiate the class, or you can delegate to mine through Unsafe |
2020-09-21 02:20:33 +0200 | <edwardk> | ok, going back and writing longer instances |
2020-09-21 02:20:45 +0200 | Xing`1 | (~Xing`@185.244.214.216) |
2020-09-21 02:22:22 +0200 | <ddellacosta> | Baader-Meinhof is a funny thing. This morning I was checking out haskellweekly.news and clicked on a blog post about contravariant functors, as I haven't built up much of an intuition for them yet, so was interested. I skimmed it enough to note that it talked about composing predicate functions. Later, I jumped back into a side project debugging some FFI code, and searched for items on this |
2020-09-21 02:22:24 +0200 | <ddellacosta> | topic--found another blog post, which...talked about using contravariant functors in the context of debugging. Finally I took a break and looked up a logging library someone had mentioned earlier today here, co-log...yeah, more contravariant functors. I haven't read all of these in depth yet, but I guess the universe/my unconscious is telling me I need to stop slacking off |
2020-09-21 02:23:20 +0200 | <koz_> | ddellacosta: Contravariant functors are indeed cool. |
2020-09-21 02:23:31 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 02:23:36 +0200 | <ddellacosta> | they seem kind of mindblowing honestly |
2020-09-21 02:24:02 +0200 | <koz_> | ddellacosta: They can do some really cool things - discrimination sorting, for example. |
2020-09-21 02:24:17 +0200 | <ddellacosta> | damnit, now I have another thing to go read about lol |
2020-09-21 02:24:32 +0200 | <koz_> | ddellacosta: Do you know how radix sorting works? |
2020-09-21 02:24:56 +0200 | <ddellacosta> | unfortunately no |
2020-09-21 02:25:04 +0200 | <koz_> | Read that first. |
2020-09-21 02:25:21 +0200 | <koz_> | It'll help a lot to understand what's happening and why it has the asymptotics it claims. |
2020-09-21 02:25:48 +0200 | ddellacosta | pulls out the CLRS |
2020-09-21 02:27:51 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 02:28:27 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 02:31:22 +0200 | borne | (~fritjof@200116b86490460022497ba62715fb72.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-09-21 02:33:00 +0200 | bahamas | (~lucian@188.24.181.166) |
2020-09-21 02:33:01 +0200 | bahamas | (~lucian@188.24.181.166) (Changing host) |
2020-09-21 02:33:01 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 02:33:12 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2020-09-21 02:33:18 +0200 | suppi | (~suppi@172.246.241.246) (Ping timeout: 256 seconds) |
2020-09-21 02:35:39 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) |
2020-09-21 02:37:41 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds) |
2020-09-21 02:38:28 +0200 | CMCDragonkai1 | (~Thunderbi@124.19.3.250) |
2020-09-21 02:39:31 +0200 | <ddellacosta> | koz_ thank you, that was super interesting. As far as discrimination sorting, is there a better source than this? https://hackage.haskell.org/package/discrimination Everything else that comes up is for like, young child education |
2020-09-21 02:39:36 +0200 | plutoniix | (~q@ppp-223-24-94-234.revip6.asianet.co.th) |
2020-09-21 02:39:47 +0200 | <Cale> | ddellacosta: For the most part, a decent intuition for practically all the examples relevant to programming is just that when F is a contravariant functor, then a value of type F a is something which consumes values of type a |
2020-09-21 02:40:02 +0200 | <koz_> | ddellacosta: That's the source, plus its links. |
2020-09-21 02:40:05 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 02:40:19 +0200 | <koz_> | I'd read the papers it links - if you're used to algorithm literature, it's pretty readable. |
2020-09-21 02:40:31 +0200 | <ddellacosta> | Cale: thank you, that is helpful! |
2020-09-21 02:40:42 +0200 | <ddellacosta> | koz_: ah okay, I didn't see any linked papers but will look again |
2020-09-21 02:41:01 +0200 | <ddellacosta> | d'oh right at the top, nevermind |
2020-09-21 02:41:03 +0200 | <ddellacosta> | thanks koz_ ! |
2020-09-21 02:41:12 +0200 | <koz_> | No worries! Happy reading. |
2020-09-21 02:41:29 +0200 | isovector1 | (~isovector@d207-81-8-13.bchsia.telus.net) |
2020-09-21 02:41:30 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 02:44:31 +0200 | <ski> | ddellacosta : one example which can be made into a contravariant functor is the write end of a concurrent communication channel (also a write view on a mutable cell) |
2020-09-21 02:45:07 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 272 seconds) |
2020-09-21 02:45:42 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2020-09-21 02:45:56 +0200 | ddellacosta | thinks about it |
2020-09-21 02:46:27 +0200 | <ski> | ("can be made", in this case, means that you allow attaching an arbitrary preprocessing step (function), that you apply before you write to the channel/cell) |
2020-09-21 02:46:28 +0200 | ransom | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
2020-09-21 02:46:55 +0200 | <ddellacosta> | ski: okay that's helpful, one thing I read earlier today was that the order of processing is conceptually "reversed" when compared to a covariant functor |
2020-09-21 02:47:05 +0200 | <ddellacosta> | I mean wrt contramap |
2020-09-21 02:47:31 +0200 | <ski> | yes |
2020-09-21 02:48:25 +0200 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds) |
2020-09-21 02:48:30 +0200 | <ddellacosta> | now I'm trying to understand how that connects to what Cale said |
2020-09-21 02:49:15 +0200 | <ski> | well, the write end/view of the channel/cell consumes values, in that you feed a value to it, when writing |
2020-09-21 02:49:17 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 02:50:18 +0200 | <ski> | (and read end/view will produce values, when reading. so that can be made into a covariant functor (by allowing attaching an arbitrary post-processing step (function), after reading)) |
2020-09-21 02:51:31 +0200 | <ddellacosta> | okay thank you ski , I think I need to think about that for a bit |
2020-09-21 02:52:04 +0200 | plutoniix | (~q@ppp-223-24-94-234.revip6.asianet.co.th) (Ping timeout: 246 seconds) |
2020-09-21 02:52:06 +0200 | <ddellacosta> | like intuitively it makes sense, but the deeper structure of it all is eluding me still |
2020-09-21 02:52:28 +0200 | <ski> | (if you want to, you could try to wrap `Chan' or `IORef' into such read and write ends/views. and then see if you can, possibly with some modification, make the read ones covariant functors, and the write ones contravariant functors) |
2020-09-21 02:52:57 +0200 | <ddellacosta> | okay interesting |
2020-09-21 02:53:15 +0200 | <ski> | (also providing some relevant operations on the new data types (which are to be exported abstractly)) |
2020-09-21 02:53:31 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 02:53:40 +0200 | <Cale> | newtype WriteEnd a = MkWriteEnd { writeTo :: a -> IO () } |
2020-09-21 02:54:12 +0200 | <ski> | it might perhaps sometimes be nice to have a callback that you want to pass a channel to, but you only want it to write to the channel, not read, so you only pass it the write end |
2020-09-21 02:54:26 +0200 | <ski> | Cale : hah :) |
2020-09-21 02:54:39 +0200 | <Cale> | ddellacosta: Try writing the instance for that :) |
2020-09-21 02:54:53 +0200 | <ddellacosta> | Cale: okay cool |
2020-09-21 02:55:01 +0200 | <ddellacosta> | and ski the last thing you just said clicked, thank you |
2020-09-21 02:55:32 +0200 | <ddellacosta> | and I can actually kind of see how that's like a predicate now in the general sense |
2020-09-21 02:56:26 +0200 | <Cale> | Yeah, there will be basically no difference in what the instance looks like |
2020-09-21 03:00:11 +0200 | <ski> | ddellacosta : btw, for the read end, you can try to make a version of `getChanContents' as well |
2020-09-21 03:00:53 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) |
2020-09-21 03:00:56 +0200 | <ddellacosta> | okay |
2020-09-21 03:02:58 +0200 | xff0x | (~fox@2001:1a81:53e2:5200:158c:d17f:d83e:dc7f) |
2020-09-21 03:03:23 +0200 | zopsi | (zopsi@2600:3c00::f03c:91ff:fe14:551f) (Remote host closed the connection) |
2020-09-21 03:03:32 +0200 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2020-09-21 03:05:18 +0200 | plutoniix | (~q@175.176.222.7) |
2020-09-21 03:05:23 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 03:05:35 +0200 | wroathe_ | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 03:06:08 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 272 seconds) |
2020-09-21 03:06:24 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 03:06:30 +0200 | zopsi | (~zopsi@irc.dir.ac) |
2020-09-21 03:06:46 +0200 | xff0x_ | (~fox@port-92-195-46-13.dynamic.as20676.net) (Ping timeout: 272 seconds) |
2020-09-21 03:08:27 +0200 | <ski> | hm, pondering `dupChan' |
2020-09-21 03:09:27 +0200 | <ski> | at first sight, it would seen one would do `WriteChan a -> IO (ReadChan a)' .. |
2020-09-21 03:09:34 +0200 | <koz_> | Anime has ruined concurrency for me - every time I see any variant of 'chan' I'm amused. |
2020-09-21 03:09:56 +0200 | wroathe_ | wroathe |
2020-09-21 03:10:07 +0200 | <ski> | .. however, this isn't compatible with having `WriteChan' a contravariant functor |
2020-09-21 03:11:06 +0200 | <ski> | `Chan a -> IO (ReadChan a)' would be possible, of course (just `dupChan' and convert to `ReadChan') |
2020-09-21 03:13:26 +0200 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer) |
2020-09-21 03:14:01 +0200 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) |
2020-09-21 03:14:40 +0200 | g-belmonte | (~g-belmont@2804:14c:8786:9312:3638:eaf5:dc36:146d) (Quit: Leaving) |
2020-09-21 03:14:55 +0200 | arahael | (~arahael@118.208.100.107) (Ping timeout: 240 seconds) |
2020-09-21 03:15:14 +0200 | ddellacosta | (~dd@86.106.121.168) (Ping timeout: 256 seconds) |
2020-09-21 03:15:47 +0200 | <ski> | however, it seems that if one had a difunctor, `RWChan a b' being contravariant in `a' (write end type) and covariant in `b' (read end type), then one could do `RWChan a b -> IO (ReadChan b)' (obviously also `RWChan a b -> IO (RWChan a b)' would work) |
2020-09-21 03:17:24 +0200 | arahael | (~arahael@203.194.42.27) |
2020-09-21 03:17:25 +0200 | zopsi | (~zopsi@irc.dir.ac) (Max SendQ exceeded) |
2020-09-21 03:18:14 +0200 | zopsi | (zopsi@2600:3c00::f03c:91ff:fe14:551f) |
2020-09-21 03:18:15 +0200 | <ski> | hm. although if one takes advantage if the fact that `Chan', which `ReadChan' is presumably implemented in terms of, also contains the write end, one could have `ReadChan a -> IO (ReadChan a)' .. although this feels like cheating a bit, since a direct reimplementation, separating the read and write ends, rather than just hiding one or the other, couldn't do this |
2020-09-21 03:21:20 +0200 | xerox_ | (~xerox@unaffiliated/xerox) |
2020-09-21 03:21:28 +0200 | ntwhaaci^ | (ntwhaaci@ip98-184-89-2.mc.at.cox.net) () |
2020-09-21 03:21:38 +0200 | CMCDragonkai1 | (~Thunderbi@124.19.3.250) (Ping timeout: 256 seconds) |
2020-09-21 03:22:21 +0200 | zopsi | (zopsi@2600:3c00::f03c:91ff:fe14:551f) (Max SendQ exceeded) |
2020-09-21 03:22:46 +0200 | zopsi | (zopsi@2600:3c00::f03c:91ff:fe14:551f) |
2020-09-21 03:25:36 +0200 | wei2912 | (~wei2912@unaffiliated/wei2912) |
2020-09-21 03:26:56 +0200 | zopsi | (zopsi@2600:3c00::f03c:91ff:fe14:551f) (Max SendQ exceeded) |
2020-09-21 03:27:20 +0200 | zopsi | (~zopsi@irc.dir.ac) |
2020-09-21 03:27:32 +0200 | zaquest | (~notzaques@5.128.210.178) |
2020-09-21 03:28:17 +0200 | qualiaqq | (~user@47.189.249.188) |
2020-09-21 03:31:26 +0200 | zopsi | (~zopsi@irc.dir.ac) (Max SendQ exceeded) |
2020-09-21 03:31:50 +0200 | zopsi | (~zopsi@irc.dir.ac) |
2020-09-21 03:36:34 +0200 | fulc9277 | (~fulc927@unaffiliated/fulc927) |
2020-09-21 03:36:38 +0200 | <zebrag> | I'm trying to understand what is "existential" in "existential types". Is it related to quantifiers? In what way? |
2020-09-21 03:37:38 +0200 | <ski> | yes |
2020-09-21 03:38:13 +0200 | <ski> | do you understand what's universal about polymorphism ? |
2020-09-21 03:39:12 +0200 | <MarcelineVQ> | Cale: what's that comparing <> example you use all the time? |
2020-09-21 03:39:22 +0200 | <ski> | @where monoids |
2020-09-21 03:39:23 +0200 | <lambdabot> | comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of ` |
2020-09-21 03:39:23 +0200 | <lambdabot> | instance Monoid a => Monoid (rho -> a)' |
2020-09-21 03:39:25 +0200 | fulc927 | (~fulc927@unaffiliated/fulc927) (Ping timeout: 240 seconds) |
2020-09-21 03:39:33 +0200 | <MarcelineVQ> | :D |
2020-09-21 03:39:35 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Ping timeout: 272 seconds) |
2020-09-21 03:39:36 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-09-21 03:40:13 +0200 | <zebrag> | ski: I believe I understand what's universal about polymorphism |
2020-09-21 03:40:14 +0200 | howdoi | (uid224@gateway/web/irccloud.com/x-jznybxwchugeubau) (Quit: Connection closed for inactivity) |
2020-09-21 03:40:41 +0200 | hololeap | (~hololeap@unaffiliated/hololeap) |
2020-09-21 03:40:44 +0200 | <ski> | zebrag : and you understand rank-2 ? |
2020-09-21 03:41:09 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 03:41:32 +0200 | <zebrag> | ski: do you mean about the rho being in a negative position? |
2020-09-21 03:42:03 +0200 | <ski> | `rho' ? |
2020-09-21 03:42:40 +0200 | <zebrag> | wasn't meant for me, instance Monoid a => Monoid (rho -> a)' |
2020-09-21 03:42:56 +0200 | <zebrag> | so no I don't quite undestand rank-2 |
2020-09-21 03:42:58 +0200 | <ski> | nah, that was answering another question |
2020-09-21 03:43:27 +0200 | <ski> | well, let me try to fast-forward over `forall' |
2020-09-21 03:44:06 +0200 | <zebrag> | should read that: https://wiki.haskell.org/Rank-N_types |
2020-09-21 03:44:17 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@static-198-54-131-92.cust.tzulo.com) |
2020-09-21 03:44:26 +0200 | <ski> | in Haskell, it happens that many uses of `forall' are implicit. but that doesn't mean that they're not there. in another language, they could be required to be explicit, always |
2020-09-21 03:44:27 +0200 | <zebrag> | back in a jif |
2020-09-21 03:45:11 +0200 | <ski> | so if you see e.g. |
2020-09-21 03:45:19 +0200 | <ski> | length :: [a] -> Int |
2020-09-21 03:45:21 +0200 | <ski> | or |
2020-09-21 03:45:31 +0200 | <ski> | take :: Int -> [a] -> [a] |
2020-09-21 03:45:32 +0200 | <ski> | or |
2020-09-21 03:45:41 +0200 | <ski> | sort :: Ord a => [a] -> [a] |
2020-09-21 03:45:49 +0200 | <ski> | then these really mean |
2020-09-21 03:45:58 +0200 | <ski> | length :: forall a. [a] -> Int |
2020-09-21 03:46:04 +0200 | <ski> | take :: forall a. Int -> [a] -> [a] |
2020-09-21 03:46:08 +0200 | <ski> | sort :: forall a. Ord a => [a] -> [a] |
2020-09-21 03:46:46 +0200 | <zebrag> | ok |
2020-09-21 03:47:01 +0200 | <ski> | however : this does not mean that e.g. `[a] -> [a]' "really means" `forall a. [a] -> [a]' ! |
2020-09-21 03:47:44 +0200 | <ski> | since, in that case, `foo :: ([a] -> [a]) -> ([a] -> [a])' could be argued to "really mean" `foo :: (forall a. [a] -> [a]) -> (forall a. [a] -> [a])', which is incorrect |
2020-09-21 03:48:17 +0200 | <ski> | similarly, `data Foo a = MkFoo ([a] -> [a])' does not mean `data Foo a = MkFoo (forall a. [a] -> [a])' |
2020-09-21 03:48:40 +0200 | <ski> | the implicit `forall' is only inserted, right after the `::', in a type signature |
2020-09-21 03:49:43 +0200 | <ski> | and even then, there are a few exceptions, which boil down to the type variable(s) in question already being in scope. e.g. in `data Foo a = MkFoo {unFoo :: [a] -> [a]}', `a' is already in scope, bound by the `data Foo a =' "head" part |
2020-09-21 03:50:23 +0200 | <ski> | also, in `class Eq a where (==) :: a -> a -> Bool', `a' is already in scope, when we reach the type signature. so, this does not mean `class Eq a where (==) :: forall a. a -> a -> Bool' |
2020-09-21 03:50:37 +0200 | <ski> | (`(==)' is a monomorphic class method) |
2020-09-21 03:50:47 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-09-21 03:51:06 +0200 | <ski> | (i mention this, because these seems to be common confusions about where implicit `forall's are inserted) |
2020-09-21 03:51:15 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 03:51:39 +0200 | <ski> | anyway, `length :: forall a. [a] -> Int' means that : for every type `a', `length' can be used as having type `[a] -> Int' |
2020-09-21 03:51:59 +0200 | <ski> | strictly speaking, `length' is not a function, but a "polymorphic value" |
2020-09-21 03:52:48 +0200 | cosimone | (~cosimone@5.170.241.4) (Quit: Quit.) |
2020-09-21 03:53:17 +0200 | <ski> | however, when going from `length :: forall a. [a] -> Int' to say `length :: [String] -> Int', specializing the polymorphic value, to a function in this case, we don't actually write anything more than `length' |
2020-09-21 03:53:44 +0200 | inkbottle | (~inkbottle@aaubervilliers-654-1-112-119.w86-198.abo.wanadoo.fr) |
2020-09-21 03:54:01 +0200 | <ski> | (well, there is now an extension that allows one to explicitly write the specialization as `length @String', meaning that we pick `a' to be `String', so that this whole thing has type `[String] -> Int') |
2020-09-21 03:54:13 +0200 | zebrag | (~inkbottle@aaubervilliers-654-1-99-86.w86-212.abo.wanadoo.fr) (Ping timeout: 264 seconds) |
2020-09-21 03:54:20 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) |
2020-09-21 03:54:27 +0200 | tsrt^ | (tsrt@ip98-184-89-2.mc.at.cox.net) |
2020-09-21 03:55:12 +0200 | ddellacosta | (~dd@86.106.121.168) |
2020-09-21 03:55:56 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Remote host closed the connection) |
2020-09-21 03:56:32 +0200 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds) |
2020-09-21 03:57:48 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 246 seconds) |
2020-09-21 03:58:17 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 04:00:44 +0200 | <inkbottle> | ski: zebrag -> inkbottle; I'm still reading https://wiki.haskell.org/Rank-N_types, I think it was a very good suggestion |
2020-09-21 04:01:00 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) |
2020-09-21 04:01:51 +0200 | <ski> | ah, ok |
2020-09-21 04:02:22 +0200 | xff0x | (~fox@2001:1a81:53e2:5200:158c:d17f:d83e:dc7f) (Ping timeout: 260 seconds) |
2020-09-21 04:04:08 +0200 | xff0x | (~fox@2001:1a81:53e9:6d00:158c:d17f:d83e:dc7f) |
2020-09-21 04:04:13 +0200 | blankhart | (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net) |
2020-09-21 04:04:23 +0200 | <ski> | inkbottle : did the above explanation make sense, so far ? |
2020-09-21 04:07:34 +0200 | isovector1 | (~isovector@d207-81-8-13.bchsia.telus.net) (Ping timeout: 272 seconds) |
2020-09-21 04:09:14 +0200 | eric | (~eric@191.193.105.46) |
2020-09-21 04:09:25 +0200 | fulc9277 | (~fulc927@unaffiliated/fulc927) (Ping timeout: 240 seconds) |
2020-09-21 04:09:50 +0200 | eric | (~eric@191.193.105.46) (Read error: Connection reset by peer) |
2020-09-21 04:09:59 +0200 | danvet_ | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
2020-09-21 04:10:01 +0200 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2020-09-21 04:10:45 +0200 | <inkbottle> | ski: yes, they did |
2020-09-21 04:12:47 +0200 | <ski> | ok |
2020-09-21 04:13:05 +0200 | <ski> | so, if you have |
2020-09-21 04:13:20 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 04:13:22 +0200 | <ski> | blah :: (forall a. [a] -> [a]) -> [String] -> [String] |
2020-09-21 04:13:35 +0200 | <ski> | blah f ss = map f (f ss) |
2020-09-21 04:14:11 +0200 | notzmv` | (~user@177.103.86.92) |
2020-09-21 04:14:16 +0200 | <ski> | what this means is that `blah' itself is not polymorphic. rather, it requires its first argument (a callback function), to be polymorphic |
2020-09-21 04:15:31 +0200 | <ski> | so, you can e.g. call `blah id ["foo","bar"]', but you can't call `blah (map toUpper) ["foo","bar"]', since `map toUpper' has type `String -> String' (that is, `[Char] -> [Char]'), so is not polymorphic |
2020-09-21 04:15:58 +0200 | notzmv | (~user@unaffiliated/zmv) (Disconnected by services) |
2020-09-21 04:16:11 +0200 | notzmv` | (~user@177.103.86.92) (Changing host) |
2020-09-21 04:16:11 +0200 | notzmv` | (~user@unaffiliated/zmv) |
2020-09-21 04:16:13 +0200 | notzmv` | notzmv |
2020-09-21 04:16:24 +0200 | <ski> | and, in this case, `blah' uses the fact that `f' is polymorphic, by picking two different types to use for `a', at the two different uses of `f' in the body |
2020-09-21 04:16:50 +0200 | <ski> | (can you see if you can figure out which type `a' will be, in each of those two cases ?) |
2020-09-21 04:17:38 +0200 | <ski> | (btw, in case, it's not totally obvious, the signature `blah :: forall a. ([a] -> [a]) -> [String] -> [String]' would not work at all, for this implementation of `blah') |
2020-09-21 04:18:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2020-09-21 04:19:01 +0200 | <ski> | if you see `foo :: forall a. ..a..', then that means that the caller/user/consumer of `foo' will get to pick a type for `a'. while the callee/implementor/producer/definer of `foo', which is the definition/body for it, will have to make sure to work for any choice that could be made. may not assuming anything about `a' |
2020-09-21 04:19:06 +0200 | <inkbottle> | hang on... |
2020-09-21 04:19:18 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:3846:7fa4:c749:eb08) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 04:19:25 +0200 | ystael | (~ystael@209.6.50.55) (Ping timeout: 240 seconds) |
2020-09-21 04:19:38 +0200 | <inkbottle> | still reading what you wrote |
2020-09-21 04:19:55 +0200 | <ski> | to the body of `foo', `a' acts like an unknown/forgotten/hidden/opaque/abstract/"skolem"/rigid type, that it may assume nothing about |
2020-09-21 04:20:36 +0200 | drbean | (~drbean@TC210-63-209-28.static.apol.com.tw) |
2020-09-21 04:20:39 +0200 | <ski> | in the case of `sort :: forall a. Ord a => [a] -> [a]', the implementation of `sort' may assume that `a' is an instance of `Ord', and so can use the methods of `Ord' on values of type `a'. but can assume nothing else about `a' |
2020-09-21 04:21:14 +0200 | <ski> | `foo' can't "look inside" values of type `a'. neither can `sort', apart from via the methods of `Ord' |
2020-09-21 04:21:36 +0200 | notzmv` | (~user@177.103.86.92) |
2020-09-21 04:22:22 +0200 | <ski> | if you have say `foo :: forall a. (a -> Bool) -> ..a..', then `foo' can pass a value of type `a' to its callback argument (which is allowed to know what type `a' is, since it's provided by the caller, who picks `a'), and so is able to extract a `Bool' of info from the `a' value, using that |
2020-09-21 04:22:56 +0200 | <inkbottle> | ok |
2020-09-21 04:23:06 +0200 | notzmv` | (~user@177.103.86.92) (Changing host) |
2020-09-21 04:23:06 +0200 | notzmv` | (~user@unaffiliated/zmv) |
2020-09-21 04:23:09 +0200 | notzmv | (~user@unaffiliated/zmv) (Disconnected by services) |
2020-09-21 04:23:21 +0200 | notzmv` | notzmv |
2020-09-21 04:23:30 +0200 | <ski> | however, in the case of the rank-two `blah', the caller of the polymorphic `f' is `blah' itself |
2020-09-21 04:24:04 +0200 | <ski> | so, while the caller of the polymorphic `foo' was to choose `a', and the callee/implementation couldn't assume anything about `a' |
2020-09-21 04:25:19 +0200 | <ski> | in the case of the rank-two `blah', these two rôles are reversed : the callee/implementation of `blah' is the one that can pick and choose types for `a', while the caller of `blah' can't assume anything about `a' (and hence must pass a polymorphic callback, that assumes nothing about `a') |
2020-09-21 04:25:22 +0200 | ystael | (~ystael@209.6.50.55) |
2020-09-21 04:26:23 +0200 | machinedgod | (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 265 seconds) |
2020-09-21 04:27:04 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 04:27:10 +0200 | <ski> | this reversal of rôles between caller/user/consumer and callee/implementor/producer/definer, as pertains to who may pick and choose the actual type to use for the type variable `a', and who has to make do with the choice that's being made, is due to, in the rank-two `blah', having `forall' "to the left (inside)" of a function arrow `->' |
2020-09-21 04:27:28 +0200 | hackage | containers 0.6.4.1 - Assorted concrete container types https://hackage.haskell.org/package/containers-0.6.4.1 (dfeuer) |
2020-09-21 04:27:38 +0200 | <ski> | if you have `foo :: forall a. (..a.. -> ..a..)', then the caller picks `a' |
2020-09-21 04:28:04 +0200 | <ski> | if you have `foo :: ... -> (forall a. ..a..)', then the caller still picks `a' (but the first argument isn't allowed to mention `a') |
2020-09-21 04:28:30 +0200 | <ski> | (note that e.g. `take :: forall a. Int -> [a] -> [a]' is basically the same thing as `take :: Int -> forall a. [a] -> [a]') |
2020-09-21 04:29:00 +0200 | <ski> | but if you have `foo :: (forall a. ..a..) -> ...', the rank-two case, then the callee will get to pick `a' |
2020-09-21 04:29:49 +0200 | blankhart | (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-09-21 04:30:21 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 246 seconds) |
2020-09-21 04:30:44 +0200 | <ski> | if we had `foo :: ((forall a. ..a..) -> ...) -> ...', this would be rank-three (having a `forall' "inside, to the left of", two function arrows `->'), then the rôles are reversed again, so that the caller again picks `a' (by selecting a rank-two callback to pass, which will pick an `a' (or several), to use with its polymorphic callback) |
2020-09-21 04:30:53 +0200 | <ski> | and so on, for higher ranks .. |
2020-09-21 04:31:32 +0200 | blankhart | (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net) |
2020-09-21 04:32:09 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 04:32:10 +0200 | lagothrix | Guest42888 |
2020-09-21 04:32:10 +0200 | Guest42888 | (~lagothrix@unaffiliated/lagothrix) (Killed (rothfuss.freenode.net (Nickname regained by services))) |
2020-09-21 04:32:16 +0200 | lagothrix | (~lagothrix@unaffiliated/lagothrix) |
2020-09-21 04:32:18 +0200 | <ski> | (if there's several `forall's in a type, then we say the overall rank is the maximum of the individual ranks of the `forall's in it. ordinary polymorphic operations are rank-one. monomorphic operations could be said to be rank-zero, i suppose ..) |
2020-09-21 04:32:26 +0200 | <ski> | inkbottle : is this making sense ? |
2020-09-21 04:34:05 +0200 | <inkbottle> | I'm not done reading, I've been interrupted |
2020-09-21 04:34:30 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-09-21 04:35:00 +0200 | <ski> | take your time. if anything is unclear, if you want further elaboration, or you have questions or comments, please do tell |
2020-09-21 04:36:02 +0200 | <ski> | here's one other example of a rank-two (and in this case also polymorphic) operation : |
2020-09-21 04:36:13 +0200 | <ski> | runST :: forall a. (forall s. ST s a) -> a |
2020-09-21 04:38:23 +0200 | <inkbottle> | The explanation in terms of "who pick 'a" is very interesting |
2020-09-21 04:38:37 +0200 | <ski> | for "running" (executing/performing) an `ST s'-action (`ST s' expressing a kind of state effects, where one can dynamically allocate mutable reference cells (and arrays), and read from and write to them. implemented in terms of actual update-in-place, unlike say `State s' (which has a single global state `s', no dynamic allocation)) |
2020-09-21 04:39:26 +0200 | <ski> | yea, that's the main thing that happens, as we pass to higher ranks, we alternate between caller and callee picking |
2020-09-21 04:40:04 +0200 | <ski> | the usual reason for wanting to define a rank-two operation is that you actually want to use a callback with multiple choices for your type variable(s) |
2020-09-21 04:40:20 +0200 | <ski> | (as in my `blah' example a bit up) |
2020-09-21 04:40:38 +0200 | fulc9277 | (~fulc927@unaffiliated/fulc927) |
2020-09-21 04:40:38 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 04:41:19 +0200 | <ski> | another reason is to want to hide some implementation detail of the function, from its caller. that is, hide which (possiby single) type that the implementation uses |
2020-09-21 04:42:17 +0200 | <ski> | here's some kind of example of that. consider |
2020-09-21 04:42:28 +0200 | hackage | monad-memo 0.5.2 - Memoization monad transformer https://hackage.haskell.org/package/monad-memo-0.5.2 (EduardSergeev) |
2020-09-21 04:42:45 +0200 | <ski> | newtype StateT s m a = MkStateT (s -> m (a,s)) |
2020-09-21 04:43:08 +0200 | asan | (~yan4138@114.84.148.87) |
2020-09-21 04:43:14 +0200 | <ski> | there is a function |
2020-09-21 04:43:16 +0200 | <ski> | @type mapStateT |
2020-09-21 04:43:18 +0200 | <lambdabot> | (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b |
2020-09-21 04:43:46 +0200 | howdoi | (uid224@gateway/web/irccloud.com/x-mtwkarqdregvoupa) |
2020-09-21 04:44:00 +0200 | <ski> | that can be used to change the `m' in `StateT s m a' to another monad, `n' (also here swapping `a' out for `b') |
2020-09-21 04:44:47 +0200 | <ski> | however, in the callback, we can see that we're handed an action of type `m (a,s)', that will produce a pair. and we're to give back a new action of type `n (b,s)', that will also produce a pair |
2020-09-21 04:45:01 +0200 | <ski> | one might consider this as "implementation detail leaking" |
2020-09-21 04:45:08 +0200 | <ski> | so, one could make a variant |
2020-09-21 04:45:26 +0200 | pera | (~pera@unaffiliated/pera) |
2020-09-21 04:45:32 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 260 seconds) |
2020-09-21 04:45:48 +0200 | <ski> | mapStateT' :: (forall h. m h -> n h) -> StateT s m a -> StateT s n a |
2020-09-21 04:46:46 +0200 | <ski> | where `h' here hides the pair type from the caller of the function. in some cases, this can be useful to prevent the callback that the caller provides, from messing around with the internal implementation (the values of the "hidden" type `h') |
2020-09-21 04:47:00 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) |
2020-09-21 04:47:44 +0200 | suppi | (~suppi@172.246.241.246) |
2020-09-21 04:48:07 +0200 | <ski> | inkbottle : is that reasonably clear ? |
2020-09-21 04:48:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 04:49:59 +0200 | <ski> | (there are probably more suggestive examples of this "information hiding" capability of rank-two .. but i can't think offhand of one that would be quick to showcase) |
2020-09-21 04:52:34 +0200 | dansho | (~dansho@ip68-108-167-185.lv.lv.cox.net) |
2020-09-21 04:53:26 +0200 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-09-21 04:55:04 +0200 | suppi | (~suppi@172.246.241.246) (Ping timeout: 272 seconds) |
2020-09-21 04:55:47 +0200 | Volt_ | (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: ) |
2020-09-21 04:55:47 +0200 | danso | (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer) |
2020-09-21 04:56:22 +0200 | danso | (~dan@107-190-41-58.cpe.teksavvy.com) |
2020-09-21 04:56:50 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 04:57:27 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) |
2020-09-21 04:58:14 +0200 | ryansmccoy | (~ryansmcco@156.96.151.132) (Ping timeout: 272 seconds) |
2020-09-21 04:58:41 +0200 | ryansmccoy | (~ryansmcco@193.37.254.27) |
2020-09-21 04:59:45 +0200 | theDon | (~td@muedsl-82-207-238-073.citykom.de) (Ping timeout: 240 seconds) |
2020-09-21 05:00:01 +0200 | Xing`1 | (~Xing`@185.244.214.216) () |
2020-09-21 05:00:20 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 05:01:43 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) |
2020-09-21 05:01:53 +0200 | theDon | (~td@muedsl-82-207-238-036.citykom.de) |
2020-09-21 05:03:54 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
2020-09-21 05:04:48 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-09-21 05:09:40 +0200 | notzmv` | (~user@177.103.86.92) |
2020-09-21 05:11:46 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) |
2020-09-21 05:12:10 +0200 | iscke | (~black@60.225.157.201) |
2020-09-21 05:12:45 +0200 | notzmv | (~user@unaffiliated/zmv) (Ping timeout: 240 seconds) |
2020-09-21 05:12:56 +0200 | <ski> | inkbottle : anyway .. if you want to, perhaps we could continue this conversation later (getting to existentials, hopefully), as it's quite late here |
2020-09-21 05:13:25 +0200 | notzmv` | (~user@177.103.86.92) (Changing host) |
2020-09-21 05:13:25 +0200 | notzmv` | (~user@unaffiliated/zmv) |
2020-09-21 05:13:30 +0200 | notzmv` | notzmv |
2020-09-21 05:14:05 +0200 | bloodstalker | (~bloodstal@46.166.187.178) (Remote host closed the connection) |
2020-09-21 05:14:35 +0200 | ryansmccoy | (~ryansmcco@193.37.254.27) (Ping timeout: 240 seconds) |
2020-09-21 05:14:50 +0200 | petersen | (~petersen@redhat/juhp) |
2020-09-21 05:16:57 +0200 | ryansmccoy | (~ryansmcco@68.235.48.108) |
2020-09-21 05:17:39 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-09-21 05:18:48 +0200 | acidjnk_new2 | (~acidjnk@p200300d0c736584378afc0f7e05aaafd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 05:21:09 +0200 | teardown | (~user@unaffiliated/mrush) (Ping timeout: 260 seconds) |
2020-09-21 05:22:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-09-21 05:27:40 +0200 | mmohammadi981261 | (~mmohammad@2.178.188.114) |
2020-09-21 05:30:32 +0200 | modaljunk | (~modaljunk@gateway/tor-sasl/modaljunk) |
2020-09-21 05:30:52 +0200 | modaljunk | (~modaljunk@gateway/tor-sasl/modaljunk) (Remote host closed the connection) |
2020-09-21 05:31:18 +0200 | modaljunk | (~modaljunk@gateway/tor-sasl/modaljunk) |
2020-09-21 05:34:44 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) (Quit: TooDifficult) |
2020-09-21 05:35:04 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) |
2020-09-21 05:36:07 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
2020-09-21 05:38:14 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-09-21 05:39:24 +0200 | mirrorbird | (~psutcliff@m83-187-173-228.cust.tele2.se) |
2020-09-21 05:39:54 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) (Client Quit) |
2020-09-21 05:43:43 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 272 seconds) |
2020-09-21 05:45:28 +0200 | hackage | stm-actor 0.1.0.0 - See the README https://hackage.haskell.org/package/stm-actor-0.1.0.0 (sgschlesinger) |
2020-09-21 05:45:37 +0200 | ericsagnes | (~ericsagne@2405:6580:0:5100:5585:9ff6:72b9:d99a) (Ping timeout: 260 seconds) |
2020-09-21 05:47:29 +0200 | isovector1 | (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) |
2020-09-21 05:47:45 +0200 | asan | (~yan4138@114.84.148.87) (Ping timeout: 240 seconds) |
2020-09-21 05:48:01 +0200 | asan | (~yan4138@124.78.128.72) |
2020-09-21 05:49:26 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 05:53:47 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) |
2020-09-21 05:54:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-09-21 05:54:56 +0200 | suppi | (~suppi@172.246.241.246) |
2020-09-21 05:55:07 +0200 | modaljunk | (~modaljunk@gateway/tor-sasl/modaljunk) (Remote host closed the connection) |
2020-09-21 05:55:33 +0200 | modaljunk | (~modaljunk@gateway/tor-sasl/modaljunk) |
2020-09-21 05:56:13 +0200 | kini1 | (~kini@195.206.169.184) |
2020-09-21 05:56:29 +0200 | modaljunk | (~modaljunk@gateway/tor-sasl/modaljunk) (Client Quit) |
2020-09-21 05:57:53 +0200 | ericsagnes | (~ericsagne@2405:6580:0:5100:25d0:9c91:85b6:2191) |
2020-09-21 06:06:38 +0200 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9) |
2020-09-21 06:06:39 +0200 | Sanchayan | (~Sanchayan@122.167.114.73) |
2020-09-21 06:11:27 +0200 | dansho | (~dansho@ip68-108-167-185.lv.lv.cox.net) (Remote host closed the connection) |
2020-09-21 06:11:52 +0200 | dansho | (~dansho@ip68-108-167-185.lv.lv.cox.net) |
2020-09-21 06:12:02 +0200 | day_ | (~Unknown@unaffiliated/day) |
2020-09-21 06:12:27 +0200 | dale | (dale@unaffiliated/dale) (Remote host closed the connection) |
2020-09-21 06:14:35 +0200 | dale | (dale@2600:3c02::f03c:92ff:feb4:61d1) |
2020-09-21 06:14:56 +0200 | dale | (dale@2600:3c02::f03c:92ff:feb4:61d1) (Remote host closed the connection) |
2020-09-21 06:15:10 +0200 | day | (~Unknown@unaffiliated/day) (Ping timeout: 258 seconds) |
2020-09-21 06:15:10 +0200 | day_ | day |
2020-09-21 06:16:19 +0200 | dale | (dale@unaffiliated/dale) |
2020-09-21 06:16:40 +0200 | mrlazos | (~mrlazos@ppp046176231124.access.hol.gr) |
2020-09-21 06:17:23 +0200 | mrlazos | (~mrlazos@ppp046176231124.access.hol.gr) (Remote host closed the connection) |
2020-09-21 06:18:10 +0200 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-09-21 06:19:29 +0200 | ddellacosta | (~dd@86.106.121.168) (Ping timeout: 260 seconds) |
2020-09-21 06:19:29 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 06:20:18 +0200 | isovector1 | (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) (Remote host closed the connection) |
2020-09-21 06:20:45 +0200 | suppi | (~suppi@172.246.241.246) (Ping timeout: 260 seconds) |
2020-09-21 06:22:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 06:23:28 +0200 | hackage | stm-actor 0.1.1.0 - See the README https://hackage.haskell.org/package/stm-actor-0.1.1.0 (sgschlesinger) |
2020-09-21 06:24:41 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection) |
2020-09-21 06:25:14 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 06:25:25 +0200 | roconnor | (~roconnor@host-45-78-255-115.dyn.295.ca) (Ping timeout: 260 seconds) |
2020-09-21 06:26:57 +0200 | hackage | stm-actor 0.1.1.1 - A simplistic actor model based on STM https://hackage.haskell.org/package/stm-actor-0.1.1.1 (sgschlesinger) |
2020-09-21 06:29:36 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2020-09-21 06:29:51 +0200 | mmohammadi981261 | (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻) |
2020-09-21 06:30:31 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 06:31:20 +0200 | brettgilio | (~brettgili@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com>) |
2020-09-21 06:31:58 +0200 | hackage | wai-extra 3.0.32 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.0.32 (MichaelSnoyman) |
2020-09-21 06:32:33 +0200 | brettgilio | (~brettgili@brettgilio.com) |
2020-09-21 06:33:05 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 240 seconds) |
2020-09-21 06:35:12 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 06:38:43 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) (Ping timeout: 260 seconds) |
2020-09-21 06:41:35 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 06:42:26 +0200 | ggole | (~ggole@2001:8003:8119:7200:e0af:f6f1:e650:ba35) |
2020-09-21 06:42:39 +0200 | Amras | (~Amras@unaffiliated/amras0000) (Ping timeout: 246 seconds) |
2020-09-21 06:44:24 +0200 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
2020-09-21 06:45:17 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Remote host closed the connection) |
2020-09-21 06:46:09 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 246 seconds) |
2020-09-21 06:46:16 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) |
2020-09-21 06:48:58 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
2020-09-21 06:49:13 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 06:49:15 +0200 | suppi | (~suppi@172.246.241.246) |
2020-09-21 06:49:57 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 06:51:57 +0200 | wei2912 | (~wei2912@unaffiliated/wei2912) (Quit: Lost terminal) |
2020-09-21 06:54:10 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 06:56:28 +0200 | blankhart | (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net) (Quit: WeeChat 2.8) |
2020-09-21 06:56:33 +0200 | knupfer | (~Thunderbi@i5E86B42C.versanet.de) |
2020-09-21 06:57:52 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) (Ping timeout: 256 seconds) |
2020-09-21 06:57:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2020-09-21 06:59:01 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 06:59:06 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) |
2020-09-21 07:01:42 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 07:04:46 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) (Ping timeout: 246 seconds) |
2020-09-21 07:06:26 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
2020-09-21 07:06:56 +0200 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-09-21 07:07:34 +0200 | knupfer | (~Thunderbi@i5E86B42C.versanet.de) (Ping timeout: 246 seconds) |
2020-09-21 07:09:20 +0200 | suppi | (~suppi@172.246.241.246) (Ping timeout: 272 seconds) |
2020-09-21 07:09:30 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) |
2020-09-21 07:14:32 +0200 | Lord_of_Life_ | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2020-09-21 07:14:53 +0200 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds) |
2020-09-21 07:15:53 +0200 | Lord_of_Life_ | Lord_of_Life |
2020-09-21 07:16:40 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-09-21 07:16:56 +0200 | revprez_anzio | (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 272 seconds) |
2020-09-21 07:22:13 +0200 | mitchellsalad | (uid40617@gateway/web/irccloud.com/x-ahcdpvrnkonimwkz) (Quit: Connection closed for inactivity) |
2020-09-21 07:24:18 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 246 seconds) |
2020-09-21 07:24:46 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) |
2020-09-21 07:24:59 +0200 | asan | (~yan4138@124.78.128.72) (Ping timeout: 240 seconds) |
2020-09-21 07:25:17 +0200 | asan | (~yan4138@114.84.148.87) |
2020-09-21 07:25:44 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 07:25:48 +0200 | coot | (~coot@37.30.49.42.nat.umts.dynamic.t-mobile.pl) |
2020-09-21 07:26:14 +0200 | shafox | (~shafox@106.51.234.111) |
2020-09-21 07:31:13 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-09-21 07:33:25 +0200 | mirrorbird | (~psutcliff@m83-187-173-228.cust.tele2.se) (Quit: Leaving) |
2020-09-21 07:34:52 +0200 | jedws | (~jedws@121.209.139.222) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 07:35:54 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-09-21 07:35:56 +0200 | ryansmccoy | (~ryansmcco@68.235.48.108) (Ping timeout: 272 seconds) |
2020-09-21 07:36:06 +0200 | ryansmccoy | (~ryansmcco@193.37.254.27) |
2020-09-21 07:36:32 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) |
2020-09-21 07:37:33 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 07:40:16 +0200 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-09-21 07:44:58 +0200 | hackage | monad-memo 0.5.3 - Memoization monad transformer https://hackage.haskell.org/package/monad-memo-0.5.3 (EduardSergeev) |
2020-09-21 07:46:30 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 07:47:49 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) (Quit: Konversation terminated!) |
2020-09-21 07:48:36 +0200 | abhixec | (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2020-09-21 07:48:43 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) |
2020-09-21 07:53:23 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@static-198-54-131-92.cust.tzulo.com) (Quit: Leaving) |
2020-09-21 07:53:45 +0200 | drbean | (~drbean@TC210-63-209-28.static.apol.com.tw) (Ping timeout: 240 seconds) |
2020-09-21 07:55:04 +0200 | TooDifficult | (~TooDiffic@139.59.59.230) (Quit: TooDifficult) |
2020-09-21 07:55:12 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 07:57:05 +0200 | SanchayanM | (~Sanchayan@106.201.114.230) |
2020-09-21 07:57:28 +0200 | wavemode | (~wavemode@097-070-075-143.res.spectrum.com) (Ping timeout: 272 seconds) |
2020-09-21 07:58:35 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) (Remote host closed the connection) |
2020-09-21 07:58:39 +0200 | Sanchayan | (~Sanchayan@122.167.114.73) (Ping timeout: 260 seconds) |
2020-09-21 07:59:54 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) |
2020-09-21 08:00:02 +0200 | kini1 | (~kini@195.206.169.184) () |
2020-09-21 08:01:36 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection) |
2020-09-21 08:02:25 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 08:02:50 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection) |
2020-09-21 08:03:13 +0200 | Turmfalke | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2020-09-21 08:04:04 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 08:04:51 +0200 | Gerula | (~Gerula@unaffiliated/gerula) (Ping timeout: 260 seconds) |
2020-09-21 08:05:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 08:05:31 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Remote host closed the connection) |
2020-09-21 08:05:49 +0200 | suppi | (~suppi@172.246.241.246) |
2020-09-21 08:05:52 +0200 | takuan_dozo | (~takuan@178-116-218-225.access.telenet.be) |
2020-09-21 08:06:53 +0200 | drbean | (~drbean@TC210-63-209-64.static.apol.com.tw) |
2020-09-21 08:07:11 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds) |
2020-09-21 08:07:57 +0200 | mmohammadi981261 | (~mmohammad@2.178.188.114) |
2020-09-21 08:08:46 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2020-09-21 08:12:28 +0200 | suppi | (~suppi@172.246.241.246) (Ping timeout: 258 seconds) |
2020-09-21 08:12:37 +0200 | plutoniix | (~q@175.176.222.7) (Remote host closed the connection) |
2020-09-21 08:14:57 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) |
2020-09-21 08:15:21 +0200 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-09-21 08:15:26 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) (Remote host closed the connection) |
2020-09-21 08:16:39 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) |
2020-09-21 08:20:17 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 244 seconds) |
2020-09-21 08:21:18 +0200 | unknown | (~unknown@s91904426.blix.com) |
2020-09-21 08:21:31 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) |
2020-09-21 08:22:23 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) |
2020-09-21 08:22:24 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
2020-09-21 08:28:17 +0200 | sfvm | (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine) |
2020-09-21 08:31:30 +0200 | kayvan``` | (~user@52-119-115-243.PUBLIC.monkeybrains.net) |
2020-09-21 08:32:26 +0200 | jedws | (~jedws@121.209.139.222) |
2020-09-21 08:32:43 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 08:33:04 +0200 | kayvan`` | (~user@52-119-115-243.PUBLIC.monkeybrains.net) (Ping timeout: 256 seconds) |
2020-09-21 08:36:03 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 246 seconds) |
2020-09-21 08:36:34 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) |
2020-09-21 08:39:52 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 08:40:20 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection) |
2020-09-21 08:40:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-09-21 08:40:27 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 08:40:32 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 08:41:11 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 08:44:50 +0200 | danso | (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer) |
2020-09-21 08:44:59 +0200 | shad0w_ | (~shad0w_@160.202.36.27) |
2020-09-21 08:45:17 +0200 | <shad0w_> | morning people. just droppin in to say Hi : ) |
2020-09-21 08:45:36 +0200 | munksgaard | (~philip@2a03:b0c0:3:d0::2eef:1001) ("WeeChat 1.0.1") |
2020-09-21 08:45:41 +0200 | <Axman6> | Hello! |
2020-09-21 08:45:42 +0200 | danso | (~dan@107-190-41-58.cpe.teksavvy.com) |
2020-09-21 08:45:49 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Ping timeout: 264 seconds) |
2020-09-21 08:49:00 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2020-09-21 08:52:23 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
2020-09-21 08:52:52 +0200 | qualiaqq | (~user@47.189.249.188) (Quit: ERC (IRC client for Emacs 28.0.50)) |
2020-09-21 08:52:56 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) |
2020-09-21 08:52:57 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-09-21 08:55:06 +0200 | toorevitimirp | (~tooreviti@117.182.182.33) (Ping timeout: 272 seconds) |
2020-09-21 08:55:47 +0200 | cfricke | (~cfricke@unaffiliated/cfricke) (Ping timeout: 258 seconds) |
2020-09-21 09:00:32 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 09:01:48 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) |
2020-09-21 09:01:53 +0200 | jespada | (~jespada@90.254.241.6) (Ping timeout: 265 seconds) |
2020-09-21 09:02:52 +0200 | jespada | (~jespada@90.254.241.6) |
2020-09-21 09:02:54 +0200 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-09-21 09:03:52 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection) |
2020-09-21 09:05:07 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 272 seconds) |
2020-09-21 09:06:23 +0200 | mmohammadi981261 | (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻) |
2020-09-21 09:06:40 +0200 | mmohammadi9812 | (~mmohammad@2.178.188.114) |
2020-09-21 09:10:18 +0200 | orion | (~orion@unaffiliated/orion) (Ping timeout: 272 seconds) |
2020-09-21 09:11:16 +0200 | Rudd0 | (~Rudd0@185.189.115.98) (Ping timeout: 256 seconds) |
2020-09-21 09:13:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 09:14:42 +0200 | <dminuoso> | Is there something equivalent to Chronicle's condemn for hspec Spec? I have a series of specs that rely on preconditions of earlier specs succeeding. |
2020-09-21 09:15:45 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2020-09-21 09:16:22 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Remote host closed the connection) |
2020-09-21 09:16:52 +0200 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) |
2020-09-21 09:17:30 +0200 | alp | (~alp@2a01:e0a:58b:4920:8dbc:80e7:a786:cb13) |
2020-09-21 09:17:47 +0200 | __Joker | (~Joker@180.151.105.65) (Ping timeout: 240 seconds) |
2020-09-21 09:18:28 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-09-21 09:19:54 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) |
2020-09-21 09:20:05 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 09:20:20 +0200 | Ariakenom | (~Ariakenom@h-98-128-229-34.NA.cust.bahnhof.se) |
2020-09-21 09:20:49 +0200 | kritzefitz | (~kritzefit@fw-front.credativ.com) |
2020-09-21 09:21:01 +0200 | tzh | (~tzh@c-73-94-222-143.hsd1.mn.comcast.net) (Quit: zzz) |
2020-09-21 09:25:30 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-09-21 09:26:08 +0200 | Peter_Storm | (uid288816@gateway/web/irccloud.com/x-nhjukwhxucyezwqe) |
2020-09-21 09:27:19 +0200 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…) |
2020-09-21 09:27:28 +0200 | hvr | (~hvr@haskell/developer/hvr) (Ping timeout: 256 seconds) |
2020-09-21 09:30:44 +0200 | danso | (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: WeeChat 2.9) |
2020-09-21 09:32:46 +0200 | danvet_ | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2020-09-21 09:32:52 +0200 | danvet | (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) |
2020-09-21 09:34:02 +0200 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
2020-09-21 09:35:24 +0200 | Guest_96 | (51cdaf71@81-205-175-113.fixed.kpn.net) |
2020-09-21 09:35:37 +0200 | Guest_96 | (51cdaf71@81-205-175-113.fixed.kpn.net) (Remote host closed the connection) |
2020-09-21 09:37:09 +0200 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
2020-09-21 09:38:41 +0200 | pera | (~pera@unaffiliated/pera) (Quit: leaving) |
2020-09-21 09:41:04 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds) |
2020-09-21 09:41:17 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 09:41:29 +0200 | <shad0w_> | yo, anyone around |
2020-09-21 09:41:37 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds) |
2020-09-21 09:41:43 +0200 | <shad0w_> | woops. wrong channel |
2020-09-21 09:42:28 +0200 | hackage | jord 2.0.0.0 - Geographical Position Calculations https://hackage.haskell.org/package/jord-2.0.0.0 (CedricLiegeois) |
2020-09-21 09:43:49 +0200 | <dansho> | are io actions not ordered? i don't understand why this doesn't measure time elapsed https://hatebin.com/zwvzuzpfih |
2020-09-21 09:44:04 +0200 | <dansho> | it returns something like 0.00015 seconds |
2020-09-21 09:44:37 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 09:45:46 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-09-21 09:47:06 +0200 | __Joker | (~Joker@180.151.105.65) |
2020-09-21 09:47:14 +0200 | <dansho> | oh i guess its not measuring wall time, or something |
2020-09-21 09:47:19 +0200 | fweht | (uid404746@gateway/web/irccloud.com/x-vltddeikipwkmies) |
2020-09-21 09:48:05 +0200 | <dminuoso> | "Computation getCPUTime returns the number of picoseconds CPU time used by the current program" |
2020-09-21 09:48:31 +0200 | <dminuoso> | The sleep is not busy sleep |
2020-09-21 09:49:34 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2020-09-21 09:50:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-09-21 09:51:19 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 09:53:58 +0200 | jonatanb | (~jonatanb@83.24.161.211.ipv4.supernova.orange.pl) |
2020-09-21 09:58:46 +0200 | edwardk | does a little dance. |
2020-09-21 09:59:16 +0200 | <Axman6> | Don't hold back Ed |
2020-09-21 09:59:47 +0200 | <edwardk> | i just managed to get my 'types' library to let me use Constraint one of the many kinds i managed to lower to the term level |
2020-09-21 09:59:48 +0200 | siraben | sends a request to the current effect handler to do a little dance |
2020-09-21 09:59:53 +0200 | <edwardk> | this means Sing p subsumes Dict p |
2020-09-21 10:00:21 +0200 | <Axman6> | :o |
2020-09-21 10:00:22 +0200 | <edwardk> | and (:-) becomes able to move around any singleton through SingI instances, so it becomes a way to pass arbitrary functions between singleton types |
2020-09-21 10:00:29 +0200 | <edwardk> | So now |
2020-09-21 10:00:40 +0200 | <edwardk> | Sing (a :: Type) -- is TypeRep a |
2020-09-21 10:00:46 +0200 | <edwardk> | Sing (a :: Constraint) -- is Dict a |
2020-09-21 10:01:16 +0200 | <edwardk> | Sing (a :: String) -- is a type level string that you can actually cons on, take/drop from and otherwise manipulate unlike Symbol. |
2020-09-21 10:01:35 +0200 | <edwardk> | etc. |
2020-09-21 10:02:16 +0200 | <Taneb> | Ooh, that's pretty neat |
2020-09-21 10:02:17 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 10:03:02 +0200 | <edwardk> | but the idea of a polykinded (:-) makes me super happy |
2020-09-21 10:03:12 +0200 | <edwardk> | (:--) i guess to go with what :~~: does for HRefl |
2020-09-21 10:03:16 +0200 | chaosmasttter | (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) |
2020-09-21 10:03:39 +0200 | <edwardk> | would be any function from Sing a -> Sing b -- and can be lifted into Constraint! |
2020-09-21 10:03:51 +0200 | <edwardk> | or maybe |
2020-09-21 10:03:53 +0200 | <Axman6> | that last oe is excellent - do you have to construct the strings a char at a time? |
2020-09-21 10:04:18 +0200 | <edwardk> | yeah they get built up out of nil and cons. because String is defined as [Char] |
2020-09-21 10:04:20 +0200 | <edwardk> | and i can lift Char |
2020-09-21 10:04:24 +0200 | <edwardk> | and I can lift []! |
2020-09-21 10:04:36 +0200 | <edwardk> | i can give a little TH love to generating them |
2020-09-21 10:05:14 +0200 | thc202 | (~thc202@unaffiliated/thc202) |
2020-09-21 10:05:31 +0200 | solonarv | (~solonarv@astrasbourg-653-1-186-165.w90-13.abo.wanadoo.fr) |
2020-09-21 10:05:37 +0200 | <edwardk> | oh, and i was able to overload things so that all the numeric types, injective or crappy like Nat can share a S and Z pattern |
2020-09-21 10:06:16 +0200 | <edwardk> | er S and Z type family |
2020-09-21 10:06:39 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
2020-09-21 10:06:45 +0200 | Gerula | (~Gerula@unaffiliated/gerula) |
2020-09-21 10:07:05 +0200 | aidecoe | (~aidecoe@unaffiliated/aidecoe) (Ping timeout: 258 seconds) |
2020-09-21 10:07:54 +0200 | aidecoe | (~aidecoe@unaffiliated/aidecoe) |
2020-09-21 10:08:44 +0200 | <edwardk> | > sing :: Sing '(1,Eq Int,Just (Z :: Int)) ==> Sing @(Nat,Constraint,(Maybe Int)) (1,Constraint Dict,Just 0) |
2020-09-21 10:08:46 +0200 | <lambdabot> | <hint>:1:52: error: <hint>:1:52: error: parse error on input ‘@’ |
2020-09-21 10:09:02 +0200 | gnumonik | (~gnumonik@c-73-170-91-210.hsd1.ca.comcast.net) |
2020-09-21 10:09:02 +0200 | irc_user | (uid423822@gateway/web/irccloud.com/x-yhvajookqrbnnurt) (Quit: Connection closed for inactivity) |
2020-09-21 10:09:27 +0200 | <edwardk> | er didn't mean to > that |
2020-09-21 10:10:09 +0200 | knupfer | (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) |
2020-09-21 10:11:39 +0200 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-157-9.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2020-09-21 10:12:10 +0200 | knupfer | (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) (Client Quit) |
2020-09-21 10:12:31 +0200 | knupfer | (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) |
2020-09-21 10:13:28 +0200 | <Taneb> | Is Z a pattern synonym there? |
2020-09-21 10:13:50 +0200 | <edwardk> | Z there is actually a type family i have that expands to 0 in Nat and to various other things in other kinds |
2020-09-21 10:14:01 +0200 | devalot | (~ident@mail.pmade.com) (Ping timeout: 264 seconds) |
2020-09-21 10:14:18 +0200 | <Taneb> | Right |
2020-09-21 10:14:28 +0200 | <edwardk> | i hack Int to have a pair of injective type constructors for Z# and S# and it delegates to those for that kind |
2020-09-21 10:15:30 +0200 | <edwardk> | testEquality (sing :: Sing Int) (sing :: Sing Int) ==> Just Refl |
2020-09-21 10:16:08 +0200 | <edwardk> | i had to get fancy with S and Z because the lack of injectivity in Nat's (1+) approach to define Succ meant when you start building singletons on things like a Vec type that is indexed by a Nat you start breaking |
2020-09-21 10:16:25 +0200 | <edwardk> | but if you use the fact that Natural now has Z and S which are injective for all kinds other than Nat it works fine |
2020-09-21 10:17:35 +0200 | sQVe | (~sQVe@unaffiliated/sqve) |
2020-09-21 10:19:42 +0200 | <edwardk> | oh yeah, i forgot it is taken by the repl. i guess i need a better name |
2020-09-21 10:19:45 +0200 | <edwardk> | er 'it' |
2020-09-21 10:20:11 +0200 | Gerula | (~Gerula@unaffiliated/gerula) (Ping timeout: 265 seconds) |
2020-09-21 10:20:18 +0200 | <edwardk> | I and 'me' would be cute but the former too short. maybe You and you. |
2020-09-21 10:20:41 +0200 | <edwardk> | no good ungendered singular pronouns |
2020-09-21 10:21:57 +0200 | drbean | (~drbean@TC210-63-209-64.static.apol.com.tw) (Ping timeout: 256 seconds) |
2020-09-21 10:22:52 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 10:23:02 +0200 | Aquazi | (uid312403@gateway/web/irccloud.com/x-bxvisodaildxgivh) |
2020-09-21 10:23:17 +0200 | <edwardk> | ok, going with Me and me |
2020-09-21 10:23:28 +0200 | <edwardk> | that way the template haskell function for building it is makeMe |
2020-09-21 10:24:16 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 10:24:24 +0200 | <edwardk> | between that and makeNice this is becoming punnier than expected |
2020-09-21 10:25:23 +0200 | denisse | (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds) |
2020-09-21 10:27:32 +0200 | knupfer | (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2020-09-21 10:27:39 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-09-21 10:30:04 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Quit: Leaving) |
2020-09-21 10:31:25 +0200 | <edwardk> | and bugger |
2020-09-21 10:32:23 +0200 | <edwardk> | there appears to be a bug where when i go to try to validate that i can't subvert things by using Sing on constraint, it yells about overlapping instances for StrictEq Constraint -- when there is no instance? |
2020-09-21 10:32:28 +0200 | <edwardk> | i have one on Type |
2020-09-21 10:32:38 +0200 | <edwardk> | but Constraint and Type are different types to the surface language |
2020-09-21 10:32:47 +0200 | <edwardk> | but even so i only have the one instance |
2020-09-21 10:35:15 +0200 | <Axman6> | time for a GHC bug report "Ed broke it again: Overlapping instances for StrictEq Constraint" |
2020-09-21 10:35:32 +0200 | Gerula | (~Gerula@unaffiliated/gerula) |
2020-09-21 10:38:12 +0200 | danvet | (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving) |
2020-09-21 10:38:29 +0200 | <edwardk> | ok, fixed it |
2020-09-21 10:38:36 +0200 | <edwardk> | just crappy error reporting. whew |
2020-09-21 10:43:43 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 10:43:56 +0200 | <merijn> | edwardk: You need to step up your GHC breaking, at least Iceland_Jack has got an error explicitly calling them out, why don't you? ;) |
2020-09-21 10:45:02 +0200 | <edwardk> | merijn: i have a clip of simon shouting from the back of the room during a talk that he would change the compiler to make it stop allowing me to do something |
2020-09-21 10:45:37 +0200 | <merijn> | :D |
2020-09-21 10:45:58 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 10:48:29 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-09-21 10:50:32 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 10:50:42 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 10:50:57 +0200 | hackage | hlatex 0.3.2 - A library to build valid LaTeX files https://hackage.haskell.org/package/hlatex-0.3.2 (NicolasPouillard) |
2020-09-21 10:51:44 +0200 | zebrag | (~inkbottle@aaubervilliers-654-1-112-47.w86-198.abo.wanadoo.fr) |
2020-09-21 10:52:16 +0200 | inkbottle | (~inkbottle@aaubervilliers-654-1-112-119.w86-198.abo.wanadoo.fr) (Ping timeout: 272 seconds) |
2020-09-21 10:56:35 +0200 | dysfigured | (dysfigured@2600:3c00::f03c:92ff:feb4:be75) (Remote host closed the connection) |
2020-09-21 10:56:44 +0200 | dysfigured | (dysfigured@2600:3c00::f03c:92ff:feb4:be75) |
2020-09-21 10:57:33 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) |
2020-09-21 10:57:33 +0200 | mirrorbird | psut |
2020-09-21 11:00:01 +0200 | unknown | (~unknown@s91904426.blix.com) () |
2020-09-21 11:00:14 +0200 | avocado | (renningmat@gateway/shell/matrix.org/x-cjscopkjowyvreqy) (Quit: Idle for 30+ days) |
2020-09-21 11:00:30 +0200 | camlriot42 | (camlriotma@gateway/shell/matrix.org/x-rtbhfsekxaemiuex) (Quit: Idle for 30+ days) |
2020-09-21 11:02:52 +0200 | cpressey | (~cpressey@88.144.93.20) |
2020-09-21 11:05:13 +0200 | <cpressey> | Hi, I recently upgraded cabal from 1.24 (the version that ships with Ubuntu 18 LTS) to 3.0.2 and I'm seeing unusual behaviour: cabal build works, but doesn't detect when I've edited a source file, and cabal install tries to build and fails because it can't find my source files. I can post a minimal example in a gist if it helps. |
2020-09-21 11:06:35 +0200 | <[exa]> | cpressey: do you have all modules listed in the cabal file? (otherwise, a MWE would certainly help) |
2020-09-21 11:07:08 +0200 | <maerwald> | 3.0.2? |
2020-09-21 11:07:27 +0200 | <maerwald> | that version doesn't exist |
2020-09-21 11:07:44 +0200 | <[exa]> | probably meant 3.2.0.0? |
2020-09-21 11:08:01 +0200 | <cpressey> | maerwald: "cabal-install version 3.0.0.0\ncompiled using version 3.0.2.0 of the Cabal library" |
2020-09-21 11:08:10 +0200 | <maerwald> | upgrade to 3.2.0.0 |
2020-09-21 11:08:33 +0200 | <cpressey> | [exa]: In fact I don't, that could easily be the problem. |
2020-09-21 11:09:50 +0200 | <[exa]> | debian says it has 3.0.0.0-3 which might be the same... You may just use the binary distribution of cabal from their website, or get one using ghcpu |
2020-09-21 11:09:55 +0200 | <[exa]> | *ghcup |
2020-09-21 11:10:03 +0200 | worc3131 | (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Remote host closed the connection) |
2020-09-21 11:10:10 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 11:10:32 +0200 | <[exa]> | a common observation here is that ghc/cabal versions from $distro's package manager usually suck |
2020-09-21 11:10:59 +0200 | <maerwald> | there's also https://launchpad.net/~hvr/+archive/ubuntu/ghc but it lacks ghc-8.10 |
2020-09-21 11:11:02 +0200 | <cpressey> | maerwald: This is the version it gave me when I did "cabal install cabal-install" on (I think) Friday. I'll try upgrading again and see if it goes all the way to 3.2 this time. |
2020-09-21 11:11:18 +0200 | psut | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Quit: Leaving) |
2020-09-21 11:11:18 +0200 | worc3131 | (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) |
2020-09-21 11:11:27 +0200 | <maerwald> | ah no, it has 8.10 |
2020-09-21 11:11:40 +0200 | <maerwald> | cpressey: cabal install cabal-install doesn't work very well |
2020-09-21 11:11:41 +0200 | <int-e> | cpressey: the newer cabal-install should pick up the most recent cabal-install ;-) |
2020-09-21 11:12:11 +0200 | <merijn> | You might need to "cabal update" first :p |
2020-09-21 11:12:13 +0200 | <maerwald> | int-e: that depends on your GHC version, not cabal-install |
2020-09-21 11:12:14 +0200 | <int-e> | maerwald: it turns out that cabal-install 3.2 cannot be built with cabal-install<2.2 |
2020-09-21 11:12:27 +0200 | <maerwald> | well, then both |
2020-09-21 11:12:35 +0200 | <cpressey> | [exa]: Is it absolutely required to list all modules in the cabalfile? In development, I sometimes add/remove modules, and it would be nice to not have to remember to update the cabalfile too |
2020-09-21 11:13:10 +0200 | <maerwald> | cpressey: you can use cabal-fmt to auto-expand modules https://oleg.fi/gists/posts/2019-08-11-cabal-fmt.html |
2020-09-21 11:13:14 +0200 | <merijn> | cpressey: Also, why did you still have 1.24? :o THat's ancient |
2020-09-21 11:13:46 +0200 | <phadej> | merijn: some people use distributions' package managers, and their repositories ;) |
2020-09-21 11:13:46 +0200 | <cpressey> | merijn: because I'm running Ubuntu 18.04 LTS and was still using the version in their package repository. |
2020-09-21 11:13:58 +0200 | <phadej> | but does 18.04 has that old cabal-install |
2020-09-21 11:13:59 +0200 | <merijn> | cpressey: Short answer: Yes. Long answer: Yes, because the cabal file is supposed to *define* what goes into a source distribution and doing that sorta thing implicitly is...a bad idea |
2020-09-21 11:14:07 +0200 | <int-e> | phadej: yes |
2020-09-21 11:14:08 +0200 | <phadej> | that's wiked |
2020-09-21 11:14:09 +0200 | <merijn> | cpressey: Wow, that's depressing |
2020-09-21 11:14:19 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-09-21 11:14:27 +0200 | <int-e> | phadej: 18.04 was released very shortly after cabal-install 2.0.0.0 |
2020-09-21 11:14:37 +0200 | <int-e> | phadej: presumably it was frozen then. |
2020-09-21 11:14:39 +0200 | <merijn> | cpressey: 1.24 is probably at least 4-6 years out of date by now :o |
2020-09-21 11:14:51 +0200 | <[exa]> | cpressey: well it sometimes picks the unlisted modules correctly for me, but I have no idea about the precise reason why it works |
2020-09-21 11:15:00 +0200 | <merijn> | [exa]: It doesn't |
2020-09-21 11:15:02 +0200 | <maerwald> | merijn: that's what LTS means |
2020-09-21 11:15:04 +0200 | <maerwald> | lol |
2020-09-21 11:15:13 +0200 | <merijn> | [exa]: However, GHC looks for imports independent of cabal |
2020-09-21 11:15:15 +0200 | <cpressey> | Well, not listing the modules in the cabalfile probably explains my problem, anyway. Thanks all. |
2020-09-21 11:15:30 +0200 | <merijn> | [exa]: So, even if files aren't listed, GHC may find them |
2020-09-21 11:16:06 +0200 | <[exa]> | o good |
2020-09-21 11:16:12 +0200 | <int-e> | phadej: Or hmm. Am I off by a year? Anyway, 1.24 wasn't ancient yet then :P |
2020-09-21 11:16:13 +0200 | <[exa]> | makes sense, thanks |
2020-09-21 11:16:42 +0200 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2020-09-21 11:16:45 +0200 | <int-e> | phadej: and your 4-6 years are definitely closer to 3. |
2020-09-21 11:16:52 +0200 | <merijn> | int-e: That was mine |
2020-09-21 11:16:57 +0200 | boxscape | (577bcb23@gateway/web/cgi-irc/kiwiirc.com/ip.87.123.203.35) |
2020-09-21 11:17:08 +0200 | <merijn> | Although, admittedly I may have been using the source version |
2020-09-21 11:17:10 +0200 | <int-e> | ah. oops I did it again... |
2020-09-21 11:17:35 +0200 | <merijn> | I just recall switching to new-build early on in the Haskell part of my phd codebase and I moved on from 1.24 really shortly after that :p |
2020-09-21 11:17:45 +0200 | <phadej> | 20.04 is using 2.4.0.0 |
2020-09-21 11:17:52 +0200 | <phadej> | though there definitely was 3.0 and 3.2 |
2020-09-21 11:18:01 +0200 | <boxscape> | was curious how the constraints package implements Gcd so I took a look and... https://hackage.haskell.org/package/constraints-0.12/docs/src/Data.Constraint.Nat.html#Gcd |
2020-09-21 11:18:02 +0200 | <boxscape> | that doesn't look right? Am I missing something or is it just not fully implemented? |
2020-09-21 11:18:06 +0200 | <merijn> | int-e: Perhaps it's just academic trauma induced time dilation that makes feel like it was 6 years :p |
2020-09-21 11:18:06 +0200 | <phadej> | and **worse**, they have ghc-8.8 |
2020-09-21 11:18:12 +0200 | <phadej> | which cabal-install-2.4 doesn't support |
2020-09-21 11:18:17 +0200 | <phadej> | they = Ubuntu |
2020-09-21 11:18:29 +0200 | <merijn> | lol |
2020-09-21 11:18:35 +0200 | <int-e> | merijn: FWIW, I was surprised as well... it feels longer. |
2020-09-21 11:18:38 +0200 | <merijn> | Linux packaging, yay! |
2020-09-21 11:18:41 +0200 | <phadej> | or now |
2020-09-21 11:18:48 +0200 | <phadej> | s/now/no |
2020-09-21 11:18:54 +0200 | <phadej> | it's 8.8.1+dfsg1+is+8.6.5 |
2020-09-21 11:19:01 +0200 | <phadej> | which is :)(: |
2020-09-21 11:19:19 +0200 | <int-e> | phadej: still usable for bootstrapping a real ghc. |
2020-09-21 11:19:38 +0200 | <phadej> | feels like it's common that distribution packages don't really are up to date with where HAskell goes |
2020-09-21 11:19:44 +0200 | kuribas | (~user@ptr-25vy0i9m1chs7zs38i7.18120a2.ip6.access.telenet.be) |
2020-09-21 11:19:44 +0200 | <phadej> | int-e: to bootstrap 9.0 you need 8.8.1 |
2020-09-21 11:19:47 +0200 | <phadej> | that one is really 8.6.5 |
2020-09-21 11:19:50 +0200 | <phadej> | so no luck. |
2020-09-21 11:19:55 +0200 | borne | (~fritjof@200116b864f88900f00953f5fedbeb5e.dip.versatel-1u1.de) |
2020-09-21 11:19:59 +0200 | <tomsmeding> | boxscape: not to speak about Lcm, Div and Mod |
2020-09-21 11:20:03 +0200 | <int-e> | phadej: 9.0 isn't released |
2020-09-21 11:20:12 +0200 | <phadej> | int-e: I hope it's matter of weeks now. |
2020-09-21 11:20:14 +0200 | <boxscape> | tomsmeding right |
2020-09-21 11:20:46 +0200 | <maerwald> | int-e: 9.0.1-alpha1 is |
2020-09-21 11:20:48 +0200 | <tomsmeding> | boxscape: does it actually _work_, somehow in a way that we don't understand? or is it actually unimplemented |
2020-09-21 11:20:58 +0200 | <tomsmeding> | work as in "test it" |
2020-09-21 11:21:06 +0200 | <boxscape> | I haven't actually tried to be honest but I guess I should, and I will right now |
2020-09-21 11:21:07 +0200 | <phadej> | ghc "support" windows are too short for ubuntu :( |
2020-09-21 11:21:34 +0200 | Cadair1 | (~Cadair@185.204.1.185) |
2020-09-21 11:21:54 +0200 | <maerwald> | boxscape: try to be honest next time |
2020-09-21 11:22:17 +0200 | <boxscape> | but I was honest this time too :( |
2020-09-21 11:22:34 +0200 | <boxscape> | it doesn't work, by the way - Gcd 4 2 is not reduced |
2020-09-21 11:22:39 +0200 | <tomsmeding> | heh |
2020-09-21 11:22:41 +0200 | <phadej> | maerwald: there is no 9.0.1-alpha1, is there? |
2020-09-21 11:22:54 +0200 | <maerwald> | https://downloads.haskell.org/~ghc/9.0.1-alpha1/ |
2020-09-21 11:23:15 +0200 | <tomsmeding> | boxscape: file a bug report :) |
2020-09-21 11:23:47 +0200 | <boxscape> | I suppose I will, or maybe a PR if I can figure out how it should work |
2020-09-21 11:25:09 +0200 | <merijn> | hah |
2020-09-21 11:25:32 +0200 | <merijn> | Next thing you know you'll be handed commit access and responsible for maintaining it ;) |
2020-09-21 11:25:38 +0200 | <boxscape> | oh boy |
2020-09-21 11:25:43 +0200 | <int-e> | phadej: hmm if you release 2 major versions per year and you support the 2 latest major versions for bootstrapping... |
2020-09-21 11:25:48 +0200 | <boxscape> | I am not at all qualified to handle the constraints package :) |
2020-09-21 11:25:48 +0200 | <tomsmeding> | unlikely for this particular package I think |
2020-09-21 11:25:56 +0200 | <phadej> | maerwald: there isn't tag in repository |
2020-09-21 11:26:02 +0200 | <int-e> | ...that's not a very generous time frame |
2020-09-21 11:26:04 +0200 | <phadej> | maerwald: so I have no idea what that directory is about |
2020-09-21 11:26:23 +0200 | <phadej> | maerwald: also it wasn't announced, and according to ben, if something weren't announced it doesn't exist. |
2020-09-21 11:26:29 +0200 | <maerwald> | phadej: I don't know either, but it works fine :p |
2020-09-21 11:26:39 +0200 | <phadej> | maerwald: specifically, I'd ask you to not add that to ghcup |
2020-09-21 11:26:44 +0200 | <phadej> | to not confuse shit out of users |
2020-09-21 11:27:00 +0200 | <maerwald> | what's confusing about it? |
2020-09-21 11:27:32 +0200 | <phadej> | if there would be an bug report "GHC-9.0.1-alpha1 regresses ..." |
2020-09-21 11:27:34 +0200 | <maerwald> | phadej: also, ben uploaded that and signed it with his key |
2020-09-21 11:27:44 +0200 | <cheater> | hi |
2020-09-21 11:28:03 +0200 | <cheater> | is vty still the best thing for creating simple curses style UIs or is there something else you would suggest |
2020-09-21 11:28:15 +0200 | <merijn> | vty is low level |
2020-09-21 11:28:24 +0200 | <merijn> | For something higher level, probably you want brick |
2020-09-21 11:28:27 +0200 | acidjnk_new2 | (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) |
2020-09-21 11:28:53 +0200 | <merijn> | cheater: vty deals with terminal emulation, brick deals with "using vty to draw widgets and stuff" |
2020-09-21 11:29:17 +0200 | <cheater> | i want to create a very simple text editor |
2020-09-21 11:29:25 +0200 | <cheater> | vim style |
2020-09-21 11:29:43 +0200 | <[exa]> | you really want brick |
2020-09-21 11:29:50 +0200 | jedws | (~jedws@121.209.139.222) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 11:29:58 +0200 | <merijn> | Prepare to be surprised how comlex text editing is :p |
2020-09-21 11:30:08 +0200 | <maerwald> | merijn: yeah, I looked into yi... whew |
2020-09-21 11:30:28 +0200 | <cheater> | all it'll do is move lines up and down. that's all. |
2020-09-21 11:30:35 +0200 | <merijn> | Was it Atom that took like 5 years before it could open files ? 5 MB |
2020-09-21 11:30:36 +0200 | <cheater> | maybe edit them and add new ones or remove some. |
2020-09-21 11:30:52 +0200 | <merijn> | cheater: Yeah...that's harder than you think :p |
2020-09-21 11:30:52 +0200 | <cheater> | file size limited to 100k. |
2020-09-21 11:31:01 +0200 | <cheater> | merijn: oookay |
2020-09-21 11:31:16 +0200 | carlomagno1 | (~cararell@inet-hqmc01-o.oracle.com) |
2020-09-21 11:31:17 +0200 | <maerwald> | 100k is a very precise unit |
2020-09-21 11:31:21 +0200 | <cheater> | brick says "This package deprecates vty-ui." ahh i've been using vty-ui |
2020-09-21 11:31:22 +0200 | <merijn> | I have a 30 page paper on "data structure for text editing" :p |
2020-09-21 11:31:28 +0200 | <cheater> | wow can y'all stop lol |
2020-09-21 11:31:40 +0200 | <merijn> | cheater: yeah, brick is the successor of vty-ui |
2020-09-21 11:31:40 +0200 | <[exa]> | cheater: isn't that motivating? :] |
2020-09-21 11:31:44 +0200 | <maerwald> | we're trying to encourage you |
2020-09-21 11:31:49 +0200 | <cheater> | no, it's boring |
2020-09-21 11:31:54 +0200 | <cheater> | i have enough problems as it is |
2020-09-21 11:31:56 +0200 | <maerwald> | it's so hard, you must do it |
2020-09-21 11:32:10 +0200 | <Cheery> | there was a library in haskell for rendering text |
2020-09-21 11:32:13 +0200 | <tomsmeding> | cheater: I've written a terminal text editor in c++ without using any terminal library at all |
2020-09-21 11:32:14 +0200 | <boxscape> | wait... Div and Mod seem to work, even though Gcd and Lcm don't |
2020-09-21 11:32:14 +0200 | <maerwald> | (isn't that what motivates haskellers?) |
2020-09-21 11:32:22 +0200 | <tomsmeding> | if I can do that you can do it with the niceties that haskell gives you |
2020-09-21 11:32:24 +0200 | <cheater> | tomsmeding: nice |
2020-09-21 11:32:34 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) |
2020-09-21 11:32:42 +0200 | <cheater> | yeah i'm just writing a small manual decompiling helper |
2020-09-21 11:32:50 +0200 | <tomsmeding> | (before you actually go and look at that c++ code beware it's ugly and bad) |
2020-09-21 11:32:55 +0200 | <cheater> | like, be able to move lines around without violating semantics |
2020-09-21 11:32:57 +0200 | <cheater> | that's all really |
2020-09-21 11:32:57 +0200 | carlomagno | (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 258 seconds) |
2020-09-21 11:32:59 +0200 | <boxscape> | oh but that's because I'm using Div and Mod from a different package, never mind |
2020-09-21 11:33:04 +0200 | <[exa]> | cheater: o nice, decompiling what precisely? |
2020-09-21 11:33:06 +0200 | <tomsmeding> | boxscape: :D |
2020-09-21 11:33:06 +0200 | <boxscape> | (base) |
2020-09-21 11:33:13 +0200 | <cheater> | shader assembly |
2020-09-21 11:33:28 +0200 | <tomsmeding> | boxscape: perhaps their implementation in base can suggest how to implement Gcd in constraints |
2020-09-21 11:33:33 +0200 | <boxscape> | yeah, good point |
2020-09-21 11:33:46 +0200 | <boxscape> | wait |
2020-09-21 11:33:48 +0200 | <boxscape> | they're built in |
2020-09-21 11:33:51 +0200 | <[exa]> | cheater: very cool |
2020-09-21 11:33:53 +0200 | <cheater> | i decompiled it by hand already but i introduced a bug and it's going to be impossible to track down, so i'm gonna do this now |
2020-09-21 11:34:03 +0200 | <cheater> | i commuted some lines that i shouldn't have |
2020-09-21 11:34:04 +0200 | <cheater> | i think |
2020-09-21 11:34:07 +0200 | <merijn> | ah, rats |
2020-09-21 11:34:14 +0200 | <tomsmeding> | cheater: https://xkcd.com/1205/ |
2020-09-21 11:34:18 +0200 | <merijn> | I can't find a copy of the PDF i was talking about now |
2020-09-21 11:34:22 +0200 | <cheater> | i'm not clicking any xkcd links |
2020-09-21 11:34:56 +0200 | <tomsmeding> | merijn: pity |
2020-09-21 11:36:24 +0200 | <tomsmeding> | merijn: it's not this one by any chance? https://www.cs.unm.edu/~crowley/papers/sds.pdf |
2020-09-21 11:36:43 +0200 | <merijn> | Ooh, looks like it |
2020-09-21 11:36:49 +0200 | <merijn> | cheater: ^^ that one :) |
2020-09-21 11:37:07 +0200 | <gnumonik> | Hello. I'm trying to generate parsers for records automatically using TH. Have a function that gives me a 'Q (Parser a)', but I can't figure out how to turn that into an exp so it's unusable. Is there some way to do that or is it impossible? |
2020-09-21 11:37:14 +0200 | <gnumonik> | Am new to TH |
2020-09-21 11:37:31 +0200 | <merijn> | gnumonik: You need to unquote it via $() |
2020-09-21 11:37:45 +0200 | <cheater> | merijn: what is it? |
2020-09-21 11:38:05 +0200 | <merijn> | If "foo :: Q (Parser a)" then 'bar $(foo)' is "splice the AST of 'foo' in the code here" |
2020-09-21 11:38:18 +0200 | <cheater> | oh yea no idc i'll just put everything in a list |
2020-09-21 11:38:41 +0200 | ces | (~ces@52d3ce3c.dynamic-ip.k-net.dk) |
2020-09-21 11:38:52 +0200 | <cheater> | just so you understand where i'm at |
2020-09-21 11:39:45 +0200 | <merijn> | hmm, I forget how to specify ghc-options for only local packages in cabal.project (i.e. as opposed to for all transitive dependencies) |
2020-09-21 11:40:37 +0200 | <gnumonik> | I've tried splicing it but it doesn't work. I think it's because I have a Q Parser and not a Q exp. |
2020-09-21 11:40:43 +0200 | ixlun | (~matthew@213.205.241.81) |
2020-09-21 11:41:13 +0200 | <cheater> | does Vty work on windows btw? |
2020-09-21 11:41:16 +0200 | <cheater> | it works, right? |
2020-09-21 11:41:38 +0200 | <merijn> | gnumonik: oh, wait, yeah |
2020-09-21 11:41:45 +0200 | <cheater> | hmm i'm not seeing any mention of windows |
2020-09-21 11:41:55 +0200 | <merijn> | gnumonik: Can you pastebin/gist the code? |
2020-09-21 11:42:04 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) |
2020-09-21 11:42:13 +0200 | <merijn> | cheater: It supports windows for users who have/use a proper terminal emulator |
2020-09-21 11:42:19 +0200 | <merijn> | cheater: So..."maybe" |
2020-09-21 11:42:21 +0200 | <cheater> | how do i do that |
2020-09-21 11:42:25 +0200 | <cheater> | is powershell proper |
2020-09-21 11:42:30 +0200 | <merijn> | No clue |
2020-09-21 11:42:58 +0200 | <merijn> | That's a messy swamp of complicated questions and ridiculously archaic technology your asking questions about :p |
2020-09-21 11:42:59 +0200 | sagax | (~sagax_nb@213.138.71.146) |
2020-09-21 11:44:06 +0200 | <gnumonik> | It's pretty long and I need a sec to unbreak it, I was trying something and I ran out of undo space in VSCode |
2020-09-21 11:44:18 +0200 | <cheater> | hmm i need to get git on this machine as well |
2020-09-21 11:44:23 +0200 | <gnumonik> | But yeah. It just seems like there's no way to get the Parser into an Exp :-( |
2020-09-21 11:44:34 +0200 | <cheater> | what's the least painful way to have git on windows? sorry for OT |
2020-09-21 11:45:12 +0200 | <mirrorbird> | installing linux probably |
2020-09-21 11:45:17 +0200 | <[exa]> | cheater: the linux subsystem kinda works, msysgit/tortoisegit also work, but the least painful way is likely to...yeah ^^ |
2020-09-21 11:45:30 +0200 | <cheater> | mirrorbird: no |
2020-09-21 11:46:12 +0200 | <mirrorbird> | how do you know? |
2020-09-21 11:46:36 +0200 | <merijn> | gitbash |
2020-09-21 11:46:54 +0200 | <merijn> | gnumonik: You can, but you're mixing levels |
2020-09-21 11:47:19 +0200 | <[exa]> | cheater: consider https://www.reddit.com/r/haskell/comments/7tutxa/vty_needs_your_help_supporting_windows/ |
2020-09-21 11:47:21 +0200 | <merijn> | gnumonik: You're creating a parser in your quotation, while what you *want* is "the Exp resembling a parser" |
2020-09-21 11:47:28 +0200 | <[exa]> | cheater: generally, windows does _not_ have a terminal |
2020-09-21 11:47:29 +0200 | <cheater> | this is how i know mirrorbird and why you've been put on ignore https://twitter.com/PLT_cheater/status/1306114709905694722 |
2020-09-21 11:47:59 +0200 | <cheater> | [exa]: thanks, looking! |
2020-09-21 11:48:22 +0200 | <mirrorbird> | cheater, yeah i hate that too |
2020-09-21 11:48:25 +0200 | <merijn> | cheater: gitbash is what my girlfriend uses on windows for git, seems the most workable solution |
2020-09-21 11:48:38 +0200 | <cheater> | merijn: thank you |
2020-09-21 11:48:49 +0200 | <cheater> | merijn: does she know how it compares to WSL1 or WSL2? |
2020-09-21 11:49:31 +0200 | <merijn> | WSL1/2 are linux emulation layers fully running linux code. gitbash is just a lightweight terminal emulator that runs bash, git and some other commandline tools |
2020-09-21 11:49:45 +0200 | <cheater> | right |
2020-09-21 11:49:50 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
2020-09-21 11:49:51 +0200 | ces | (~ces@52d3ce3c.dynamic-ip.k-net.dk) (Quit: WeeChat 2.9) |
2020-09-21 11:50:00 +0200 | <dminuoso> | gnumonik: Of course there is! :) |
2020-09-21 11:50:01 +0200 | <merijn> | Incidentally, all of GNU coreutils already support windows anyway. I used to use grep/bash/etc. in windows' Command.exe |
2020-09-21 11:50:07 +0200 | <cheater> | if I need a terminal to run Vty, then maybe this will be a good way to get Vty running |
2020-09-21 11:50:09 +0200 | <merijn> | No clue how to get git in there, though |
2020-09-21 11:50:20 +0200 | <merijn> | And git-bash seems to have the most convenient story for installing stuff |
2020-09-21 11:50:28 +0200 | <cheater> | mhm |
2020-09-21 11:50:50 +0200 | <gentauro> | I once saw a .cabal file that had, besides several `executable` (`executable foobar` and `executable bazqux`) it also had another `library` besides the main/default. I just don't remember the syntax to add this ad-hoc library. Anybody can help? Thx |
2020-09-21 11:51:39 +0200 | <gentauro> | is it `library identifier` or how is it done? |
2020-09-21 11:51:42 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 11:51:57 +0200 | <gentauro> | I'm using `cabal 2.2` |
2020-09-21 11:52:05 +0200 | gentauro | that's the header of the file |
2020-09-21 11:52:24 +0200 | <phadej> | gentauro: https://cabal.readthedocs.io/en/3.4/cabal-package.html#library scroll down to internal library |
2020-09-21 11:53:07 +0200 | <gnumonik> | I'm not sure how to get an exp that resembles a parser though :-( And I tried building the AST by hand but i reach a point where I need a way to lift a 'Parser' to get it into the syntax tree and I'm lost |
2020-09-21 11:53:28 +0200 | hackage | floskell 0.10.5 - A flexible Haskell source code pretty printer https://hackage.haskell.org/package/floskell-0.10.5 (ecramer) |
2020-09-21 11:53:42 +0200 | mpereira | (~mpereira@2a02:810d:f40:d96:b903:bcf4:35d5:9a35) |
2020-09-21 11:55:29 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Ping timeout: 272 seconds) |
2020-09-21 11:55:47 +0200 | <gentauro> | phadej: thx. Just what I needed :) |
2020-09-21 11:56:00 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-09-21 11:58:15 +0200 | <gnumonik> | The only thing I can think of is rewriting a bunch of Parsec (that's what I'm using) by hand in the Haskell AST, so everything's an exp. Actually it'd probably be easier to just write some haskell to generate the text of the source code for the parsers than do that |
2020-09-21 11:58:40 +0200 | pingiun | (~pingiun@j63019.upc-j.chello.nl) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 12:01:40 +0200 | Rudd0 | (~Rudd0@185.189.115.103) |
2020-09-21 12:02:05 +0200 | <merijn> | gnumonik: You want [| |] for lifting stuff into Exp |
2020-09-21 12:02:34 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds) |
2020-09-21 12:02:51 +0200 | <merijn> | gnumonik: "[| foo 1 >>= bar |]" says "take the code "foo 1 >>= bar" and give me the Exp of that AST |
2020-09-21 12:04:50 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:9557:35db:b11f:8e3c) |
2020-09-21 12:05:07 +0200 | <gnumonik> | https://gist.github.com/gnumonik/77554f3a7817495030c16dd46739fa79 is what I have (I think that's all the important stuff, hastily reconstructed, probably quite ugly) |
2020-09-21 12:05:13 +0200 | <boxscape> | looks like the Gcm etc. thing in constraints is intentional https://github.com/ekmett/constraints/issues/53 |
2020-09-21 12:07:42 +0200 | <boxscape> | ( tomsmeding, in case you're interested) |
2020-09-21 12:09:04 +0200 | <tomsmeding> | boxscape: I'm not sure whether that issue still applies, given that Min does seem to have a suitable implementation now |
2020-09-21 12:09:20 +0200 | <boxscape> | oh, huh, true |
2020-09-21 12:10:18 +0200 | <gnumonik> | I know how the quotation brackets work. I wish I knew more so I could explain this well. The problem, I think, is that I'm trapped in the Q monad. My function that generates parsers spits out 'Q Parser a's, so when I quote it, I *think* that it's giving me the AST for an expression that spits out the Q stuff. |
2020-09-21 12:11:13 +0200 | marek | (~mmahut@209.250.249.245) (Changing host) |
2020-09-21 12:11:13 +0200 | marek | (~mmahut@fedora/pyxel) |
2020-09-21 12:11:49 +0200 | <dminuoso> | gnumonik: Try generating a `Q Exp` instead. |
2020-09-21 12:12:30 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 12:13:04 +0200 | <dminuoso> | gnumonik: You can either use [| ... |] like merijn suggested, or you build up that construction yourself |
2020-09-21 12:13:13 +0200 | chaosmasttter | (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2020-09-21 12:13:50 +0200 | <boxscape> | s/Gcm/Gcd, whoops |
2020-09-21 12:14:43 +0200 | <cheater> | has anyone got experience compiling medium large Haskell projects on Windows using WSL1 vs WSL2 if the data must be stored on the Windows file system? |
2020-09-21 12:15:49 +0200 | fweht | (uid404746@gateway/web/irccloud.com/x-vltddeikipwkmies) (Quit: Connection closed for inactivity) |
2020-09-21 12:17:04 +0200 | v0d1ch | (~v0d1ch@cable-178-148-120-241.dynamic.sbb.rs) |
2020-09-21 12:17:08 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-09-21 12:18:11 +0200 | <gnumonik> | I tried to do that and I couldn't make it work :-( If I make a parser in the Q monad I can't get it out. I can use the oxford brackets to transform any other function (or w/e) into an exp but whenever I try to quote the parser I generates I get a "No lift instance" |
2020-09-21 12:18:32 +0200 | <gentauro> | phadej: I like this feature with `sub-libs`. That way I can keep my main library `Safe` while all the nasty stuff needed by some of the `executables` I can move to these `sub-libs` :-) |
2020-09-21 12:18:53 +0200 | chaosmasttter | (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) |
2020-09-21 12:18:54 +0200 | gentauro | what's not to like :) |
2020-09-21 12:19:33 +0200 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds) |
2020-09-21 12:21:06 +0200 | mmohammadi9812 | (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻) |
2020-09-21 12:23:15 +0200 | stree | (~stree@50-108-115-67.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
2020-09-21 12:23:33 +0200 | stree | (~stree@50-108-115-67.adr01.mskg.mi.frontiernet.net) |
2020-09-21 12:25:58 +0200 | <gnumonik> | https://gist.github.com/gnumonik/51b29cb694a8e19052f3613b8cc3fcfa that's problem I think. I can quote *other* parsers in the oxford brackets but for some reason that I don't understand the compiler never lets me quote the one that I made inside the Q monad. So I have to return a 'Q Parser'. Which is kinda useless. |
2020-09-21 12:27:59 +0200 | alp | (~alp@2a01:e0a:58b:4920:8dbc:80e7:a786:cb13) (Remote host closed the connection) |
2020-09-21 12:28:06 +0200 | alp | (~alp@88.126.45.36) |
2020-09-21 12:34:12 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.) |
2020-09-21 12:36:21 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 12:37:33 +0200 | <cheater> | glguy: hi, do you know if there is any way yet to sensibly run Vty on Windows? |
2020-09-21 12:37:40 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
2020-09-21 12:40:56 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:9557:35db:b11f:8e3c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 12:41:07 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds) |
2020-09-21 12:41:10 +0200 | <tomsmeding> | cheater: what kind of trouble are you hitting? |
2020-09-21 12:41:49 +0200 | <cheater> | tomsmeding: Vty is said to require an ansi terminal, which windows didn't have until recently, so I don't know if Vty has been updated at all to take advantage of any of that |
2020-09-21 12:42:06 +0200 | <tomsmeding> | have you tried it? it might just magically work |
2020-09-21 12:42:25 +0200 | <cheater> | no, it takes a bunch of time to try it. i'd rather ask some people I know have used it. |
2020-09-21 12:42:38 +0200 | <tomsmeding> | sure :) |
2020-09-21 12:43:06 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.) |
2020-09-21 12:44:15 +0200 | <dminuoso> | What is the reason `cabal build foo:test:bar` requires --enable-tests (sometimes?). Why is there some mutable state requiring me to switch between enabling and disabling tests? |
2020-09-21 12:44:38 +0200 | <merijn> | dminuoso: It's because it affects the build plan |
2020-09-21 12:45:05 +0200 | <merijn> | dminuoso: tests might require different build plans for the main library and having them automatically rebuild and switch plans each time is...suboptimal |
2020-09-21 12:45:24 +0200 | <merijn> | Because then your code recompiles every time you switch between tests or not |
2020-09-21 12:45:27 +0200 | hackage | wai-extra 3.1.0 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.1.0 (MichaelSnoyman) |
2020-09-21 12:45:40 +0200 | <dminuoso> | merijn: And that is bad why? |
2020-09-21 12:45:47 +0200 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
2020-09-21 12:45:48 +0200 | <merijn> | dminuoso: Just enable tests in cabal.project(.local) so they're always in the build plan |
2020-09-21 12:45:55 +0200 | <dminuoso> | Mm |
2020-09-21 12:46:07 +0200 | <merijn> | dminuoso: Because if you alternate running tests and executables you don't want your library to recompile each switch? |
2020-09-21 12:46:13 +0200 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
2020-09-21 12:46:27 +0200 | <merijn> | But not recompiling isn't safe if the build plan changes |
2020-09-21 12:46:44 +0200 | <merijn> | So just enable tests so the build plan always accommodates them, problem solved |
2020-09-21 12:48:38 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
2020-09-21 12:48:51 +0200 | <tomsmeding> | cheater: I _think_ that because vty will indirectly use the terminfo library, which I _think_ is not present on windows, it will not work out of the box |
2020-09-21 12:48:56 +0200 | <tomsmeding> | but I haven't tested it either :) |
2020-09-21 12:49:11 +0200 | <cheater> | OK |
2020-09-21 12:49:13 +0200 | <dminuoso> | Fair enough. So --enable-tests essentially mixes in the build-depends from the test-suite, causing a new build plan to be generated that includes the (transitive) version bounds of the test-suite? |
2020-09-21 12:49:24 +0200 | <dminuoso> | And --disable-tests turns that off again? |
2020-09-21 12:50:00 +0200 | <tomsmeding> | cheater: I have written a library on somewhat the same level of abstraction as vty at some point, that does work on windows (https://git.tomsmeding.com/terminal-io-hs/tree/); however, it's not on hackage, and has been used for exactly one university project at some point :p |
2020-09-21 12:50:14 +0200 | <tomsmeding> | so I don't necessarily recommend using it, but wanted to post it for completeness regardless |
2020-09-21 12:50:46 +0200 | <cheater> | tomsmeding: thanks, that's pretty cool. how does it work on windows? |
2020-09-21 12:51:20 +0200 | acarrico | (~acarrico@pppoe-209-99-203-201.greenmountainaccess.net) (Ping timeout: 272 seconds) |
2020-09-21 12:52:05 +0200 | <merijn> | dminuoso: Right |
2020-09-21 12:52:34 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 12:52:34 +0200 | <merijn> | dminuoso: And there's no real design (yet?) for how to properly handle switching between executable and test targets |
2020-09-21 12:52:48 +0200 | <merijn> | dminuoso: (recompiling each time is obviously not ideal) |
2020-09-21 12:52:50 +0200 | <dminuoso> | merijn: But wouldnt `cabal v2-test` have to enable-tests at the very least? |
2020-09-21 12:53:00 +0200 | <merijn> | Yes, no, maybe? |
2020-09-21 12:53:38 +0200 | <merijn> | dminuoso: If you have a coherent design for how all the bits should work I'm sure it'll be welcome ;) And probably there's at least 1 or 2 issues discussing it on github :p |
2020-09-21 12:54:07 +0200 | <dminuoso> | Im quite confident that this is very non-trivial. |
2020-09-21 12:54:17 +0200 | <dminuoso> | Build systems always are. |
2020-09-21 12:54:17 +0200 | <merijn> | :) |
2020-09-21 12:54:53 +0200 | <dminuoso> | Hooray, I just managed to completely screw up dist-newstyle/ to the point of having to delete it. |
2020-09-21 12:54:55 +0200 | <boxscape> | Is there a way to access functions in ghci that aren't exported? |
2020-09-21 12:55:22 +0200 | <cheater> | using :m |
2020-09-21 12:55:27 +0200 | <boxscape> | oh |
2020-09-21 12:55:28 +0200 | <boxscape> | thankss |
2020-09-21 12:55:31 +0200 | <cheater> | yw |
2020-09-21 12:56:36 +0200 | <boxscape> | hmm though actually that seems to have the same behavior as importing it |
2020-09-21 12:57:08 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2020-09-21 12:57:12 +0200 | <cheater> | you can use :m +Foo or something i think |
2020-09-21 12:57:27 +0200 | <cheater> | not sure |
2020-09-21 12:57:52 +0200 | basil | (~basil@host-87-26-187-41.business.telecomitalia.it) |
2020-09-21 12:58:08 +0200 | <boxscape> | I can use that, but it doesn't seem to bring into scope identifiers in Foo that aren't exported by Foo, unfortunately |
2020-09-21 12:58:16 +0200 | basil | Guest87848 |
2020-09-21 12:59:22 +0200 | chaosmasttter | (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 12:59:28 +0200 | Guest87848 | (~basil@host-87-26-187-41.business.telecomitalia.it) (Client Quit) |
2020-09-21 12:59:39 +0200 | <solonarv> | :m + *Foo works |
2020-09-21 12:59:54 +0200 | <solonarv> | has to be an interpreted module |
2020-09-21 13:00:26 +0200 | <boxscape> | oh, interesting, thanks |
2020-09-21 13:00:31 +0200 | basil_ | (~basil@host-87-26-187-41.business.telecomitalia.it) |
2020-09-21 13:01:49 +0200 | basil_ | (~basil@host-87-26-187-41.business.telecomitalia.it) (Client Quit) |
2020-09-21 13:02:42 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2020-09-21 13:03:46 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit) |
2020-09-21 13:04:19 +0200 | basil_ | (~basil@host-87-26-187-41.business.telecomitalia.it) |
2020-09-21 13:07:26 +0200 | <dminuoso> | I recall there was a super dirty and unsafe package that let gain access to non-exported identifiers from other package.. |
2020-09-21 13:08:20 +0200 | <merijn> | @hackage true-name -- this one? :p |
2020-09-21 13:08:20 +0200 | <lambdabot> | https://hackage.haskell.org/package/true-name -- this one? :p |
2020-09-21 13:08:44 +0200 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) |
2020-09-21 13:08:59 +0200 | <boxscape> | hm, neat |
2020-09-21 13:09:06 +0200 | <dminuoso> | Yes, thats it :) |
2020-09-21 13:09:36 +0200 | <merijn> | hmm, I forget how to specify ghc-options for only local packages in cabal.project (i.e. as opposed to for all transitive dependencies) |
2020-09-21 13:09:46 +0200 | <merijn> | anyone know? |
2020-09-21 13:11:08 +0200 | <hekkaidekapus> | merijn: package foo |
2020-09-21 13:11:36 +0200 | <hekkaidekapus> | And `ghc-options:` under that stanza. |
2020-09-21 13:11:42 +0200 | sQVe | (~sQVe@unaffiliated/sqve) (Quit: Bye!) |
2020-09-21 13:11:45 +0200 | <tomjaguarpaw> | package opaleye ghc-options: -iDoc/Tutorial -iTest -fprint-potential-instances |
2020-09-21 13:11:54 +0200 | <tomjaguarpaw> | Hmm, bad formatting |
2020-09-21 13:11:57 +0200 | <tomjaguarpaw> | package opaleye |
2020-09-21 13:11:59 +0200 | <tomjaguarpaw> | ghc-options: -iDoc/Tutorial -iTest -fprint-potential-instances |
2020-09-21 13:12:51 +0200 | v0d1ch | (~v0d1ch@cable-178-148-120-241.dynamic.sbb.rs) (Quit: WeeChat 2.9) |
2020-09-21 13:13:25 +0200 | jespada | (~jespada@90.254.241.6) (Ping timeout: 264 seconds) |
2020-09-21 13:13:54 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 13:14:14 +0200 | <tomsmeding> | cheater: it assumes you have a sort-of xterm-compliant terminal, which windows has nowadays |
2020-09-21 13:14:27 +0200 | <int-e> | merijn: is it too much to hope that cabal v2-configure --ghc-options would drop the flags into cabal.project.local where it will be picked up by other cabal invocations? |
2020-09-21 13:14:40 +0200 | bahamas | (~lucian@188.24.181.166) |
2020-09-21 13:14:40 +0200 | bahamas | (~lucian@188.24.181.166) (Changing host) |
2020-09-21 13:14:40 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 13:14:46 +0200 | <int-e> | merijn: Oh. |
2020-09-21 13:14:53 +0200 | <tomsmeding> | vty does the full thing by actually consulting the terminfo database to find out what escape sequences are appropriate for your terminal; that works great on linux but fails on windows (at least, that's my hypothesis) |
2020-09-21 13:14:58 +0200 | <int-e> | merijn: never mind, I missed the "only local" part |
2020-09-21 13:14:59 +0200 | <cheater> | tomsmeding: does it work in ps, or in cmd only? |
2020-09-21 13:15:05 +0200 | <tomsmeding> | my library doesn't bother, which makes it work :p |
2020-09-21 13:15:16 +0200 | <tomsmeding> | my windows-using friend used it in cmd at the time |
2020-09-21 13:15:26 +0200 | <tomsmeding> | does PS support ansi escape sequences? |
2020-09-21 13:15:31 +0200 | <cheater> | i don't know |
2020-09-21 13:15:34 +0200 | <cheater> | at some point it didn't |
2020-09-21 13:15:39 +0200 | <cheater> | not sure what it's like now |
2020-09-21 13:15:44 +0200 | <tomsmeding> | printf "\x1B[1mbold text!\x1B[0m" |
2020-09-21 13:16:05 +0200 | jespada | (~jespada@90.254.241.6) |
2020-09-21 13:16:34 +0200 | <tomsmeding> | where \x1B is byte 27; manage to print that to PS (possibly using putStrLn ;) ), if that shows bold text, then yes, else no |
2020-09-21 13:18:05 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2020-09-21 13:18:51 +0200 | <int-e> | merijn: https://github.com/haskell/cabal/issues/3883 suggests you can't :-/ |
2020-09-21 13:19:28 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds) |
2020-09-21 13:20:21 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Remote host closed the connection) |
2020-09-21 13:20:26 +0200 | cosimone_ | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
2020-09-21 13:21:20 +0200 | <int-e> | merijn: (The suggested workaround is to specify ghc-options for each package of interest in one of the cabal.project files... manually?) |
2020-09-21 13:21:38 +0200 | <merijn> | hekkaidekapus: But then I need to explicitly do that for each of the local package :\ |
2020-09-21 13:22:04 +0200 | <hekkaidekapus> | Yeah, int-e has been expanding on that. |
2020-09-21 13:22:07 +0200 | <int-e> | So... yeah what hekkaidekapus suggested. |
2020-09-21 13:23:06 +0200 | arianvp | (~weechat@arianvp.me) (Quit: WeeChat 2.7.1) |
2020-09-21 13:23:22 +0200 | <tomjaguarpaw> | If only a cabal file was a datastructure in some programming language. Then you could just write code to do it. |
2020-09-21 13:23:39 +0200 | arianvp | (~weechat@arianvp.me) |
2020-09-21 13:24:04 +0200 | <Putonlalla> | What is Nix? |
2020-09-21 13:25:05 +0200 | <Cheery> | it's a package manager where the specialty is referential transparency extended to package-level. |
2020-09-21 13:26:17 +0200 | tchouri | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-09-21 13:26:18 +0200 | <merijn> | Putonlalla: Oh, oh, is the answer "a terribly ill-specified programming language that's hard to use unless you have a fulltime expert to tell you how to fix things so they work"? :) |
2020-09-21 13:26:27 +0200 | <Putonlalla> | I was just trying to play Jeopardy with tomjaguarpaw. |
2020-09-21 13:26:38 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2020-09-21 13:27:06 +0200 | <tomjaguarpaw> | Ah nice |
2020-09-21 13:27:39 +0200 | <tomjaguarpaw> | But also just having this property for our language-specific build system would be nice (some would say essential) |
2020-09-21 13:27:54 +0200 | cpressey | (~cpressey@88.144.93.20) (Quit: WeeChat 1.9.1) |
2020-09-21 13:28:03 +0200 | hekkaidekapus | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-09-21 13:28:12 +0200 | tchouri | hekkaidekapus |
2020-09-21 13:28:31 +0200 | basil_ | (~basil@host-87-26-187-41.business.telecomitalia.it) (Quit: Leaving) |
2020-09-21 13:28:56 +0200 | <merijn> | tomjaguarpaw: Well, it is one, but the API is rather unstable :p |
2020-09-21 13:29:40 +0200 | <tomjaguarpaw> | Yeah I've been considering extracting a stable subset, but I incrementally learn the internals of cabal slowly :) |
2020-09-21 13:29:42 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) |
2020-09-21 13:29:55 +0200 | chaosmasttter | (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) |
2020-09-21 13:29:57 +0200 | <tomjaguarpaw> | hekkaidekapus: Does your name mean 16-legged? |
2020-09-21 13:30:46 +0200 | <hekkaidekapus> | tomjaguarpaw: hehehehe… Yeah, it’s about arithmetic branched off octopuses… |
2020-09-21 13:30:46 +0200 | GyroW | (~GyroW@unaffiliated/gyrow) (Remote host closed the connection) |
2020-09-21 13:30:57 +0200 | Amras | (~Amras@unaffiliated/amras0000) |
2020-09-21 13:31:06 +0200 | GyroW | (~GyroW@ptr-48ujrfb8c7gfd2lu92q.18120a2.ip6.access.telenet.be) |
2020-09-21 13:31:06 +0200 | GyroW | (~GyroW@ptr-48ujrfb8c7gfd2lu92q.18120a2.ip6.access.telenet.be) (Changing host) |
2020-09-21 13:31:06 +0200 | GyroW | (~GyroW@unaffiliated/gyrow) |
2020-09-21 13:31:06 +0200 | <merijn> | tomjaguarpaw: Godspeed |
2020-09-21 13:31:25 +0200 | knupfer | (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) |
2020-09-21 13:31:27 +0200 | <merijn> | tomjaguarpaw: Cabal's internals are...hairy :p |
2020-09-21 13:31:54 +0200 | <tomjaguarpaw> | I've also been wondering whether it's possible to reduce Cabal's line count by 80% |
2020-09-21 13:32:07 +0200 | <tomjaguarpaw> | I suspect it would be, at the expense of not supporting Hugs and other little-used things |
2020-09-21 13:33:42 +0200 | hvr | (~hvr@haskell/developer/hvr) |
2020-09-21 13:35:08 +0200 | <merijn> | tomjaguarpaw: Well, not so much about not supporting Hugs as "dropping the established API/design that accommodates any compiler" |
2020-09-21 13:35:34 +0200 | <merijn> | Sure, if we just threw our hands in the air and said "fuck it, cabal only supports GHC" a significant portion of the code could be eliminated |
2020-09-21 13:35:52 +0200 | <merijn> | But I don't like the idea of tying crucial tooling *that* tightly to GHC |
2020-09-21 13:38:37 +0200 | <hekkaidekapus> | tomjaguarpaw: The full quote: “Octopus… Enapus… pentekaidekapus hekkaidekapus heptakaidekapus OKTOKAIDEKAPUS enneakaidekapus eikosapus” courtesy of Helen Dewitt <http://helendewitt.com/> |
2020-09-21 13:38:56 +0200 | <tomjaguarpaw> | merijn: Agreed, but it would be an interesting experiment to see just how small and simple one could get. |
2020-09-21 13:39:13 +0200 | shafox | (~shafox@106.51.234.111) (Remote host closed the connection) |
2020-09-21 13:39:32 +0200 | <tomjaguarpaw> | hekkaidekapus: What's the connection to arithmetic? |
2020-09-21 13:40:23 +0200 | shafox | (~shafox@106.51.234.111) |
2020-09-21 13:40:59 +0200 | <hekkaidekapus> | Learning new languages, for instance starting by counting in Greek, all of that to sustain some learning philosophy due to John S. Mill. |
2020-09-21 13:42:33 +0200 | <hekkaidekapus> | H. Dewitt claims many teaching systems are broken and she goes on to teach Japanese, Greek, poker, bridge, maths… to an imaginary kid in her novel. |
2020-09-21 13:44:09 +0200 | terrorjack | (sid225236@gateway/web/irccloud.com/x-tzzxtdijayougbld) () |
2020-09-21 13:44:55 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 13:45:14 +0200 | <tomjaguarpaw> | Oh, The Last Samurai? |
2020-09-21 13:45:20 +0200 | <hekkaidekapus> | Yep! |
2020-09-21 13:45:22 +0200 | <tomjaguarpaw> | Interesting |
2020-09-21 13:46:11 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 13:46:40 +0200 | <hekkaidekapus> | It’s a masterpiece, but let’s not go too far in the off-topic. |
2020-09-21 13:47:04 +0200 | terrorjack | (~terrorjac@static.23.111.201.195.clients.your-server.de) |
2020-09-21 13:47:36 +0200 | <hekkaidekapus> | (Though I should add: wathc the movie —7 Samurai— before reading the novel) |
2020-09-21 13:48:13 +0200 | <tomjaguarpaw> | Yes, I'm a big fan of Kurosawa, which is why I found the synopsis of this book interesting. I will keep it in mind, thanks! |
2020-09-21 13:48:22 +0200 | chaosmasttter | (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 13:48:25 +0200 | <hekkaidekapus> | yw |
2020-09-21 13:49:14 +0200 | <tomjaguarpaw> | It's strange. When I first saw "hekkaidekapus" I assumed it was Japanese. When I looked more closely I saw it was Greek. Now we're back to Japanese again! |
2020-09-21 13:49:27 +0200 | <hekkaidekapus> | lol |
2020-09-21 13:49:49 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 13:49:54 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde) |
2020-09-21 13:50:03 +0200 | <Putonlalla> | We do have #haskell-offtopic, where you can just derail and go. |
2020-09-21 13:50:20 +0200 | hekkaidekapus | is already faded. |
2020-09-21 13:50:25 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2020-09-21 13:51:01 +0200 | <tomjaguarpaw> | A brief flash of communication which may change a life ... or may not. And now back to your regularly scheduled Haskell programming. |
2020-09-21 13:51:31 +0200 | <nitrix> | edwardk, How much have you explored ray marching signed-distance functions and do you remember much from it? I'm exploring the field and ran into a couple answers online by you and would have questions of my own. |
2020-09-21 13:53:31 +0200 | <Cale> | nitrix: From what I recall, Ed has made some really cool demos involving them. |
2020-09-21 13:54:33 +0200 | lemmih | (~lemmih@58.182.131.25) (Ping timeout: 272 seconds) |
2020-09-21 13:54:41 +0200 | jchia__ | (~jchia@58.32.37.220) (Read error: Connection reset by peer) |
2020-09-21 13:54:54 +0200 | jchia_ | (~jchia@45.32.62.73) |
2020-09-21 13:55:40 +0200 | jchia__ | (~jchia@45.32.62.73) |
2020-09-21 13:55:55 +0200 | lemmih | (~lemmih@58.182.131.25) |
2020-09-21 13:56:36 +0200 | <nitrix> | Like many others, I've successfully rendered a cute little scene. I now want to make an editor to build 3d models using these SDFs primitives... the problem is that suddenly makes the scene dynamic. |
2020-09-21 13:56:40 +0200 | iqubic` | (~user@2601:602:9500:4870:ecd4:9584:1de:8f2d) |
2020-09-21 13:57:40 +0200 | jchia__ | (~jchia@45.32.62.73) (Remote host closed the connection) |
2020-09-21 13:58:13 +0200 | jchia__ | (~jchia@58.32.37.220) |
2020-09-21 13:58:24 +0200 | <nitrix> | I sort of have an interpreter in the shader now, reading "instructions" to draw various primitives from a UBO (uniform buffer). The performance is pretty bad beyond a handful of SDFs. |
2020-09-21 13:59:19 +0200 | <nitrix> | So that's one question for edward, then second one would be if I should drop the full-screen quad approach and invest time into compute shaders. |
2020-09-21 13:59:25 +0200 | __Joker | (~Joker@180.151.105.65) (Ping timeout: 240 seconds) |
2020-09-21 13:59:49 +0200 | __Joker | (~Joker@180.151.105.65) |
2020-09-21 13:59:51 +0200 | <nitrix> | Not very Haskell-related but pretty math-y :D |
2020-09-21 14:00:02 +0200 | Cadair1 | (~Cadair@185.204.1.185) () |
2020-09-21 14:01:02 +0200 | jchia_ | (~jchia@45.32.62.73) (Remote host closed the connection) |
2020-09-21 14:01:12 +0200 | iqubic | (~user@2601:602:9500:4870:958d:950f:29cc:a6c4) (Ping timeout: 260 seconds) |
2020-09-21 14:01:23 +0200 | jchia_ | (~jchia@45.32.62.73) |
2020-09-21 14:02:24 +0200 | jchia_ | (~jchia@45.32.62.73) (Remote host closed the connection) |
2020-09-21 14:03:39 +0200 | urodna | (~urodna@unaffiliated/urodna) |
2020-09-21 14:03:42 +0200 | jchia_ | (~jchia@58.32.37.220) |
2020-09-21 14:04:54 +0200 | acidjnk_new2 | (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-09-21 14:09:09 +0200 | <tomjaguarpaw> | nitrix: What's the best introduction to SDFs for that kind of thing? |
2020-09-21 14:10:07 +0200 | sQVe | (~sQVe@unaffiliated/sqve) |
2020-09-21 14:11:03 +0200 | wavemode | (~wavemode@097-070-075-143.res.spectrum.com) |
2020-09-21 14:11:24 +0200 | <nitrix> | tomjaguarpaw, Probably this video/channel "The Art of Code": https://www.youtube.com/watch?v=PGtv-dBi2wE |
2020-09-21 14:12:13 +0200 | <nitrix> | tomjaguarpaw, Otherwise, this guy Inigo Quilez (aka IQ) is one of the leading pioneer: https://iquilezles.org/www/articles/distfunctions/distfunctions.htm |
2020-09-21 14:12:18 +0200 | knupfer | (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2020-09-21 14:12:27 +0200 | <davve> | ah nitrix beat me to linking inigos |
2020-09-21 14:12:39 +0200 | <davve> | love those geometry functions |
2020-09-21 14:12:40 +0200 | <nitrix> | tomjaguarpaw, He's the creator of ShaderToy (https://www.shadertoy.com/) which is junk full of that technique. |
2020-09-21 14:14:29 +0200 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) |
2020-09-21 14:14:42 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2020-09-21 14:15:34 +0200 | Peter_Storm | (uid288816@gateway/web/irccloud.com/x-nhjukwhxucyezwqe) (Quit: Connection closed for inactivity) |
2020-09-21 14:16:28 +0200 | <nitrix> | tomjaguarpaw, Oh, and here's a video that can sell you on the technique for doing constructive solid geometry: https://www.youtube.com/watch?v=Cp5WWtMoeKg |
2020-09-21 14:17:27 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2020-09-21 14:25:11 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-09-21 14:25:19 +0200 | shad0w_ | (~shad0w_@160.202.36.27) (Read error: Connection reset by peer) |
2020-09-21 14:26:41 +0200 | shad0w_ | (~shad0w_@160.202.36.94) |
2020-09-21 14:26:43 +0200 | <davve> | nitrix: shaders are a nice way of using them |
2020-09-21 14:26:54 +0200 | <davve> | and with glsl you get all the math functions you might need |
2020-09-21 14:27:17 +0200 | <davve> | only they can be difficult to debug |
2020-09-21 14:27:28 +0200 | <davve> | painful but fun |
2020-09-21 14:28:01 +0200 | boxscape | (577bcb23@gateway/web/cgi-irc/kiwiirc.com/ip.87.123.203.35) (Quit: Connection closed) |
2020-09-21 14:28:49 +0200 | sQVe | (~sQVe@unaffiliated/sqve) (Quit: Bye!) |
2020-09-21 14:29:29 +0200 | darjeeling_ | (~darjeelin@122.245.219.58) (Ping timeout: 260 seconds) |
2020-09-21 14:29:56 +0200 | <dminuoso> | aroundWith :: (ActionWith a -> ActionWith b) -> SpecWith a -> SpecWith b; type ActionWith a = a -> IO (); after action = aroundWith $ \e x -> e x `finally` action x |
2020-09-21 14:30:02 +0200 | <dminuoso> | My head is spinning. How is this even type checking? |
2020-09-21 14:30:32 +0200 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
2020-09-21 14:30:39 +0200 | <dminuoso> | How can aroundWith take a 2-argument function with that type signature? |
2020-09-21 14:31:05 +0200 | <{abby}> | ((a- > IO ()) -> b -> IO ()) -> SpecWith a -> SpecWith b |
2020-09-21 14:31:13 +0200 | <{abby}> | modulo paren errors, if any |
2020-09-21 14:31:15 +0200 | <Cale> | e :: ActionWith a, x :: a |
2020-09-21 14:31:16 +0200 | sQVe | (~sQVe@unaffiliated/sqve) |
2020-09-21 14:31:41 +0200 | Stanley00 | (~stanley00@unaffiliated/stanley00) () |
2020-09-21 14:31:45 +0200 | <dminuoso> | Oh. |
2020-09-21 14:32:10 +0200 | <dminuoso> | My head kept thinking of this type alias as a newtype for so long, after 15 minutes in disbelief it didn't click. |
2020-09-21 14:32:12 +0200 | <dminuoso> | Thanks. |
2020-09-21 14:32:14 +0200 | <ski> | what's `SpecWith' ? |
2020-09-21 14:32:29 +0200 | <dminuoso> | type SpecWith a = SpecM a () |
2020-09-21 14:32:47 +0200 | <Cale> | (It doesn't matter for this question, it turns out) |
2020-09-21 14:33:05 +0200 | <ski> | (yea, i know. just wondering) |
2020-09-21 14:33:28 +0200 | <dminuoso> | This I think is a good example of why type aliases can be annoying. |
2020-09-21 14:33:30 +0200 | sQVe | (~sQVe@unaffiliated/sqve) (Client Quit) |
2020-09-21 14:33:41 +0200 | <Cale> | Yeah, pretty much |
2020-09-21 14:33:56 +0200 | <Cale> | It would be clearer without the synonym |
2020-09-21 14:34:09 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 14:34:25 +0200 | p8m | (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 264 seconds) |
2020-09-21 14:34:43 +0200 | sQVe | (~sQVe@unaffiliated/sqve) |
2020-09-21 14:34:55 +0200 | <ski> | aroundWith . flip . (runContT .) :: (b -> ContT () IO a) -> (SpecWith a -> SpecWith b) -- then |
2020-09-21 14:35:03 +0200 | p8m | (p8m@gateway/vpn/protonvpn/p8m) |
2020-09-21 14:35:33 +0200 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9) |
2020-09-21 14:36:02 +0200 | cybercraft | (~Cybercraf@194.78.58.3) |
2020-09-21 14:37:58 +0200 | sQVe | (~sQVe@unaffiliated/sqve) (Client Quit) |
2020-09-21 14:38:48 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-09-21 14:39:14 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 14:40:04 +0200 | iqubic` | (~user@2601:602:9500:4870:ecd4:9584:1de:8f2d) ("ERC (IRC client for Emacs 28.0.50)") |
2020-09-21 14:40:28 +0200 | hackage | signable-haskell-protoc 0.1 - Signable instances protoc compiler plugin. https://hackage.haskell.org/package/signable-haskell-protoc-0.1 (coingaming) |
2020-09-21 14:41:05 +0200 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds) |
2020-09-21 14:43:30 +0200 | argent0 | (~argent0@168.227.97.4) |
2020-09-21 14:46:24 +0200 | rprije | (~rprije@27.143.220.203.dial.dynamic.acc01-myal-dub.comindico.com.au) (Ping timeout: 260 seconds) |
2020-09-21 14:47:27 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 14:48:11 +0200 | tronical | (~tronical@185.244.214.216) |
2020-09-21 14:50:21 +0200 | drbean | (~drbean@TC210-63-209-62.static.apol.com.tw) |
2020-09-21 14:50:38 +0200 | xerox_ | (~xerox@unaffiliated/xerox) |
2020-09-21 14:51:57 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 14:52:19 +0200 | <siraben> | What should I do when stack fails to find a version of GHC that works? |
2020-09-21 14:52:29 +0200 | <siraben> | Why wouldn't it have found a version that worked in the past? |
2020-09-21 14:52:41 +0200 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-157-9.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer) |
2020-09-21 14:55:00 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 14:56:28 +0200 | <merijn> | siraben: It doesn't look for a GHC version, the snapshot specifies the GHC version |
2020-09-21 14:56:45 +0200 | rihards | (~rihards@balticom-142-78-50.balticom.lv) (Quit: rihards) |
2020-09-21 14:57:05 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2020-09-21 14:57:09 +0200 | <merijn> | So if you stack setup uses lts 11.8 (or whatever, I don't use stack) that defines which GHC you get and if that one doesn't work, well, fix your project >.> |
2020-09-21 14:57:13 +0200 | <siraben> | Running stack init in a repository like https://github.com/jozefg/pcf/ seems to fail |
2020-09-21 14:57:41 +0200 | <siraben> | log: http://ix.io/2yhR |
2020-09-21 14:58:13 +0200 | <merijn> | I'm assuming "stack init" just picks the latest LTS snapshot or something |
2020-09-21 14:58:41 +0200 | <merijn> | I doubt it does anything smart |
2020-09-21 14:59:13 +0200 | <siraben> | Is that log not showing it going through older LTS snapshots to find one that has all the deps? |
2020-09-21 14:59:24 +0200 | <merijn> | ok, something smarter than I expected, but still doomed to fail |
2020-09-21 14:59:34 +0200 | <siraben> | How should I fix it? |
2020-09-21 14:59:38 +0200 | <merijn> | siraben: Eh, why would you assume a snapshot that has all the dependencies exists? |
2020-09-21 14:59:54 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-09-21 15:00:02 +0200 | <siraben> | merijn: presumably this project built at some moment in time |
2020-09-21 15:00:07 +0200 | <merijn> | That seems...naively optimistic, especially given the lat change to that package predates the existence of stack |
2020-09-21 15:00:32 +0200 | <siraben> | Ok, I see why, because it predates stack. |
2020-09-21 15:00:36 +0200 | <merijn> | oh, wait, no, there's more recent changes |
2020-09-21 15:00:47 +0200 | <merijn> | Still, I'd assume the author uses cabal-install |
2020-09-21 15:01:09 +0200 | <siraben> | Well, cabal build doesn't work either. |
2020-09-21 15:01:18 +0200 | <siraben> | After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: base, language-c, c-dsl, pcf |
2020-09-21 15:01:28 +0200 | <merijn> | What's the rest of the error, though? |
2020-09-21 15:01:47 +0200 | <siraben> | http://ix.io/2yhU |
2020-09-21 15:02:08 +0200 | <merijn> | Right |
2020-09-21 15:02:15 +0200 | <siraben> | stack wasn't around in 2015? |
2020-09-21 15:02:46 +0200 | <siraben> | Ok, so building projects older than stack seems to be slightly more involved. |
2020-09-21 15:02:47 +0200 | <merijn> | siraben: That error is pointing out that it (transitively) depends on language-c==0.4.* |
2020-09-21 15:03:02 +0200 | <merijn> | siraben: Which requires (conflict: language-c |
2020-09-21 15:03:03 +0200 | <merijn> | +/-separatesyb +/-splitbase => base<4.11) |
2020-09-21 15:03:16 +0200 | <merijn> | So your GHC is to new |
2020-09-21 15:03:38 +0200 | <merijn> | You could (optimistically) try "cabal build --allow-newer" which may work |
2020-09-21 15:03:42 +0200 | <siraben> | Ok, so should I use a nix-shell with an older version of GHC then? |
2020-09-21 15:04:37 +0200 | <merijn> | siraben: base 4.11 is GHC 8.4 it seems: https://wiki.haskell.org/Base_package |
2020-09-21 15:05:53 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 15:06:42 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde) |
2020-09-21 15:06:42 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde) (Client Quit) |
2020-09-21 15:07:26 +0200 | <siraben> | merijn: Running cabal build --allow-newer now |
2020-09-21 15:08:04 +0200 | <cheater> | what's a word for an exercise that's very repetitive, and you learn by doing a lot of it? like when you have a full page of stuff like 1x5 = __, 7x4 = __, and so on |
2020-09-21 15:08:41 +0200 | <siraben> | cheater: rote |
2020-09-21 15:08:48 +0200 | <siraben> | rote learning, that is |
2020-09-21 15:10:13 +0200 | <cheater> | someone else suggested that too. rote learning is the method with which you learn from this. but what about the problem itself that's on the problem sheet? |
2020-09-21 15:10:37 +0200 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2020-09-21 15:10:37 +0200 | darjeeling_ | (~darjeelin@122.245.219.58) |
2020-09-21 15:10:50 +0200 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
2020-09-21 15:11:29 +0200 | <int-e> | boring, trite, routine |
2020-09-21 15:12:31 +0200 | <int-e> | (and wrong channel) |
2020-09-21 15:15:37 +0200 | <siraben> | merijn: with allow-never it seems to get all the dependencies, however how it's complaining about Pcf.hs which is the source file |
2020-09-21 15:15:43 +0200 | <siraben> | newer* |
2020-09-21 15:15:47 +0200 | bahamas | (~lucian@188.24.181.166) |
2020-09-21 15:15:47 +0200 | bahamas | (~lucian@188.24.181.166) (Changing host) |
2020-09-21 15:15:47 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 15:15:48 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 15:16:10 +0200 | <siraben> | http://ix.io/2yhY |
2020-09-21 15:16:36 +0200 | <siraben> | Could I use nix to go back to GHC 8.4 with the packages there? |
2020-09-21 15:16:46 +0200 | <merijn> | Probably a change in the dependencies or something |
2020-09-21 15:16:55 +0200 | basil | (~basil@host-87-26-187-41.business.telecomitalia.it) |
2020-09-21 15:17:19 +0200 | basil | Guest18536 |
2020-09-21 15:17:44 +0200 | Guest18536 | (~basil@host-87-26-187-41.business.telecomitalia.it) (Client Quit) |
2020-09-21 15:18:58 +0200 | <siraben> | Hm, what's the easiest way to get it to build then? |
2020-09-21 15:19:04 +0200 | <siraben> | These are not libraries I'm very familiar with. |
2020-09-21 15:19:23 +0200 | <Cheery> | A question.. Lets say you had de-bruijn syntax, eg. λλ1, how would you represent let-expressions? |
2020-09-21 15:19:37 +0200 | <Cheery> | and letrec syntax? |
2020-09-21 15:20:01 +0200 | <Cheery> | let x = ... in, if we dropped the variable here, how would you adjust the syntax? How about the case expression? |
2020-09-21 15:20:15 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-09-21 15:20:49 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds) |
2020-09-21 15:21:36 +0200 | <ggole> | Indices require rewriting of the scope of a binding when you remove that binding |
2020-09-21 15:22:12 +0200 | <ggole> | Wait, did you mean removing the name and using an index? |
2020-09-21 15:22:56 +0200 | <merijn> | siraben: The package is lacking proper bounds, so the answer is "you manually have to patch the package description to have the correct bounds" |
2020-09-21 15:23:06 +0200 | <Cheery> | yup. I mean, if it had a textual representation where you use de-bruijn indices, how would you form let-expressions? |
2020-09-21 15:23:08 +0200 | <edwardk> | nitrix: i did. though i admit my brain is currently a bit of goo on the floor from my current project |
2020-09-21 15:23:14 +0200 | <merijn> | siraben: "What are the correct bounds?" 'you have to figure that out the hard way' |
2020-09-21 15:23:29 +0200 | <siraben> | Ugh, if only there was an automated tool to do that! |
2020-09-21 15:23:43 +0200 | <Cheery> | You could use (λx) y to represent let = y in x |
2020-09-21 15:23:54 +0200 | <merijn> | There can't be, because "it compiles" isn't sufficient to identify "correct" bounds |
2020-09-21 15:24:02 +0200 | <edwardk> | Cale: if you thought `constraints` was fun. wait until you meet it's polykinded cousin https://github.com/ekmett/haskell/blob/master/types/src/Data/Type/Constraint.hs |
2020-09-21 15:24:06 +0200 | <ggole> | Just let term in body seems ok |
2020-09-21 15:25:07 +0200 | <cheater> | tomsmeding: so i was wondering, does cmd.exe accept the EXACT same terminal escape codes as VT100 (just possibly less of them)? what if for windows, I told Vty to not query terminfo, but instead give it a specific finite amount of supported escape codes instead? |
2020-09-21 15:25:22 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 15:25:25 +0200 | <cheater> | tomsmeding: basically making it not use terminfo, but instead hard coded stuff |
2020-09-21 15:27:04 +0200 | <edwardk> | Cheery: i tend to bolt lets in as an extra form in most of my type checkers. why? mainly because inference can be a bit better and you can make an ever so slightly faster evaluator that just recurses in with the arg in hand in debruijn terms you just wind up with let expression body where the body is counted as having one more expression bound in it, 'let expression' counts like a lambda in terms of var count. |
2020-09-21 15:28:06 +0200 | cybercraft | (~Cybercraf@194.78.58.3) ("WeeChat 2.9") |
2020-09-21 15:28:50 +0200 | <edwardk> | this whole 'plumbing around every part of every expression' feels very grothendieck construction-like to me. |
2020-09-21 15:29:13 +0200 | <edwardk> | it is weird treating "Left" as a functor. and '(:) as a bifunctor |
2020-09-21 15:30:39 +0200 | shatriff | (~vitaliish@176.52.219.10) |
2020-09-21 15:30:56 +0200 | <siraben> | edwardk: error raised at compile time by the bound library; Exception when trying to run compile-time code: This is bad: AppT (ConT Language.Pcf.Clos) (VarT a_6989586621679111736) False, what could be causing it? |
2020-09-21 15:31:44 +0200 | <edwardk> | wat? |
2020-09-21 15:32:20 +0200 | <siraben> | edwardk: why doesn't this work? http://ix.io/2yi5 |
2020-09-21 15:32:28 +0200 | <siraben> | you're the author of bound right? |
2020-09-21 15:32:54 +0200 | <siraben> | makeBound ''ExpC seems to be the culprit |
2020-09-21 15:32:57 +0200 | hackage | signable 0.1 - Deterministic serialisation and signatures with proto-lens support https://hackage.haskell.org/package/signable-0.1 (coingaming) |
2020-09-21 15:33:16 +0200 | <merijn> | siraben: The problem is that --allow-newer probably picks bound 2.x |
2020-09-21 15:33:37 +0200 | <merijn> | siraben: And pcf uses bound 1.x |
2020-09-21 15:33:41 +0200 | <siraben> | merijn: I've decided to remove the bounds completely and update the project to the newest libraries |
2020-09-21 15:33:55 +0200 | <siraben> | So I've commented everything out and starting from top dow |
2020-09-21 15:33:55 +0200 | <siraben> | down |
2020-09-21 15:33:59 +0200 | <edwardk> | can you try expanding the type synonym for Clos in it? |
2020-09-21 15:34:02 +0200 | <merijn> | siraben: Then I'd recommend consulting the changelog of dependencies and read what changed? :) |
2020-09-21 15:34:04 +0200 | argent0 | (~argent0@168.227.97.4) (Remote host closed the connection) |
2020-09-21 15:34:09 +0200 | <edwardk> | it probably isn't seeing through that |
2020-09-21 15:34:15 +0200 | <siraben> | merijn: Ok |
2020-09-21 15:34:29 +0200 | <siraben> | edwardk: Ah, now it works |
2020-09-21 15:34:38 +0200 | <siraben> | Interesting, didn't know type synonym expansion matters |
2020-09-21 15:34:50 +0200 | <edwardk> | well, we have to walk through that syntax tree manually in TH |
2020-09-21 15:34:52 +0200 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) |
2020-09-21 15:35:03 +0200 | <edwardk> | and i guess we never had anybody try to hide expressions from us behind type synonyms before |
2020-09-21 15:35:21 +0200 | <edwardk> | otherwise we have to figure out how to look them up instantiate them and keep walking somehow |
2020-09-21 15:35:30 +0200 | <edwardk> | sounds like lots fo templatehaskell |
2020-09-21 15:36:13 +0200 | <siraben> | edwardk: is there a problem with mutually recursive data? |
2020-09-21 15:36:30 +0200 | <siraben> | I have, data A = .<B>., data B = ...<A> ... and makebound ''A; makeBound ''B |
2020-09-21 15:36:32 +0200 | <siraben> | Seems to fail as well |
2020-09-21 15:36:40 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 15:36:50 +0200 | <edwardk> | there is a 'trick' to working with bound |
2020-09-21 15:37:06 +0200 | <edwardk> | you make one monad, and a bunch of left-modules over monads that carefully don't mention it |
2020-09-21 15:37:09 +0200 | <edwardk> | then get parameterized on it |
2020-09-21 15:37:41 +0200 | <siraben> | Left module over a monad is left distributivity over bind, right? |
2020-09-21 15:37:43 +0200 | <edwardk> | https://github.com/ekmett/bound/blob/master/examples/Deriving.hs |
2020-09-21 15:38:21 +0200 | <edwardk> | shows an example with patterns |
2020-09-21 15:38:26 +0200 | <edwardk> | the patterns are in a separate data type |
2020-09-21 15:38:35 +0200 | <siraben> | Ah, I'll take a look, thanks. |
2020-09-21 15:38:37 +0200 | <edwardk> | that data type has an instance of the Bound class |
2020-09-21 15:38:54 +0200 | <edwardk> | but note Pat carries the 'f' as a parameter and later we just instantiate that to Exp |
2020-09-21 15:38:54 +0200 | <hekkaidekapus> | siraben: (In the shell) `printf '%s\n%s' 'packages: .' 'allow-newer: *:all' > cabal.project` in the pcf directory. Then build. You will have to make local patches to fix <https://paste.tomsmeding.com/84uGbbWh>. |
2020-09-21 15:38:59 +0200 | <edwardk> | Pat isn't itself a monad |
2020-09-21 15:39:03 +0200 | <edwardk> | it is just an instance of Bound |
2020-09-21 15:39:43 +0200 | <edwardk> | Some times you dont' want to do this, so i then recommend writing the instances by hand, and making your own class for the (>>>=) equivalent operation, which is that left-module thing |
2020-09-21 15:40:35 +0200 | drbean | (~drbean@TC210-63-209-62.static.apol.com.tw) (Ping timeout: 258 seconds) |
2020-09-21 15:40:52 +0200 | IT92 | (511495c6@198-149-20-81.sta.estpak.ee) |
2020-09-21 15:41:14 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-09-21 15:41:30 +0200 | <edwardk> | siraben: https://github.com/ekmett/bound/tree/master/examples has a few examples, the overkill one shows what happens if you go all the way down the manual rabbit hole |
2020-09-21 15:41:34 +0200 | <siraben> | I see |
2020-09-21 15:41:40 +0200 | <edwardk> | deriving is closer to where you are now |
2020-09-21 15:42:09 +0200 | Sheilong | (uid293653@gateway/web/irccloud.com/x-nsrjqtazcudlgiur) |
2020-09-21 15:42:48 +0200 | <IT92> | Hi guys! I'm qurious how do I declare binary dependencies for my haskell package? Here is example, my library needs secp256k1 library, but Hackage CI machine obviously don't have it https://hackage.haskell.org/package/signable-0.1/reports/1 |
2020-09-21 15:42:57 +0200 | <siraben> | At least writing that somewhat boilerplatey monad instance is better than having to deal with manual substitution, heh. |
2020-09-21 15:43:28 +0200 | <merijn> | IT92: Short answer: You don't |
2020-09-21 15:43:42 +0200 | <merijn> | IT92: Are you using cabal-install? |
2020-09-21 15:43:56 +0200 | <IT92> | merijn I'm using stack and nix |
2020-09-21 15:44:30 +0200 | <merijn> | You can build/upload docs locally to get working docs in the absence of succesful hackage build, but not sure how to do that with stack |
2020-09-21 15:44:56 +0200 | <merijn> | "cabal haddock --haddock-for-hackage" works, I assume stack has something similar |
2020-09-21 15:45:09 +0200 | <IT92> | merijn thanks! |
2020-09-21 15:45:30 +0200 | ixlun | (~matthew@213.205.241.81) (Ping timeout: 256 seconds) |
2020-09-21 15:46:40 +0200 | <hekkaidekapus> | siraben: hmm… Scrolling down, I see you already got the errors in <http://ix.io/2yhY>. Cheers. |
2020-09-21 15:47:29 +0200 | <siraben> | Alright, so the only part that seems to have problems is the one that uses the c-dsl package, hm. |
2020-09-21 15:47:54 +0200 | <siraben> | c-dsl has dependenices base (==4.), language-c (==0.4.) |
2020-09-21 15:49:33 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:7928:db17:6f00:cd09) |
2020-09-21 15:49:49 +0200 | spew | (uid195861@gateway/web/irccloud.com/x-ttozjtuhdixrdemb) |
2020-09-21 15:51:18 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 15:51:40 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 15:52:16 +0200 | mmohammadi9812 | (~mmohammad@2.178.188.114) |
2020-09-21 15:53:47 +0200 | alp | (~alp@88.126.45.36) (Ping timeout: 240 seconds) |
2020-09-21 15:55:09 +0200 | cpressey | (~cpressey@79-65-248-204.host.pobb.as13285.net) |
2020-09-21 15:55:13 +0200 | Lycurgus | (~niemand@98.4.96.130) |
2020-09-21 15:56:04 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 246 seconds) |
2020-09-21 15:56:15 +0200 | takuan_dozo | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-09-21 15:56:16 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
2020-09-21 15:56:27 +0200 | <siraben> | Heh, relaxing that restriction on base seems to do the job. |
2020-09-21 15:57:20 +0200 | ryansmccoy | (~ryansmcco@193.37.254.27) (Ping timeout: 256 seconds) |
2020-09-21 15:57:25 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 15:58:08 +0200 | ryansmccoy | (~ryansmcco@156.96.151.132) |
2020-09-21 15:58:42 +0200 | <siraben> | merijn: is there a way to put --allow-newer in the cabal file? |
2020-09-21 16:00:19 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 16:01:47 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-09-21 16:02:00 +0200 | jlamothe | (~jlamothe@dev.jlamothe.net) (Quit: leaving) |
2020-09-21 16:02:51 +0200 | alp | (~alp@2a01:e0a:58b:4920:e1db:5e81:371d:6a3c) |
2020-09-21 16:03:40 +0200 | <siraben> | cabal is complaining about multiple main libraries http://ix.io/2yil |
2020-09-21 16:04:13 +0200 | <siraben> | Oh if I write library c-dsl instead of library, it works. |
2020-09-21 16:04:14 +0200 | son0p | (~son0p@181.136.122.143) |
2020-09-21 16:04:32 +0200 | irc_user | (uid423822@gateway/web/irccloud.com/x-orjppconqhqlsued) |
2020-09-21 16:05:12 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:7928:db17:6f00:cd09) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 16:05:49 +0200 | <siraben> | I wonder if I could do a dependency override in cabal like in nix |
2020-09-21 16:08:26 +0200 | jlamothe | (~jlamothe@dev.jlamothe.net) |
2020-09-21 16:09:22 +0200 | son0p | (~son0p@181.136.122.143) (Ping timeout: 246 seconds) |
2020-09-21 16:10:24 +0200 | IT92 | (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
2020-09-21 16:10:34 +0200 | son0p | (~son0p@181.136.122.143) |
2020-09-21 16:11:19 +0200 | oxide | (~lambda@unaffiliated/mclaren) |
2020-09-21 16:13:31 +0200 | <edwardk> | siraben: that is what cabal.project files are for |
2020-09-21 16:13:56 +0200 | <edwardk> | siraben: https://github.com/ekmett/codex/blob/master/cabal.project#L57 |
2020-09-21 16:13:59 +0200 | <edwardk> | is an example |
2020-09-21 16:14:24 +0200 | SanchayanM | (~Sanchayan@106.201.114.230) (Quit: leaving) |
2020-09-21 16:14:29 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2020-09-21 16:14:57 +0200 | fendor | (~fendor@77.119.128.64.wireless.dyn.drei.com) |
2020-09-21 16:15:02 +0200 | <siraben> | edwardk: Oh, do I have to use another tool or does it work with cabal? |
2020-09-21 16:15:10 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2020-09-21 16:15:14 +0200 | <edwardk> | cabal.project is part of cabak |
2020-09-21 16:15:16 +0200 | <edwardk> | er cabal |
2020-09-21 16:15:26 +0200 | <siraben> | Ok, I'll try that |
2020-09-21 16:16:02 +0200 | <edwardk> | you put one at the top of your project dir, it can tell cabal where to go find libraries when they are branches in git repos, tell it to override version bounds in various ways, specify flags, etc. |
2020-09-21 16:16:39 +0200 | <edwardk> | you can share one across multiple libraries when working on a multi-library project, etc. |
2020-09-21 16:17:03 +0200 | xff0x | (~fox@2001:1a81:53e9:6d00:158c:d17f:d83e:dc7f) (Ping timeout: 272 seconds) |
2020-09-21 16:17:28 +0200 | <siraben> | edwardk: I already have pcf.cabal, so I add cabal.project as well? |
2020-09-21 16:17:34 +0200 | <edwardk> | yes |
2020-09-21 16:17:48 +0200 | <edwardk> | cabal.project is used to locate cabal files and specify things like overrides |
2020-09-21 16:18:16 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 16:18:42 +0200 | mjuad | (greg@2600:3c00::f03c:91ff:fec3:b10f) (Quit: WeeChat 1.6) |
2020-09-21 16:18:55 +0200 | <edwardk> | that is the only actual required line |
2020-09-21 16:19:14 +0200 | jlamothe | (~jlamothe@dev.jlamothe.net) (Remote host closed the connection) |
2020-09-21 16:19:30 +0200 | <edwardk> | after that you can skim through that file i linked, and at the bottom there are some examples of specifying local project bounds on things, or allowing newer versions of different libraries for either specific targets or all |
2020-09-21 16:19:43 +0200 | <edwardk> | the cabal docs have a bunch to say on cabal.project files |
2020-09-21 16:20:31 +0200 | <siraben> | Ah, I see |
2020-09-21 16:20:32 +0200 | IT78 | (511495c6@198-149-20-81.sta.estpak.ee) |
2020-09-21 16:20:34 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:dceb:16d3:9c64:27d9) |
2020-09-21 16:21:04 +0200 | <merijn> | .cabal files specify packages, cabal.project files specify "build setups" |
2020-09-21 16:21:28 +0200 | <merijn> | One is for distributing packages, the other helps specify setups when developing packages |
2020-09-21 16:22:23 +0200 | <IT78> | Hi guys! Can cabal package use dependencies from github like stack do? I just need a bit different version of package, but don't want to push changes and propose pull request to contributor of the package |
2020-09-21 16:22:35 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-09-21 16:23:10 +0200 | <siraben> | edwardk: great, it works, thanks! |
2020-09-21 16:23:38 +0200 | <merijn> | IT78: Depending on circumstances "not really" or "sorta" |
2020-09-21 16:24:16 +0200 | <merijn> | IT78: You can use cabal.project files to point to a git repo to fetch a dependency from, which is useful for "in-flight" patches/changes |
2020-09-21 16:24:30 +0200 | <merijn> | But it's probably a bad idea for long-term |
2020-09-21 16:24:42 +0200 | <IT78> | merijn why? |
2020-09-21 16:24:53 +0200 | <tomsmeding> | cheater: I believe that cmd.exe attempts to act like an xterm, which is kind of the modern (but ugly, according to some?) de-facto derivative/extension of vt100 |
2020-09-21 16:25:01 +0200 | <merijn> | Well, for one, such a package can't be (usefully) distributed via Hackage |
2020-09-21 16:25:13 +0200 | <cheater> | tomsmeding: i thought it was trying to act like vt100 |
2020-09-21 16:25:16 +0200 | <tomsmeding> | so yes, if you manage to make vty not query terminfo and just blindly assume it runs in an xterm, then yes |
2020-09-21 16:25:16 +0200 | <merijn> | Also, git repos tend to be more volatile in terms of lifecycle |
2020-09-21 16:25:20 +0200 | <cheater> | tomsmeding: what do you think of my plan? |
2020-09-21 16:25:21 +0200 | <cheater> | ok |
2020-09-21 16:25:21 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-09-21 16:25:41 +0200 | <cheater> | have you ever looked inside vty? to see if/how it figures out what escape sequences to use when? |
2020-09-21 16:25:44 +0200 | <tomsmeding> | cheater: https://github.com/microsoft/terminal/issues/6045#issuecomment-631743728 |
2020-09-21 16:26:15 +0200 | mastarija | (~mastarija@93-142-74-181.adsl.net.t-com.hr) |
2020-09-21 16:26:27 +0200 | <IT78> | merijn so how usually such issues are solved with cabal? Just create new hackage repo with new code which you can change? |
2020-09-21 16:26:42 +0200 | <merijn> | IT78: Depends what you're working on |
2020-09-21 16:26:57 +0200 | <merijn> | IT78: Like, if you don't ever plan to put it on hackage then the problem is moot |
2020-09-21 16:27:05 +0200 | <mastarija> | Is it possible to read from Control.Concurrent.Chan without blocking. Or rather, is it possible to return Nothing in case there is no value in the Chan at the moment? |
2020-09-21 16:27:22 +0200 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
2020-09-21 16:27:31 +0200 | <tomsmeding> | cheater: as for looking inside vty, well, I just did earlier today in response to your question, and found https://hackage.haskell.org/package/vty-5.30/docs/src/Graphics.Vty.Output.html#outputForConfig which, directly or indirectly, calls https://hackage.haskell.org/package/vty-5.30/docs/src/Graphics.Vty.Output.TerminfoBased.html#reser… |
2020-09-21 16:27:47 +0200 | <dminuoso> | IT78: You could also run a local package repository (does not have to be hackage). cabal is able to use multiple repositories |
2020-09-21 16:27:52 +0200 | <dminuoso> | Look at skete |
2020-09-21 16:27:58 +0200 | <merijn> | mastarija: I was gonna say yes, but apparently not |
2020-09-21 16:28:03 +0200 | <mastarija> | From what I understand, if I attempt to read from Chan when there's nothing in it, that operation will block until a new value arrives |
2020-09-21 16:28:30 +0200 | <merijn> | mastarija: However, I've got a package that's basically a more featureful implementation of Chan which does support that ;) |
2020-09-21 16:28:33 +0200 | <merijn> | mastarija: https://hackage.haskell.org/package/broadcast-chan |
2020-09-21 16:28:34 +0200 | <IT78> | dminuoso thanks! |
2020-09-21 16:28:36 +0200 | xff0x | (~fox@2001:1a81:53e9:6d00:158c:d17f:d83e:dc7f) |
2020-09-21 16:28:44 +0200 | jlamothe | (~jlamothe@dev.jlamothe.net) |
2020-09-21 16:28:47 +0200 | <tomsmeding> | cheater: Terminfo, there, is System.Console.TermInfo from https://hackage.haskell.org/package/terminfo , which does foreign calls to a C library; I didn't look further, but I assume that's going to fail on windows |
2020-09-21 16:28:53 +0200 | acidjnk_new2 | (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) |
2020-09-21 16:28:55 +0200 | tolt | (kevin@2600:3c03::f03c:91ff:fe79:6b76) (Quit: tolt) |
2020-09-21 16:29:38 +0200 | IT78 | (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
2020-09-21 16:29:46 +0200 | <tomsmeding> | mastarija: any reason you're not able to use a TChan from Control.Concurrent.STM ? That does support polling |
2020-09-21 16:29:52 +0200 | <merijn> | Wait, no |
2020-09-21 16:29:54 +0200 | <merijn> | I lied |
2020-09-21 16:29:58 +0200 | <merijn> | I should add that! |
2020-09-21 16:30:03 +0200 | <tomsmeding> | :D |
2020-09-21 16:30:07 +0200 | <merijn> | The Maybe is for when it's closed >.> |
2020-09-21 16:30:21 +0200 | <mastarija> | tomsmeding, well, I kind of used Chan and am to lazy to switch now |
2020-09-21 16:30:24 +0200 | machinedgod | (~machinedg@45.78.189.122) |
2020-09-21 16:30:31 +0200 | <mastarija> | :D |
2020-09-21 16:30:32 +0200 | <tomsmeding> | that's a reason :p |
2020-09-21 16:30:56 +0200 | <tomsmeding> | mastarija: also, I haven't tried it, but perhaps https://hackage.haskell.org/package/base-4.14.0.0/docs/System-Timeout.html#v:timeout works |
2020-09-21 16:31:08 +0200 | utopic_int0x80 | (~lucid_0x8@188.253.235.98) |
2020-09-21 16:31:19 +0200 | eric_ | (~eric@2804:431:c7d4:402a:842:24e2:eb65:718) |
2020-09-21 16:31:19 +0200 | <mastarija> | tomsmeding, that was going to be my next question :D |
2020-09-21 16:31:38 +0200 | ddellacosta | (~dd@86.106.121.168) |
2020-09-21 16:31:41 +0200 | Lycurgus | (~niemand@98.4.96.130) (Quit: Exeunt) |
2020-09-21 16:31:57 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Quit: Leaving) |
2020-09-21 16:32:17 +0200 | <tomsmeding> | even if it works, it's dangerous, though, because you might get Nothing then even if there is data on the Chan |
2020-09-21 16:32:31 +0200 | <mastarija> | tomsmeding, although I could use MVar or something like that and a separate thread to push changes form Chan into it |
2020-09-21 16:32:43 +0200 | <mastarija> | and then read values from that MVar |
2020-09-21 16:32:43 +0200 | <tomsmeding> | in case the read just takes abnormally long (which I guess can happen) and that happens to be longer than the (short) timeout you specified |
2020-09-21 16:33:07 +0200 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) |
2020-09-21 16:33:18 +0200 | <Eduard_Munteanu> | mastarija, or TMVar |
2020-09-21 16:33:27 +0200 | <mastarija> | tomsmeding, do you think my TMVar approach could work? |
2020-09-21 16:33:46 +0200 | <mastarija> | Eduard_Munteanu, I kind of need speed in this case |
2020-09-21 16:33:46 +0200 | <tomsmeding> | what even is a TMVar |
2020-09-21 16:33:52 +0200 | <Eduard_Munteanu> | mastarija, the nice thing about STM primitives is you can do something like select() |
2020-09-21 16:33:56 +0200 | <merijn> | tomsmeding: STM version of MVar |
2020-09-21 16:34:10 +0200 | <tomsmeding> | isn't that TVar? |
2020-09-21 16:34:12 +0200 | <merijn> | mastarija: What's the actual problem, though? |
2020-09-21 16:34:13 +0200 | <merijn> | tomsmeding: No |
2020-09-21 16:34:18 +0200 | <merijn> | tomsmeding: TVar can't be empty |
2020-09-21 16:34:21 +0200 | <tomsmeding> | ah |
2020-09-21 16:34:24 +0200 | <mastarija> | merijn, game loop for multiplayer game |
2020-09-21 16:34:34 +0200 | <mastarija> | and I need to receive data form the server |
2020-09-21 16:34:42 +0200 | <merijn> | mastarija: Eh, more detailed then that :p Why do you need to poll for data? |
2020-09-21 16:34:43 +0200 | <mastarija> | so I can't have my loop block |
2020-09-21 16:35:08 +0200 | <merijn> | You can do something super dumb |
2020-09-21 16:35:22 +0200 | <merijn> | Like, use and MVar and have one thread "read from Chan, write to MVar" |
2020-09-21 16:35:33 +0200 | <merijn> | and then your main loop can do "tryTakeMVar" |
2020-09-21 16:35:38 +0200 | <mastarija> | merijn, that's what I suggested earlier |
2020-09-21 16:35:43 +0200 | <mastarija> | I think I'll go with that :D |
2020-09-21 16:35:44 +0200 | <tomsmeding> | that could work :p |
2020-09-21 16:35:53 +0200 | John20 | (~John@82.46.59.122) |
2020-09-21 16:35:55 +0200 | <tomsmeding> | it won't even be that slow perhaps |
2020-09-21 16:35:56 +0200 | <merijn> | It probably wouldn't even be that inefficient, tbh |
2020-09-21 16:36:01 +0200 | <tomsmeding> | lol |
2020-09-21 16:36:18 +0200 | <merijn> | sleeping on Chan/MVar is pretty cheap |
2020-09-21 16:36:24 +0200 | <mastarija> | Ok, thanks for the brainstorm peeps! |
2020-09-21 16:36:29 +0200 | <Eduard_Munteanu> | One other reason to refactor is to use a bounded channel instead of Chan to avoid leaks. |
2020-09-21 16:36:50 +0200 | <mastarija> | Meh, I'll accept spaceleaks for now XD |
2020-09-21 16:36:51 +0200 | <John20> | Hi all, Does anyone have any examples of LanguageExtensions that have made it into the haskell language 'proper'? |
2020-09-21 16:37:16 +0200 | <mastarija> | Eduard_Munteanu, But yes, I will have to fix that eventually |
2020-09-21 16:37:31 +0200 | <merijn> | John20: PatternGuards extension was added to the report in Haskell2010 |
2020-09-21 16:37:43 +0200 | <merijn> | as was EmptyDataDecls? |
2020-09-21 16:38:11 +0200 | <Eduard_Munteanu> | John20, https://www.haskell.org/onlinereport/haskell2010/haskellli2.html#x3-5000 |
2020-09-21 16:38:24 +0200 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-157-9.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2020-09-21 16:39:02 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 16:39:14 +0200 | <Eduard_Munteanu> | I'd count a few more as de facto into the language, such as FlexibleInstances, MPTCs... |
2020-09-21 16:40:00 +0200 | ph88^ | (~ph88@2a02:8109:9e40:2704:3dae:c0b9:eddf:4cf0) |
2020-09-21 16:40:59 +0200 | <Eduard_Munteanu> | It's hard to imagine Haskell without some of those even if not in the report. |
2020-09-21 16:42:05 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 16:42:25 +0200 | <John20> | Thanks, that's really useful. I'm writing a blog post about some of the things that are surprising about Haskell for someone coming from a more mainstream language (Java in my case). |
2020-09-21 16:43:28 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-09-21 16:44:06 +0200 | <merijn> | John20: The main problem is that "properly specifying" these extensions is tricky and that's what any new Haskell Report would have to do to include them. Which is why the past 2 (3?) attempts to produce a new report have stranded |
2020-09-21 16:44:17 +0200 | ph88 | (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Ping timeout: 272 seconds) |
2020-09-21 16:44:27 +0200 | hackage | flink-statefulfun 0.1.0.0 - Flink stateful functions SDK https://hackage.haskell.org/package/flink-statefulfun-0.1.0.0 (tdbgamer) |
2020-09-21 16:44:32 +0200 | <cpressey> | Hi. I have a list of Word8 and I'd like to render it as hexdigit pairs (e.g. "03 a9 1e" etc). I have written a function to do this, but it uses Text.Printf, which produces a String, but the consumer of my function now expects a Data.Text.Text. I could just DT.pack the string, but... any suggestions for something more elegant? |
2020-09-21 16:44:38 +0200 | <merijn> | Everyone wants to include "the most common/important stuff into the report", but actually specifying them is hard and people give up |
2020-09-21 16:45:06 +0200 | <merijn> | cpressey: fyi, the Numeric module has functions for doing that too |
2020-09-21 16:45:15 +0200 | <John20> | Language Extensions certainly fit that bill. to my mind, they feel like an incubator for new language features however, they rarely seem to actually make it into the core language. Does anyone know why that is? Is my understanding roughly correct? |
2020-09-21 16:45:19 +0200 | <merijn> | And those are less...questionable then printf :p |
2020-09-21 16:45:31 +0200 | <merijn> | John20: See my above 2 comments ;) |
2020-09-21 16:45:48 +0200 | <merijn> | > showHex 152 "" |
2020-09-21 16:45:51 +0200 | <lambdabot> | "98" |
2020-09-21 16:46:00 +0200 | <merijn> | > showHex 252 "" |
2020-09-21 16:46:04 +0200 | <lambdabot> | "fc" |
2020-09-21 16:46:07 +0200 | <John20> | thanks merijn. Missed them while typing out my response! |
2020-09-21 16:46:45 +0200 | <merijn> | cpressey: So I'd probably go with '\n -> DT.pack . showHex n ""' or something |
2020-09-21 16:46:52 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 256 seconds) |
2020-09-21 16:47:01 +0200 | sleblanc | (~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 264 seconds) |
2020-09-21 16:47:16 +0200 | <merijn> | cpressey: Alternatively, you can go via text's Builder: https://hackage.haskell.org/package/text-1.2.4.0/docs/Data-Text-Lazy-Builder-Int.html#v:hexadecimal |
2020-09-21 16:47:49 +0200 | <merijn> | John20: The other factor is that, since GHC is really the only widely used compiler, there's less incentive to go through the hardwork to produce a new report |
2020-09-21 16:48:06 +0200 | <merijn> | John20: There's like 2.5 actively maintained Haskell2010 compilers |
2020-09-21 16:48:15 +0200 | <merijn> | And GHC has 99% market share |
2020-09-21 16:48:37 +0200 | <merijn> | If there was a competitor to GHC there'd be more motivation to produce a new report to standardise the various compilers |
2020-09-21 16:48:43 +0200 | Sanchayan | (~Sanchayan@106.201.114.230) |
2020-09-21 16:49:12 +0200 | <glguy> | cheater: what changed on windows recently that makes you ask? I haven't heard any vty/Windows news myself. |
2020-09-21 16:49:16 +0200 | <mmaruseacph2> | what's the timeframe? |
2020-09-21 16:49:22 +0200 | <mmaruseacph2> | bad window, sorry |
2020-09-21 16:49:30 +0200 | pingiun | (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) |
2020-09-21 16:49:33 +0200 | <tdammers> | problem with coming up with a competitor is the economics of it |
2020-09-21 16:49:55 +0200 | <tdammers> | in order to compete, the other compiler would have to be able to do most of what GHC can do, and keep up with GHC, and then deliver some additional benefits |
2020-09-21 16:50:13 +0200 | <tdammers> | but at this point, with GHC being a thing and open-source, it is cheaper and more efficient for most people to just contribute to GHC instead |
2020-09-21 16:50:19 +0200 | <merijn> | tomsmeding: I hope csaba's work and massively overambitious plan to separate out the Core backend would allow alternate Haskell implementation that compile to Core and share code gen with GHC |
2020-09-21 16:50:26 +0200 | <merijn> | eh |
2020-09-21 16:50:33 +0200 | <merijn> | s/tomsmeding/tdammers |
2020-09-21 16:50:33 +0200 | <tdammers> | maybe what we need to do is make the GHC proposals procedure more difficult and cumbersome |
2020-09-21 16:50:54 +0200 | <tdammers> | hmm, that does sound like a good plan |
2020-09-21 16:51:18 +0200 | <tdammers> | massively ambitious indeed, and also subject to problems with Core itself not being properly version-managed |
2020-09-21 16:51:21 +0200 | <dolio> | There were multiple compilers for many years without new reports, though. |
2020-09-21 16:51:24 +0200 | <cpressey> | merijn: Thanks. I think I picked printf over showHex originally to get leading 0's. I guess my deeper question is, is there actually much gain performance-wise in switching from Strings to DT.Texts, if I need to call DT.pack in lots of places? Is it still justifiable to use DT.Text over String in the name of simply "being modern"? |
2020-09-21 16:51:26 +0200 | <merijn> | tdammers: https://www.patreon.com/posts/introducing-ghc-38173710 |
2020-09-21 16:51:45 +0200 | <merijn> | cpressey: "it depends" |
2020-09-21 16:51:57 +0200 | <merijn> | cpressey: Like, what are you outputting and when and how much |
2020-09-21 16:52:09 +0200 | <cpressey> | I guess another way to say it is, do people laugh derisively when they see String in your code these day? :) |
2020-09-21 16:52:16 +0200 | <merijn> | cpressey: If you're just visualising a few 100 Word8 for users it probably doesn't matter much |
2020-09-21 16:52:17 +0200 | <dolio> | And the one new report didn't really incorporate much. |
2020-09-21 16:52:48 +0200 | <merijn> | cpressey: plenty of stuff is still String based, depends what you use it for |
2020-09-21 16:52:59 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:dceb:16d3:9c64:27d9) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 16:54:46 +0200 | <oats> | for anyone who knows java/oopystuffs, is an AbstractVisitor just a shittier Traverse? |
2020-09-21 16:54:52 +0200 | <cpressey> | merijn: Makes sense, thanks. This is definitely not very performance-sensitive, I'm more wondering about norms and "nice" ways to write it. I'll probably just leave it as is. |
2020-09-21 16:55:42 +0200 | <merijn> | cpressey: You could write a small wrapper that goes straight to Text which can be convenient when you need to combine with lots of other Text |
2020-09-21 16:56:46 +0200 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) |
2020-09-21 16:57:14 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:c87d:6f52:4c16:4130) |
2020-09-21 16:58:02 +0200 | <dolio> | oats: I think a visitor is the function you pass to e.g. traverse. |
2020-09-21 16:59:08 +0200 | <dolio> | `T -> ()` basically. |
2020-09-21 16:59:22 +0200 | <oats> | right, thanks |
2020-09-21 16:59:26 +0200 | <dolio> | Or `T -> M ()`, since the former is useless. |
2020-09-21 16:59:47 +0200 | <oats> | trying to read some java that's making me want to never venture near java ever again |
2020-09-21 16:59:53 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 17:00:01 +0200 | tronical | (~tronical@185.244.214.216) () |
2020-09-21 17:00:07 +0200 | <dolio> | There are multiple patterns that could just be functions, I think. |
2020-09-21 17:01:24 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 17:02:29 +0200 | dale | (dale@unaffiliated/dale) (Remote host closed the connection) |
2020-09-21 17:03:17 +0200 | dale | (dale@unaffiliated/dale) |
2020-09-21 17:04:12 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 17:04:30 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 17:04:57 +0200 | borne | (~fritjof@200116b864f88900f00953f5fedbeb5e.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-09-21 17:05:31 +0200 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2020-09-21 17:05:43 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 17:06:41 +0200 | pingiun | (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 17:08:46 +0200 | <siraben> | Which version of GHC will have -XLinearTypes ? |
2020-09-21 17:09:12 +0200 | josh_ | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 17:09:48 +0200 | zebrag | (~inkbottle@aaubervilliers-654-1-112-47.w86-198.abo.wanadoo.fr) (Remote host closed the connection) |
2020-09-21 17:10:10 +0200 | zebrag | (~inkbottle@aaubervilliers-654-1-112-47.w86-198.abo.wanadoo.fr) |
2020-09-21 17:10:26 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2020-09-21 17:11:03 +0200 | <phadej> | 9.0 will have an experimental support |
2020-09-21 17:12:14 +0200 | __Joker_ | (~Joker@180.151.104.210) |
2020-09-21 17:13:39 +0200 | josh_ | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 17:13:58 +0200 | <siraben> | When will that be released? This month? |
2020-09-21 17:14:23 +0200 | <phadej> | no-one knows |
2020-09-21 17:14:37 +0200 | <dolio> | When was the last one? |
2020-09-21 17:14:57 +0200 | <phadej> | I mean, there weren't any updates on its release schedule |
2020-09-21 17:15:06 +0200 | <dolio> | I guess it's been 6 months. |
2020-09-21 17:15:16 +0200 | <phadej> | (it was supposed to be released this month, but it doesn't seem likely) |
2020-09-21 17:15:17 +0200 | emmanuel_erc | (~user@2604:2000:1382:ce03:71a7:7eea:bdbf:f3a4) |
2020-09-21 17:15:43 +0200 | __Joker | (~Joker@180.151.105.65) (Ping timeout: 260 seconds) |
2020-09-21 17:16:17 +0200 | <dolio> | I guess with the major stuff, a delay isn't super surprising. |
2020-09-21 17:16:22 +0200 | <phadej> | https://gitlab.haskell.org/ghc/ghc/-/wikis/status/ghc-9.0.1 |
2020-09-21 17:17:35 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2020-09-21 17:17:45 +0200 | Seyaryuki | (~Seyaryuki@185.204.1.185) |
2020-09-21 17:18:49 +0200 | <phadej> | looks like we should have beta release in three days! |
2020-09-21 17:18:59 +0200 | <siraben> | so linear types will be good for safe mutable in-place updates? and allow us to make safe API abstractions? |
2020-09-21 17:19:23 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 17:20:18 +0200 | <siraben> | Well, the first part is what Wadler claims in his 1990 paper, Linear Types can Change the World! |
2020-09-21 17:20:40 +0200 | hhefesto | (~user@2806:103e:27:514e:97f8:577a:384e:d8df) |
2020-09-21 17:20:41 +0200 | <phadej> | maybe |
2020-09-21 17:21:13 +0200 | <phadej> | ST s allows to do safe mutable in-place updates too |
2020-09-21 17:21:23 +0200 | Sanchayan | (~Sanchayan@106.201.114.230) (Quit: leaving) |
2020-09-21 17:22:43 +0200 | <phadej> | I suggest to think about LinearHaskell as an academic experiment (of they would fit into Haskell). |
2020-09-21 17:22:56 +0200 | <phadej> | at least for a year or two. |
2020-09-21 17:23:03 +0200 | <merijn> | Or 5 :p |
2020-09-21 17:23:06 +0200 | <merijn> | Or forever :p |
2020-09-21 17:23:26 +0200 | <merijn> | siraben: We can already do safe mutable in-place updates with a pure API |
2020-09-21 17:23:32 +0200 | <merijn> | siraben: It's called ST :) |
2020-09-21 17:23:47 +0200 | <phadej> | phadej ST s allows to do safe mutable in-place updates too -- few lines above. |
2020-09-21 17:23:57 +0200 | <siraben> | merijn: yes, but without needing to use a monad |
2020-09-21 17:24:18 +0200 | <merijn> | siraben: Using linear functions is going to be *hella* more invasive on your code then ST will |
2020-09-21 17:24:37 +0200 | <merijn> | siraben: Like "rewrite/update many dependencies" intensive |
2020-09-21 17:24:37 +0200 | <siraben> | merijn: Right, because now everything has to preserve the linearity |
2020-09-21 17:24:44 +0200 | <phadej> | time will show. |
2020-09-21 17:24:55 +0200 | <siraben> | Perhaps with linear-base it won't be that bad, perhaps? |
2020-09-21 17:24:56 +0200 | <merijn> | Whereas you can stick ST pretty much anywhere without much effort |
2020-09-21 17:24:57 +0200 | bloodstalker | (~bloodstal@46.166.187.154) |
2020-09-21 17:25:08 +0200 | <phadej> | linear update "eats" the old value. |
2020-09-21 17:25:17 +0200 | <phadej> | so you will end up writing something like ssa |
2020-09-21 17:25:39 +0200 | <siraben> | merijn: why doesn't ST act like the state monad? is there a state monad that is efficient? |
2020-09-21 17:25:47 +0200 | <siraben> | As in, I want modify, get, put, etc. |
2020-09-21 17:25:50 +0200 | <phadej> | (static single assignment form) |
2020-09-21 17:25:51 +0200 | <dolio> | I think a lot of languages experimenting with linearity for mutability stuff found that it wasn't very nice to use at the level of individual values. |
2020-09-21 17:26:05 +0200 | teardown | (~user@unaffiliated/mrush) |
2020-09-21 17:26:13 +0200 | <phadej> | at which point one might need some kind of syntactic sugar as well |
2020-09-21 17:26:14 +0200 | <siraben> | Rust uses an affine type system to manage memory, to great effect. |
2020-09-21 17:26:29 +0200 | <merijn> | siraben: Not sure what you mean? |
2020-09-21 17:26:40 +0200 | <phadej> | siraben: GHC is very good at compiling state passing code |
2020-09-21 17:26:55 +0200 | <siraben> | merijn: ST is a lot like using IORef, right? |
2020-09-21 17:27:09 +0200 | <int-e> | ST is a lot like IO |
2020-09-21 17:27:11 +0200 | <merijn> | siraben: Sorta? I guess? |
2020-09-21 17:27:35 +0200 | <siraben> | phadej: oh it is? |
2020-09-21 17:27:36 +0200 | <merijn> | siraben: I mean, you can easily define a version of State that uses ST for the value and has get/put/modify work on that |
2020-09-21 17:27:42 +0200 | <siraben> | mine to learn core I guess, never dove into it |
2020-09-21 17:27:44 +0200 | <merijn> | But ST is much more general |
2020-09-21 17:27:46 +0200 | <int-e> | IIRC the "ST" is for "state thread"... a thread that can have mutable state. |
2020-09-21 17:27:57 +0200 | <dolio> | And then people were looking into 'linear regions' or something instead of individual linear values. |
2020-09-21 17:28:35 +0200 | mastarija | (~mastarija@93-142-74-181.adsl.net.t-com.hr) (Ping timeout: 260 seconds) |
2020-09-21 17:28:47 +0200 | <int-e> | There's really not much of a connection to the state monad, except as an implementation detail. |
2020-09-21 17:28:57 +0200 | <merijn> | siraben: "StateT (STRef s a) (ST s) b" with "modify :: (a -> a) -> StateT (STRef s a) (ST s) ()" is kinda the interface you're refering too |
2020-09-21 17:29:03 +0200 | <phadej> | dolio: I understood that Rust does have that. YOu can pass ownership of just a part of array of values (e.g. part to one thread, another part to another thread) |
2020-09-21 17:29:05 +0200 | <siraben> | https://old.reddit.com/r/haskell/comments/1rcc8t/performance_of_the_st_monad_over_the_state_monad/ ooh |
2020-09-21 17:29:11 +0200 | <siraben> | merijn: I see |
2020-09-21 17:29:12 +0200 | ephemera_ | (~E@122.34.1.187) |
2020-09-21 17:29:40 +0200 | <phadej> | merijn: you'd be fine with just ReaderT, details... |
2020-09-21 17:29:46 +0200 | <merijn> | siraben: The basic logic of ST is that "single threaded mutable references" are still perfectly deterministic in a purely function language |
2020-09-21 17:29:52 +0200 | <siraben> | Wadler also mentions that there should be a mechanism for getting a read-only reference to a linear value whose deference can be nonlinear |
2020-09-21 17:30:06 +0200 | <merijn> | siraben: Because the order of changes and what you change is perfectly deterministic in that setting |
2020-09-21 17:30:11 +0200 | <siraben> | Right |
2020-09-21 17:30:15 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2020-09-21 17:30:29 +0200 | <merijn> | siraben: So ST gives you arbitrary many independent mutable variables, whereas State's interface has just one |
2020-09-21 17:30:29 +0200 | <dolio> | phadej: Oh, I guess that's one possible meaning of 'region'. It wasn't the one I was thinking of, but maybe it's the right one. |
2020-09-21 17:30:47 +0200 | <merijn> | siraben: So the State API is just the trivial case of "I have one STRef" :p |
2020-09-21 17:30:52 +0200 | <siraben> | merijn: right |
2020-09-21 17:30:57 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 17:30:58 +0200 | <siraben> | Well, I haven't used STRef yet, might come in useful. |
2020-09-21 17:31:33 +0200 | <phadej> | yet, Rust is ownership and LinearHaskell are very different things |
2020-09-21 17:31:48 +0200 | <merijn> | siraben: I'd say that STRef itself has limited usefulness |
2020-09-21 17:31:52 +0200 | <phadej> | it's tricky to represent ownership with linear types |
2020-09-21 17:31:55 +0200 | <siraben> | What do people use STRef here for? Translating imperative code? |
2020-09-21 17:31:58 +0200 | <merijn> | siraben: The most useful ST application imo is Vector |
2020-09-21 17:32:05 +0200 | <phadej> | you can emulate that, but whether it's convenient: again, time will whow. |
2020-09-21 17:32:07 +0200 | <dolio> | Yeah, actually, that makes a lot more sense for how it would solve the problem. |
2020-09-21 17:32:09 +0200 | <siraben> | phadej: right, the ownership system in its glory is a lot like linear regions |
2020-09-21 17:32:31 +0200 | <merijn> | siraben: Vector has ST based mutable vectors, which are very useful for obvious reasons of "mutable arrays are useful" ;) |
2020-09-21 17:32:45 +0200 | <siraben> | Memory management aside, what about linearity as an alternative to Haskell's bracket pattern? |
2020-09-21 17:32:56 +0200 | <phadej> | siraben: they are complementary |
2020-09-21 17:32:58 +0200 | <siraben> | Also, making sure files are closed, sesion types etc |
2020-09-21 17:33:04 +0200 | <phadej> | LinearTypes and exceptions is not solved problem |
2020-09-21 17:33:11 +0200 | <siraben> | phadej: Bracket pattern is like RAII in C++ and Rust? |
2020-09-21 17:33:14 +0200 | <merijn> | siraben: I like the idea of that, but I'm not sure about the reality :p |
2020-09-21 17:33:19 +0200 | <phadej> | (in fact explicitly unsolved, IIRC) |
2020-09-21 17:33:29 +0200 | <merijn> | siraben: IndexedMonads might be a better solution for a "better bracket", tbh |
2020-09-21 17:33:38 +0200 | <siraben> | phadej: How do they interact? I know that Rust does not have exceptions but I wonder if it's do to the theoretical limitations. |
2020-09-21 17:33:46 +0200 | <merijn> | But I don't see Haskell en masse adopting indexed monads :p |
2020-09-21 17:33:46 +0200 | <siraben> | IndexedMonads is a language extension? |
2020-09-21 17:33:56 +0200 | <merijn> | siraben: that's a missing space ;) |
2020-09-21 17:34:06 +0200 | <phadej> | I think someone have to do a bit of homework at this point ;) |
2020-09-21 17:34:11 +0200 | eric___ | (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48) |
2020-09-21 17:34:41 +0200 | eric_ | (~eric@2804:431:c7d4:402a:842:24e2:eb65:718) (Ping timeout: 246 seconds) |
2020-09-21 17:34:58 +0200 | <phadej> | I don't know what mechanism Rust uses to report division by zero errors |
2020-09-21 17:34:59 +0200 | <phadej> | e.g. |
2020-09-21 17:35:05 +0200 | <siraben> | Oh, it's like the LockM monad in https://www.cs.tufts.edu/comp/150FP/archive/simon-peyton-jones/typefun.pdf |
2020-09-21 17:35:06 +0200 | <siraben> | indexed monads, that is |
2020-09-21 17:35:07 +0200 | <phadej> | so I cannot comment further |
2020-09-21 17:35:31 +0200 | <siraben> | phadej: it panics |
2020-09-21 17:35:34 +0200 | <siraben> | so, stack unwind |
2020-09-21 17:35:39 +0200 | <merijn> | siraben: indexed monads would be "(>>>=) :: IxMonad m => m i j a -> (a -> m j k b) -> m i k b" |
2020-09-21 17:35:49 +0200 | coffeeturtle | (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net) |
2020-09-21 17:35:55 +0200 | mastarija | (~mastarija@93-142-74-181.adsl.net.t-com.hr) |
2020-09-21 17:36:00 +0200 | mastarija | (~mastarija@93-142-74-181.adsl.net.t-com.hr) (Client Quit) |
2020-09-21 17:36:02 +0200 | <merijn> | siraben: And then you can use i/j/k etc. to encode "file descript is open" file descriptor is closed, etc. |
2020-09-21 17:36:07 +0200 | <phadej> | siraben: can you recover from panics? |
2020-09-21 17:36:17 +0200 | <siraben> | phadej: no |
2020-09-21 17:36:21 +0200 | <siraben> | merijn: right |
2020-09-21 17:36:29 +0200 | <siraben> | panics are like error in Haskell, I suppose |
2020-09-21 17:36:36 +0200 | <phadej> | you can catch `error` in Haskell |
2020-09-21 17:36:55 +0200 | <phadej> | or just let the thread die (but not the whole program) |
2020-09-21 17:37:13 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2020-09-21 17:37:37 +0200 | acidjnk_new2 | (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 17:37:41 +0200 | coffeeturtle | (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net) (Remote host closed the connection) |
2020-09-21 17:37:55 +0200 | <phadej> | :t error |
2020-09-21 17:37:57 +0200 | <lambdabot> | [Char] -> a |
2020-09-21 17:37:58 +0200 | <siraben> | heh, well technically you can catch panics in Rust, but it's definitely not recommended https://doc.rust-lang.org/beta/std/panic/fn.catch_unwind.html |
2020-09-21 17:38:02 +0200 | coffeeturtle | (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net) |
2020-09-21 17:38:09 +0200 | <phadej> | :t throwIO . userError |
2020-09-21 17:38:11 +0200 | <lambdabot> | String -> IO a |
2020-09-21 17:38:18 +0200 | <phadej> | :t throw . userError |
2020-09-21 17:38:20 +0200 | <lambdabot> | String -> c |
2020-09-21 17:38:27 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 260 seconds) |
2020-09-21 17:38:30 +0200 | <phadej> | error = throw . userError |
2020-09-21 17:38:37 +0200 | <phadej> | you can try to catch them in IO then |
2020-09-21 17:39:10 +0200 | <phadej> | which is e.g. useful when you write a web-server framework, so you can log how users' buggy handlers failed |
2020-09-21 17:39:31 +0200 | <siraben> | https://users.cs.northwestern.edu/~jesse/pubs/substructural-control/CtlURAL.pdf comes up when I search for linear types and exceptions |
2020-09-21 17:39:40 +0200 | <siraben> | "In short, exceptions and linear types refuse to get along, because linear types make promises that exceptions do not let them keep." |
2020-09-21 17:39:49 +0200 | <siraben> | But in an affine system apparently this is alright, just drop the variables. |
2020-09-21 17:40:20 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 17:40:28 +0200 | <phadej> | yes. |
2020-09-21 17:40:44 +0200 | <phadej> | this is why I said that LinearHaskell + exceptions is unsolved problem |
2020-09-21 17:41:25 +0200 | <phadej> | one can be optimistic and think "we need an implementation to see how things fit (or not fit) together, so we can develop LinearHaskell further" |
2020-09-21 17:41:39 +0200 | <phadej> | or you can be pessimistic and just declare upfront "it won't work" |
2020-09-21 17:41:40 +0200 | <phadej> | :) |
2020-09-21 17:41:50 +0200 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
2020-09-21 17:41:55 +0200 | pingiun | (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) |
2020-09-21 17:42:22 +0200 | <siraben> | Hehe |
2020-09-21 17:42:25 +0200 | <phadej> | IMHO anyone who says *now* that LinearHaskell will solve any problem is just selling you a hype. |
2020-09-21 17:42:38 +0200 | <phadej> | yeah, it might solve a problem, but give you dozen new ones. |
2020-09-21 17:42:40 +0200 | <siraben> | Why emphasis on now? |
2020-09-21 17:42:44 +0200 | <siraben> | Ah, right. |
2020-09-21 17:42:45 +0200 | <Taneb> | It might solve the problem of "I would like another thing to mess around with" |
2020-09-21 17:43:11 +0200 | <siraben> | I'm not expecting it to solve problems immediately, but linear types are interesting and I'd like to mess around with them, heh. |
2020-09-21 17:43:18 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 256 seconds) |
2020-09-21 17:43:18 +0200 | revprez_anzio | (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) |
2020-09-21 17:43:22 +0200 | <phadej> | Taneb: that can be fun :) |
2020-09-21 17:43:24 +0200 | <siraben> | AffineHaskell, anyone? |
2020-09-21 17:43:56 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds) |
2020-09-21 17:45:25 +0200 | vdiazroa | (578036c2@p578036c2.dip0.t-ipconnect.de) |
2020-09-21 17:45:28 +0200 | mmohammadi98129 | (~mmohammad@2.178.188.114) |
2020-09-21 17:45:38 +0200 | Chi1thangoo | (~Chi1thang@87.112.60.168) (Remote host closed the connection) |
2020-09-21 17:45:49 +0200 | mmohammadi9812 | (~mmohammad@2.178.188.114) (Ping timeout: 265 seconds) |
2020-09-21 17:45:49 +0200 | mmohammadi98129 | mmohammadi9812 |
2020-09-21 17:47:16 +0200 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-09-21 17:49:41 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:c87d:6f52:4c16:4130) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 17:49:43 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-09-21 17:50:16 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds) |
2020-09-21 17:50:56 +0200 | <phadej> | GHC-9.2 will change the syntax for linear arrows, so at least that should make it clear that LinearHaskell is very experimental feature ;) |
2020-09-21 17:51:54 +0200 | <dolio> | Presumably the emphasis is due to, right now, no one having any significant experience actually designing things with LinearHaskell, so any claims about what it will solve are just speculation. |
2020-09-21 17:52:07 +0200 | <phadej> | yes |
2020-09-21 17:52:18 +0200 | qwerty | (59b76b94@a89-183-107-148.net-htp.de) |
2020-09-21 17:52:25 +0200 | ph88_ | (~ph88@2a02:8109:9e40:2704:a1b2:872a:487a:52ae) |
2020-09-21 17:52:31 +0200 | eric___ | (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48) (Read error: Connection reset by peer) |
2020-09-21 17:52:35 +0200 | <phadej> | obviously authors claim it will solve all problems ;) |
2020-09-21 17:52:43 +0200 | qwerty | qwerty123 |
2020-09-21 17:52:57 +0200 | qwerty123 | qwerty93 |
2020-09-21 17:53:03 +0200 | <dolio> | Even the authors mostly have toy examples from research papers and blog posts. |
2020-09-21 17:53:09 +0200 | eric_ | (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48) |
2020-09-21 17:54:00 +0200 | coffeeturtle | (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net) (Quit: leaving) |
2020-09-21 17:54:09 +0200 | <phadej> | the implicit claim? is that you examples generalise |
2020-09-21 17:54:15 +0200 | <phadej> | s/you/toy/ |
2020-09-21 17:54:18 +0200 | utopic_int0x80 | (~lucid_0x8@188.253.235.98) (Quit: Leaving) |
2020-09-21 17:54:30 +0200 | <phadej> | but in this case it is not obvious |
2020-09-21 17:55:23 +0200 | plutoniix | (~q@ppp-27-55-67-24.revip3.asianet.co.th) |
2020-09-21 17:56:21 +0200 | nikosky | (ba0e194f@186.14.25.79) |
2020-09-21 17:56:29 +0200 | ph88^ | (~ph88@2a02:8109:9e40:2704:3dae:c0b9:eddf:4cf0) (Ping timeout: 272 seconds) |
2020-09-21 17:56:56 +0200 | <qwerty93> | I want to write a function `mycatch :: a -> Either String a` which returns its argument if no error was thrown and otherwise the error message. For example, `mycatch ((error "asd")::Int)` should return `Left "asd"`. How can this be done with `unsafePerformIO`? |
2020-09-21 17:57:28 +0200 | <dminuoso> | qwerty93: That is not possible in standard haskell/ |
2020-09-21 17:57:36 +0200 | cpressey | (~cpressey@79-65-248-204.host.pobb.as13285.net) (Quit: WeeChat 1.9.1) |
2020-09-21 17:57:36 +0200 | <dminuoso> | You have to do this in IO |
2020-09-21 17:57:42 +0200 | nbloomf | (~nbloomf@2600:1700:83e0:1f40:f82a:5e5e:a65a:42ad) |
2020-09-21 17:57:47 +0200 | <edwardk> | pretty happy that my bytestring patch is finally going in. i'd practically forgotten about in the last year, other than using it in some cabal.project.local's |
2020-09-21 17:58:00 +0200 | <dminuoso> | % :t Control.Exception.evaluate -- qwerty93 |
2020-09-21 17:58:00 +0200 | <yahb> | dminuoso: a -> IO a |
2020-09-21 17:58:16 +0200 | <dminuoso> | Note, you might be tempted to use unsafePerformIO with this, but there's good reasons not to. |
2020-09-21 17:58:43 +0200 | <dolio> | I think you should eliminate your desire to write such a function. :) |
2020-09-21 17:59:59 +0200 | <qwerty93> | I have seen the example `catchPure h v = unsafePerformIO $ evaluate v `catch` (pure . h)` but this can only return some sort of default value for a if an error is thrown |
2020-09-21 18:00:25 +0200 | coot | (~coot@37.30.49.42.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
2020-09-21 18:00:31 +0200 | <davean> | qwerty93: you think thats what it does at least. |
2020-09-21 18:00:36 +0200 | <davean> | qwerty93: this is a very bad idea. |
2020-09-21 18:00:51 +0200 | <edwardk> | qwerty93: the problem is it isn't monotone |
2020-09-21 18:01:19 +0200 | <davean> | And thats why it doesn't do what you think it does. |
2020-09-21 18:01:53 +0200 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) |
2020-09-21 18:02:18 +0200 | ephemera_ | (~E@122.34.1.187) (Ping timeout: 272 seconds) |
2020-09-21 18:02:22 +0200 | <edwardk> | in haskell pure code you enjoy the benefits of the fact that if you make your inputs more defined all that can happen is that at worst your output becomes more defined. in a world with catchPure that is no longer the case |
2020-09-21 18:02:39 +0200 | <edwardk> | that is a pretty high price of admission |
2020-09-21 18:02:49 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) |
2020-09-21 18:04:22 +0200 | <qwerty93> | I just want to use it for a special debugging mode, the final code would not use it anymore. So, is this not possible at all or just highly advised against? |
2020-09-21 18:05:28 +0200 | <davean> | qwerty93: It can make your debugging harder for the reason above. |
2020-09-21 18:06:31 +0200 | <davean> | as for if its possible, that depends on what "it" is, and I don't think you understand what it is and thats the problem. |
2020-09-21 18:07:41 +0200 | <qwerty93> | davean: you mean it affects the semantics in the sense that is forces evaluation which could cause problems if laziness is expected? the code I'm interested in is not affected by eager evaluation. or is there more? |
2020-09-21 18:07:53 +0200 | suppi | (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 272 seconds) |
2020-09-21 18:08:02 +0200 | <davean> | qwerty93: Theres more, see edwardk's comment. |
2020-09-21 18:08:50 +0200 | <davean> | qwerty93: Its value can change based on how you look at it now. |
2020-09-21 18:08:53 +0200 | <edwardk> | qwerty93: no monotonicity police will be dispatched to your location, just saying the nature of the issue |
2020-09-21 18:09:41 +0200 | <davean> | qwerty93: If it throws an exception, an exception is throw, how does this new function help you in your mind? |
2020-09-21 18:09:59 +0200 | vdiazroa | (578036c2@p578036c2.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-09-21 18:10:14 +0200 | shad0w__ | (~shad0w_@160.202.36.59) |
2020-09-21 18:10:47 +0200 | kritzefitz | (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
2020-09-21 18:11:05 +0200 | <davean> | Tahts the sort of function I use debugging to fix, not the sort of function I use to debug. |
2020-09-21 18:11:52 +0200 | shad0w_ | (~shad0w_@160.202.36.94) (Ping timeout: 246 seconds) |
2020-09-21 18:11:53 +0200 | shad0w__ | shad0w_ |
2020-09-21 18:12:44 +0200 | suppi | (~suppi@172.246.241.246) |
2020-09-21 18:12:57 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.9) |
2020-09-21 18:13:45 +0200 | tolt | (~Kevin@li697-66.members.linode.com) |
2020-09-21 18:14:15 +0200 | senri | (evlian@gateway/shell/xshellz/x-qfoqhwybgfovdhvb) |
2020-09-21 18:14:35 +0200 | unlink2 | (~unlink2@p5dc0ae0e.dip0.t-ipconnect.de) (Quit: Leaving) |
2020-09-21 18:14:49 +0200 | unlink2 | (~unlink2@p200300ebcf25bd0068eb9d9c94da2a17.dip0.t-ipconnect.de) |
2020-09-21 18:15:05 +0200 | tolt_ | (kevin@2600:3c03::f03c:91ff:fe79:6b76) |
2020-09-21 18:15:30 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-09-21 18:16:52 +0200 | qwerty93 | (59b76b94@a89-183-107-148.net-htp.de) (Remote host closed the connection) |
2020-09-21 18:17:12 +0200 | <cheater> | glguy: cmd.exe supports xterm escape sequences now |
2020-09-21 18:19:13 +0200 | Turmfalke | (~user@unaffiliated/siracusa) |
2020-09-21 18:20:07 +0200 | josh | (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
2020-09-21 18:20:34 +0200 | tolt | (~Kevin@li697-66.members.linode.com) (Quit: Goodbye!) |
2020-09-21 18:21:07 +0200 | tolt_ | tolt |
2020-09-21 18:23:53 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-09-21 18:24:54 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 18:25:25 +0200 | tzh | (~tzh@2601:448:c500:5300::df41) |
2020-09-21 18:29:38 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 18:30:28 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 244 seconds) |
2020-09-21 18:32:05 +0200 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2020-09-21 18:33:18 +0200 | OptimusMKD | (~risto@87.227.241.139) |
2020-09-21 18:33:39 +0200 | OptimusMKD | (~risto@87.227.241.139) (Max SendQ exceeded) |
2020-09-21 18:34:09 +0200 | OptimusMKD | (~risto@87.227.241.139) |
2020-09-21 18:34:59 +0200 | pingiun | (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-09-21 18:36:15 +0200 | OptimusMKD | (~risto@87.227.241.139) (Max SendQ exceeded) |
2020-09-21 18:36:45 +0200 | OptimusMKD | (~risto@87.227.241.139) |
2020-09-21 18:36:45 +0200 | dansho | (~dansho@ip68-108-167-185.lv.lv.cox.net) (Remote host closed the connection) |
2020-09-21 18:37:07 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) |
2020-09-21 18:37:09 +0200 | dansho | (~dansho@ip68-108-167-185.lv.lv.cox.net) |
2020-09-21 18:38:52 +0200 | OptimusMKD | (~risto@87.227.241.139) (Max SendQ exceeded) |
2020-09-21 18:39:03 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) |
2020-09-21 18:39:30 +0200 | OptimusMKD | (~risto@87.227.241.139) |
2020-09-21 18:43:22 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 18:44:44 +0200 | kenran | (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 272 seconds) |
2020-09-21 18:48:49 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 18:50:12 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 18:51:40 +0200 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-09-21 18:51:40 +0200 | kritzefitz | (~kritzefit@212.86.56.80) (Client Quit) |
2020-09-21 18:52:42 +0200 | Dolly | (585fd1fd@ti0203q160-5312.bb.online.no) |
2020-09-21 18:53:42 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 18:55:20 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-09-21 18:56:01 +0200 | alp | (~alp@2a01:e0a:58b:4920:e1db:5e81:371d:6a3c) (Ping timeout: 272 seconds) |
2020-09-21 18:56:22 +0200 | nineonine | (~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection) |
2020-09-21 18:57:44 +0200 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
2020-09-21 18:58:28 +0200 | averell | (~averell@unaffiliated/averell) (Remote host closed the connection) |
2020-09-21 19:00:14 +0200 | OptimusMKD | (~risto@87.227.241.139) (Quit: Leaving) |
2020-09-21 19:00:28 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 19:03:58 +0200 | hackage | tomland 1.3.1.0 - Bidirectional TOML serialization https://hackage.haskell.org/package/tomland-1.3.1.0 (vrom911) |
2020-09-21 19:04:32 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 260 seconds) |
2020-09-21 19:05:01 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Ping timeout: 264 seconds) |
2020-09-21 19:05:15 +0200 | roconnor | (~roconnor@host-45-78-255-115.dyn.295.ca) |
2020-09-21 19:05:33 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) |
2020-09-21 19:05:39 +0200 | nineonine | (~nineonine@216.81.48.202) |
2020-09-21 19:06:10 +0200 | nineonine | (~nineonine@216.81.48.202) (Remote host closed the connection) |
2020-09-21 19:06:23 +0200 | nineonine | (~nineonine@216.81.48.202) |
2020-09-21 19:07:23 +0200 | pgib | (~textual@lmms/pgib) |
2020-09-21 19:07:57 +0200 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) |
2020-09-21 19:12:25 +0200 | LKoen | (~LKoen@81.255.219.130) |
2020-09-21 19:13:18 +0200 | alp | (~alp@2a01:e0a:58b:4920:3d6a:1746:8ffe:5c08) |
2020-09-21 19:13:42 +0200 | pingiun | (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) |
2020-09-21 19:16:06 +0200 | Orbstheorem | (~roosember@hellendaal.orbstheorem.ch) |
2020-09-21 19:16:46 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 19:16:54 +0200 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
2020-09-21 19:17:25 +0200 | Lord_of_Life_ | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2020-09-21 19:17:28 +0200 | hackage | stm-actor 0.1.2.1 - A simplistic actor model based on STM https://hackage.haskell.org/package/stm-actor-0.1.2.1 (sgschlesinger) |
2020-09-21 19:17:28 +0200 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
2020-09-21 19:17:39 +0200 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds) |
2020-09-21 19:17:45 +0200 | machinedgod | (~machinedg@45.78.189.122) (Ping timeout: 240 seconds) |
2020-09-21 19:18:28 +0200 | kuribas | (~user@ptr-25vy0i9m1chs7zs38i7.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2020-09-21 19:18:47 +0200 | Lord_of_Life_ | Lord_of_Life |
2020-09-21 19:20:33 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 19:24:38 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2020-09-21 19:24:51 +0200 | pingiun | (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) (Quit: Textual IRC Client: www.textualapp.com) |
2020-09-21 19:26:16 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 19:26:34 +0200 | pera | (~pera@unaffiliated/pera) |
2020-09-21 19:29:57 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-09-21 19:30:24 +0200 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9) |
2020-09-21 19:34:25 +0200 | David43 | (4cd8d0d0@76-216-208-208.lightspeed.wbfdmi.sbcglobal.net) |
2020-09-21 19:34:51 +0200 | David43 | (4cd8d0d0@76-216-208-208.lightspeed.wbfdmi.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 19:35:35 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 19:36:16 +0200 | sfvm | (~sfvm@37.228.215.148) |
2020-09-21 19:36:33 +0200 | alp | (~alp@2a01:e0a:58b:4920:3d6a:1746:8ffe:5c08) (Ping timeout: 272 seconds) |
2020-09-21 19:36:59 +0200 | geekosaur | (42d52102@66.213.33.2) |
2020-09-21 19:37:33 +0200 | jespada | (~jespada@90.254.241.6) (Quit: Sleeping) |
2020-09-21 19:38:10 +0200 | koz | (~koz@2404:4408:4303:8800:4270:af80:81b7:2f9) |
2020-09-21 19:38:19 +0200 | koz_ | (~koz@121.99.240.58) (Ping timeout: 246 seconds) |
2020-09-21 19:39:03 +0200 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds) |
2020-09-21 19:39:05 +0200 | plutoniix | (~q@ppp-27-55-67-24.revip3.asianet.co.th) (Read error: Connection reset by peer) |
2020-09-21 19:39:13 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 19:42:26 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection) |
2020-09-21 19:45:46 +0200 | jespada | (~jespada@90.254.241.6) |
2020-09-21 19:46:18 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 19:47:08 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 19:47:58 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Remote host closed the connection) |
2020-09-21 19:48:12 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 19:49:36 +0200 | knupfer | (~Thunderbi@i5E86B42C.versanet.de) |
2020-09-21 19:49:58 +0200 | __Joker_ | (~Joker@180.151.104.210) (Ping timeout: 272 seconds) |
2020-09-21 19:52:57 +0200 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2020-09-21 19:53:03 +0200 | <monochrom> | https://jscoq.github.io/node_modules/jscoq/examples/scratchpad.html |
2020-09-21 19:53:22 +0200 | ryansmccoy | (~ryansmcco@156.96.151.132) (Ping timeout: 246 seconds) |
2020-09-21 19:53:50 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 19:54:10 +0200 | ryansmccoy | (~ryansmcco@156.96.151.132) |
2020-09-21 19:55:11 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 19:56:11 +0200 | plutoniix | (~q@node-unh.pool-125-24.dynamic.totinternet.net) |
2020-09-21 19:56:49 +0200 | mpereira | (~mpereira@2a02:810d:f40:d96:b903:bcf4:35d5:9a35) (Ping timeout: 272 seconds) |
2020-09-21 19:57:03 +0200 | alp | (~alp@2a01:e0a:58b:4920:a050:58b3:20bf:5c71) |
2020-09-21 19:58:21 +0200 | <NieDzejkob> | is there a better alternative to (const x <$>) <$> xs for replacing all elements of [[a]] by x? |
2020-09-21 20:00:01 +0200 | Seyaryuki | (~Seyaryuki@185.204.1.185) () |
2020-09-21 20:00:06 +0200 | John20 | (~John@82.46.59.122) (Ping timeout: 272 seconds) |
2020-09-21 20:01:15 +0200 | <phadej> | :t \xs y -> set (mapped.mapped) y xs |
2020-09-21 20:01:17 +0200 | <lambdabot> | (Functor f1, Functor f2) => f1 (f2 a) -> b -> f1 (f2 b) |
2020-09-21 20:01:17 +0200 | <monochrom> | I think prefix notation is better. fmap (fmap (const x)) xs |
2020-09-21 20:02:05 +0200 | Thra11 | (~Thra11@5.1.169.217.in-addr.arpa) |
2020-09-21 20:03:23 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 20:03:45 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection) |
2020-09-21 20:04:04 +0200 | koz | koz_ |
2020-09-21 20:04:12 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Remote host closed the connection) |
2020-09-21 20:04:36 +0200 | <NieDzejkob> | I'm just starting to discover lens today, I assume that's where mapped comes from :D |
2020-09-21 20:05:03 +0200 | <monochrom> | also "set" |
2020-09-21 20:05:13 +0200 | <NieDzejkob> | if I defined, say, foo a b = ... where bar c = a + c, how can I access bar in ghci? |
2020-09-21 20:05:29 +0200 | <monochrom> | Cannot. |
2020-09-21 20:06:43 +0200 | <NieDzejkob> | even if I provide a specific value of a and b? How can I debug these definitions, then? |
2020-09-21 20:07:04 +0200 | <dolio> | fmap (const x) = (x <$) |
2020-09-21 20:07:12 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 20:07:51 +0200 | <monochrom> | If you're OK with outputting debugging messages, look into Debug.Trace |
2020-09-21 20:08:19 +0200 | <monochrom> | My Debug.Trace tutorial: http://www.cs.utoronto.ca/~trebla/CSCC24-2020-Summer/tracing.html |
2020-09-21 20:08:37 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2020-09-21 20:09:33 +0200 | <Cale> | NieDzejkob: You can of course, edit the definition and lift it out of the definition of foo, but you'd need to add a as a parameter then. |
2020-09-21 20:10:27 +0200 | <NieDzejkob> | that's particularily inconvenient as the definition in question is recursive |
2020-09-21 20:10:55 +0200 | Jaf23o | (029895e7@2.152.149.231.dyn.user.ono.com) |
2020-09-21 20:11:03 +0200 | <Cale> | Of course, addition (and other functions), work the same everywhere, so if you know a and c, you can just add them directly in ghci. (Similarly, you could use the definition of whatever local thing you were looking at to reconstruct what it would be) |
2020-09-21 20:11:10 +0200 | sepi | (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) |
2020-09-21 20:11:16 +0200 | dansho | (~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving) |
2020-09-21 20:11:24 +0200 | <senri> | 10 |
2020-09-21 20:11:30 +0200 | <senri> | whoops |
2020-09-21 20:11:34 +0200 | <Cale> | What's the actual definition you're trying to figure out? |
2020-09-21 20:12:07 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
2020-09-21 20:13:34 +0200 | __monty__ | (~toonn@unaffiliated/toonn) |
2020-09-21 20:14:04 +0200 | <NieDzejkob> | oh hold on, I added some more type annotations and figured out what's going on :D |
2020-09-21 20:14:18 +0200 | <NieDzejkob> | anyway, this is what the code in question looks like: https://gist.github.com/NieDzejkob/ea6e75ee00951fb8a82e51beafa7d7c4 |
2020-09-21 20:15:06 +0200 | <NieDzejkob> | (I'm investigating bijections f such that g(x) = x + f(x) is also bijective) |
2020-09-21 20:16:03 +0200 | orion | (~orion@unaffiliated/orion) |
2020-09-21 20:16:26 +0200 | <orion> | Hi. Are there technical reasons why GHC does not support the Power ISA? |
2020-09-21 20:16:38 +0200 | <ski> | composition of bijections yields a bijection |
2020-09-21 20:16:47 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2020-09-21 20:17:03 +0200 | <NieDzejkob> | not sure how that helps here? |
2020-09-21 20:17:03 +0200 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds) |
2020-09-21 20:17:08 +0200 | <orion> | Sorry, I should probably direct this to #ghc. |
2020-09-21 20:17:19 +0200 | <ski> | hm, i guess it doesn't. sorry |
2020-09-21 20:17:21 +0200 | <geekosaur> | orion, generally if ghc doesn't support some arch it's because nobody has time or access to it |
2020-09-21 20:17:32 +0200 | <NieDzejkob> | ski: I mean, g isn't a composition of bijections |
2020-09-21 20:17:56 +0200 | <NieDzejkob> | but composition of bijections does indeed yield a bijection |
2020-09-21 20:18:02 +0200 | <orion> | geekosaur: How many hours of labor do you estimate would be involved in porting GHC to another architecture? |
2020-09-21 20:18:38 +0200 | jespada | (~jespada@90.254.241.6) (Quit: Sleeping) |
2020-09-21 20:18:42 +0200 | <geekosaur> | depends on what tools you can use. it'll be much faster if you can take advantage of the llvm backend instead of going unregisterised, for example |
2020-09-21 20:19:52 +0200 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2020-09-21 20:20:04 +0200 | Sigyn | (sigyn@freenode/utility-bot/sigyn) (Quit: i've seen things you people wouldn't believe. spam bots on fire off the shoulder of sigyn. i watched k-line beams glitter in the dark near the Tannhäuser Gate. all these moments will be lost in time, like tears in rain. time to /die) |
2020-09-21 20:20:43 +0200 | Sigyn | (sigyn@freenode/utility-bot/sigyn) |
2020-09-21 20:20:43 +0200 | ChanServ | +o Sigyn |
2020-09-21 20:21:56 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds) |
2020-09-21 20:22:21 +0200 | machinedgod | (~machinedg@d67-193-126-196.home3.cgocable.net) |
2020-09-21 20:22:23 +0200 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-09-21 20:22:29 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 20:23:07 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2020-09-21 20:26:20 +0200 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-09-21 20:27:06 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) |
2020-09-21 20:28:43 +0200 | shad0w_ | (~shad0w_@160.202.36.59) (Remote host closed the connection) |
2020-09-21 20:29:29 +0200 | senri | (evlian@gateway/shell/xshellz/x-qfoqhwybgfovdhvb) (Remote host closed the connection) |
2020-09-21 20:29:58 +0200 | jespada | (~jespada@90.254.241.6) |
2020-09-21 20:30:35 +0200 | juuandyy | (~juuandyy@90.166.144.65) |
2020-09-21 20:36:25 +0200 | machinedgod | (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 246 seconds) |
2020-09-21 20:36:42 +0200 | Saten-san | (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8) |
2020-09-21 20:38:59 +0200 | shafox | (~shafox@106.51.234.111) (Remote host closed the connection) |
2020-09-21 20:39:05 +0200 | ystael | (~ystael@209.6.50.55) (Ping timeout: 240 seconds) |
2020-09-21 20:39:07 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds) |
2020-09-21 20:39:23 +0200 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-09-21 20:41:47 +0200 | bahamas | (~lucian@unaffiliated/bahamas) |
2020-09-21 20:43:06 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 20:44:14 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-09-21 20:44:19 +0200 | mirrorbird | (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Ping timeout: 272 seconds) |
2020-09-21 20:44:37 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 20:46:25 +0200 | Aquazi | (uid312403@gateway/web/irccloud.com/x-bxvisodaildxgivh) (Quit: Connection closed for inactivity) |
2020-09-21 20:47:23 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Ping timeout: 240 seconds) |
2020-09-21 20:48:18 +0200 | <hyperisco> | since we have flip :: (a -> b -> c) -> (b -> a -> c) I think it makes a lot of sense to add flop :: (b -> a -> c) -> (a -> b -> c) in case you want to go back |
2020-09-21 20:49:03 +0200 | <monochrom> | haha |
2020-09-21 20:49:10 +0200 | adaminsull | (~adaminsul@84.39.117.57) |
2020-09-21 20:49:24 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2020-09-21 20:49:35 +0200 | <Rembane> | Cunning! |
2020-09-21 20:50:42 +0200 | <monochrom> | We also need one for reverse. |
2020-09-21 20:51:02 +0200 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2020-09-21 20:51:44 +0200 | <tomjaguarpaw> | rovorse |
2020-09-21 20:52:58 +0200 | hackage | libjwt-typed 0.2 - A Haskell implementation of JSON Web Token (JWT) https://hackage.haskell.org/package/libjwt-typed-0.2 (rzeznik) |
2020-09-21 20:56:49 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-09-21 20:57:41 +0200 | knupfer | (~Thunderbi@i5E86B42C.versanet.de) (Ping timeout: 260 seconds) |
2020-09-21 20:57:56 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 20:58:50 +0200 | Jaf23o | (029895e7@2.152.149.231.dyn.user.ono.com) (Ping timeout: 245 seconds) |
2020-09-21 21:00:31 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-09-21 21:06:14 +0200 | orion | (~orion@unaffiliated/orion) () |
2020-09-21 21:07:20 +0200 | michael__ | (~michael@2a02:2455:b61:1b00:4ecc:6aff:fe28:be5e) |
2020-09-21 21:08:23 +0200 | alp | (~alp@2a01:e0a:58b:4920:a050:58b3:20bf:5c71) (Ping timeout: 272 seconds) |
2020-09-21 21:08:42 +0200 | bennofs_ | (~quassel@dslb-094-222-034-064.094.222.pools.vodafone-ip.de) |
2020-09-21 21:10:01 +0200 | Rudd0 | (~Rudd0@185.189.115.103) (Ping timeout: 246 seconds) |
2020-09-21 21:10:56 +0200 | juuandyy | (~juuandyy@90.166.144.65) (Ping timeout: 256 seconds) |
2020-09-21 21:11:09 +0200 | <koz_> | I'm a bit confused how to write an Hspec 'SpecWith a' with 'beforeAll'. Where do I get the value of type 'a' from? |
2020-09-21 21:11:40 +0200 | <koz_> | I'm only familiar with the 'describe "foo" . it "bars" $ x `shouldBe` y' style of incantation. |
2020-09-21 21:11:54 +0200 | <koz_> | And the docs aren't very clear about how to use 'before' and 'beforeAll'. |
2020-09-21 21:12:56 +0200 | bennofs | (~quassel@dslb-178-000-064-245.178.000.pools.vodafone-ip.de) (Ping timeout: 272 seconds) |
2020-09-21 21:13:01 +0200 | coot | (~coot@37.30.51.178.nat.umts.dynamic.t-mobile.pl) |
2020-09-21 21:14:11 +0200 | vicfred | (~vicfred@unaffiliated/vicfred) |
2020-09-21 21:14:14 +0200 | machinedgod | (~machinedg@d67-193-126-196.home3.cgocable.net) |
2020-09-21 21:16:11 +0200 | acidjnk_new2 | (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) |
2020-09-21 21:16:59 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-09-21 21:17:15 +0200 | worc3131 | (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Ping timeout: 272 seconds) |
2020-09-21 21:20:57 +0200 | michael__ | (~michael@2a02:2455:b61:1b00:4ecc:6aff:fe28:be5e) (Quit: Leaving) |
2020-09-21 21:20:57 +0200 | hackage | sequence-formats 1.5.1.2 - A package with basic parsing utilities for several Bioinformatic data formats. https://hackage.haskell.org/package/sequence-formats-1.5.1.2 (stephan_schiffels) |
2020-09-21 21:25:00 +0200 | sepi | (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) (Remote host closed the connection) |
2020-09-21 21:25:26 +0200 | ystael | (~ystael@116.sub-174-196-195.myvzw.com) |
2020-09-21 21:28:43 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 21:30:12 +0200 | bahamas | (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds) |
2020-09-21 21:33:02 +0200 | fendor | (~fendor@77.119.128.64.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-09-21 21:33:56 +0200 | fendor | (~fendor@77.119.128.64.wireless.dyn.drei.com) |
2020-09-21 21:35:12 +0200 | chaosmasttter | (~chaosmast@p200300c4a702130181d7af909c24ca2e.dip0.t-ipconnect.de) |
2020-09-21 21:42:17 +0200 | nikosky | (ba0e194f@186.14.25.79) (Remote host closed the connection) |
2020-09-21 21:42:24 +0200 | alp | (~alp@2a01:e0a:58b:4920:24b6:1e8a:d1c8:1f2e) |
2020-09-21 21:43:28 +0200 | John20 | (~John@82.46.59.122) |
2020-09-21 21:45:16 +0200 | ystael | (~ystael@116.sub-174-196-195.myvzw.com) (Read error: Connection reset by peer) |
2020-09-21 21:48:35 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 21:49:27 +0200 | ystael | (~ystael@116.sub-174-196-195.myvzw.com) |
2020-09-21 21:49:59 +0200 | geekosaur | (42d52102@66.213.33.2) (Remote host closed the connection) |
2020-09-21 21:51:23 +0200 | carlomagno1 | (~cararell@inet-hqmc01-o.oracle.com) (Ping timeout: 240 seconds) |
2020-09-21 21:53:23 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Ping timeout: 260 seconds) |
2020-09-21 21:54:08 +0200 | wwwww | (~wwwww@unaffiliated/wwwww) (Ping timeout: 260 seconds) |
2020-09-21 21:54:44 +0200 | irc_user | (uid423822@gateway/web/irccloud.com/x-orjppconqhqlsued) (Quit: Connection closed for inactivity) |
2020-09-21 21:56:02 +0200 | wwwww | (~wwwww@unaffiliated/wwwww) |
2020-09-21 21:56:26 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 21:57:16 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2020-09-21 22:00:00 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-09-21 22:00:34 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 22:01:01 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2020-09-21 22:01:26 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) |
2020-09-21 22:01:49 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-09-21 22:03:29 +0200 | danvet_ | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
2020-09-21 22:04:14 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) |
2020-09-21 22:05:02 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-09-21 22:05:31 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 22:06:46 +0200 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 272 seconds) |
2020-09-21 22:08:24 +0200 | mariatsji | (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 246 seconds) |
2020-09-21 22:10:06 +0200 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
2020-09-21 22:10:10 +0200 | carlomagno | (~cararell@inet-hqmc02-o.oracle.com) |
2020-09-21 22:10:28 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 22:10:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-09-21 22:11:35 +0200 | juuandyy | (~juuandyy@90.166.144.65) |
2020-09-21 22:12:09 +0200 | lazerpants | (c59d003d@197.157.0.61) |
2020-09-21 22:14:27 +0200 | coot | (~coot@37.30.51.178.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-09-21 22:14:43 +0200 | hiroaki | (~hiroaki@2a02:908:4b14:d500:8d4c:a111:9cac:718b) |
2020-09-21 22:15:17 +0200 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) |
2020-09-21 22:16:54 +0200 | jespada | (~jespada@90.254.241.6) (Ping timeout: 272 seconds) |
2020-09-21 22:18:46 +0200 | jespada | (~jespada@90.254.241.6) |
2020-09-21 22:20:29 +0200 | alx741 | (~alx741@186.178.110.130) (Quit: alx741) |
2020-09-21 22:24:02 +0200 | ryansmccoy | (~ryansmcco@156.96.151.132) (Ping timeout: 256 seconds) |
2020-09-21 22:24:25 +0200 | ryansmccoy | (~ryansmcco@193.37.254.27) |
2020-09-21 22:25:33 +0200 | ggole | (~ggole@2001:8003:8119:7200:e0af:f6f1:e650:ba35) (Quit: Leaving) |
2020-09-21 22:27:15 +0200 | jonatanb | (~jonatanb@83.24.161.211.ipv4.supernova.orange.pl) (Quit: Leaving...) |
2020-09-21 22:27:16 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-09-21 22:28:01 +0200 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
2020-09-21 22:28:05 +0200 | isovector1 | (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) |
2020-09-21 22:28:56 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-09-21 22:32:38 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 22:34:06 +0200 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.8) |
2020-09-21 22:36:13 +0200 | mmohammadi9812 | (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻) |
2020-09-21 22:37:28 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-09-21 22:39:11 +0200 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 258 seconds) |
2020-09-21 22:39:12 +0200 | russruss83 | (~russruss@my.russellmcc.com) |
2020-09-21 22:41:03 +0200 | NinjaTrappeur | (~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 2.8) |
2020-09-21 22:41:27 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) |
2020-09-21 22:41:41 +0200 | Kaivo | (~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) |
2020-09-21 22:41:56 +0200 | NinjaTrappeur | (~ninja@unaffiliated/ninjatrappeur) |
2020-09-21 22:42:12 +0200 | russruss8 | (~russruss@my.russellmcc.com) (Ping timeout: 260 seconds) |
2020-09-21 22:42:13 +0200 | russruss83 | russruss8 |
2020-09-21 22:42:42 +0200 | lazerpants | (c59d003d@197.157.0.61) (Remote host closed the connection) |
2020-09-21 22:45:56 +0200 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) |
2020-09-21 22:46:02 +0200 | John20 | (~John@82.46.59.122) (Ping timeout: 272 seconds) |
2020-09-21 22:47:11 +0200 | juuandyy | (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
2020-09-21 22:48:31 +0200 | aarvar | (~foewfoiew@50.35.43.33) |
2020-09-21 22:49:47 +0200 | thir | (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-09-21 22:50:11 +0200 | Dolly | (585fd1fd@ti0203q160-5312.bb.online.no) (Remote host closed the connection) |
2020-09-21 22:50:36 +0200 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 260 seconds) |
2020-09-21 22:51:33 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
2020-09-21 22:52:28 +0200 | ryansmccoy | (~ryansmcco@193.37.254.27) (Ping timeout: 260 seconds) |
2020-09-21 22:53:20 +0200 | ryansmccoy | (~ryansmcco@156.96.151.132) |
2020-09-21 22:53:43 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 22:55:20 +0200 | averell | (~averell@unaffiliated/averell) |
2020-09-21 22:55:33 +0200 | dirediresalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
2020-09-21 22:56:12 +0200 | carlomagno | (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 260 seconds) |
2020-09-21 22:57:08 +0200 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Ping timeout: 260 seconds) |
2020-09-21 22:58:19 +0200 | carlomagno | (~cararell@inet-hqmc02-o.oracle.com) |
2020-09-21 22:58:32 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-09-21 22:58:59 +0200 | xerox__ | (~xerox@unaffiliated/xerox) |
2020-09-21 23:00:00 +0200 | glguy | (x@freenode/staff/haskell.developer.glguy) (Quit: Quit) |
2020-09-21 23:00:02 +0200 | adaminsull | (~adaminsul@84.39.117.57) () |
2020-09-21 23:00:13 +0200 | glguy | (x@freenode/staff/haskell.developer.glguy) |
2020-09-21 23:00:26 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) |
2020-09-21 23:01:26 +0200 | ystael | (~ystael@116.sub-174-196-195.myvzw.com) (Ping timeout: 265 seconds) |
2020-09-21 23:02:03 +0200 | adamwespiser | (~adam_wesp@209.6.42.110) (Remote host closed the connection) |
2020-09-21 23:02:21 +0200 | worc3131 | (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) |
2020-09-21 23:02:24 +0200 | gmt | (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2020-09-21 23:02:55 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-09-21 23:03:01 +0200 | alp | (~alp@2a01:e0a:58b:4920:24b6:1e8a:d1c8:1f2e) (Ping timeout: 272 seconds) |
2020-09-21 23:03:11 +0200 | gmind[m] | (gmindmatri@gateway/shell/matrix.org/x-xbxgoalkishimjic) |
2020-09-21 23:05:15 +0200 | fendor | (~fendor@77.119.128.64.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2020-09-21 23:05:28 +0200 | hackage | ormolu 0.1.3.0 - A formatter for Haskell source code https://hackage.haskell.org/package/ormolu-0.1.3.0 (mrkkrp) |
2020-09-21 23:06:10 +0200 | alx741 | (~alx741@186.178.110.130) |
2020-09-21 23:07:03 +0200 | Bill--Door | (550112fd@253.18.1.85.dynamic.wline.res.cust.swisscom.ch) |
2020-09-21 23:07:12 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-09-21 23:08:19 +0200 | fendor | (~fendor@77.119.128.64.wireless.dyn.drei.com) |
2020-09-21 23:09:47 +0200 | <Bill--Door> | How come the example in Control-Concurrent-STM-TChan doesn't type check? I don't quite understand how TChan works: |
2020-09-21 23:10:13 +0200 | <merijn> | Which example? |
2020-09-21 23:10:52 +0200 | <Bill--Door> | From what I've gathered in the docs, I want to use `newBroadcastTChanIO` and duplicate that for reads, but there's no `*IO` variant of `dupTChan`.. |
2020-09-21 23:10:54 +0200 | <glguy> | http://hackage.haskell.org/package/stm-2.5.0.0/docs/Control-Concurrent-STM-TChan.html#v:newBroadca… |
2020-09-21 23:11:11 +0200 | <glguy> | Use 'atomically' to turn STM into IO |
2020-09-21 23:11:14 +0200 | <Bill--Door> | Yeah, that one. |
2020-09-21 23:11:28 +0200 | <merijn> | oh, hah |
2020-09-21 23:11:31 +0200 | <glguy> | You'll rarely use the IO variants; they exist for some special cases |
2020-09-21 23:11:34 +0200 | <Bill--Door> | But then I always get `thread blocked indefinitely in an STM transaction`, tried that too |
2020-09-21 23:11:39 +0200 | <merijn> | someone fucked up and missed an "atomically" in the example |
2020-09-21 23:11:50 +0200 | <merijn> | Bill--Door: That means there's someone reading but no one can ever write |
2020-09-21 23:11:56 +0200 | <Bill--Door> | So, I am doing it right oof |
2020-09-21 23:11:57 +0200 | <merijn> | (or vice versa) |
2020-09-21 23:12:39 +0200 | <Bill--Door> | Wait, will the reader not be blocked & wait until the write happens? |
2020-09-21 23:12:54 +0200 | worc3131 | (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Remote host closed the connection) |
2020-09-21 23:13:05 +0200 | <glguy> | The example exists as a demonstration of what *not* to do |
2020-09-21 23:13:18 +0200 | <glguy> | a little less surprising that they didn't actually try to use it |
2020-09-21 23:13:39 +0200 | <merijn> | Bill--Door: "thread blocked indefinitely" means "a thread blocked trying to read from a channel, but no thread can ever write to it because there are no other references" |
2020-09-21 23:14:00 +0200 | <merijn> | i.e., "you wrote deadlocking code, but luckily we detected it" |
2020-09-21 23:14:15 +0200 | <Bill--Door> | I'm not sure this is dead-locking: pastebin.com/fYq4B8XW |
2020-09-21 23:14:30 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-09-21 23:15:21 +0200 | <Bill--Door> | Everyone has a neighbour and writes there, reads what they got and so on. Somehow it deadlocks, it should work? |
2020-09-21 23:15:31 +0200 | cosimone_ | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.) |
2020-09-21 23:15:57 +0200 | cosimone | (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
2020-09-21 23:17:12 +0200 | rprije | (~rprije@27.143.220.203.dial.dynamic.acc01-myal-dub.comindico.com.au) |
2020-09-21 23:17:22 +0200 | <merijn> | Bill--Door: Eh, you never store 'c' and thus can't ever write to it |
2020-09-21 23:17:25 +0200 | alp | (~alp@2a01:e0a:58b:4920:154c:81bf:aad9:3bc2) |
2020-09-21 23:17:39 +0200 | <glguy> | merijn: The c's are stored in chans |
2020-09-21 23:17:39 +0200 | <merijn> | oh wait, the net does |
2020-09-21 23:17:42 +0200 | <glguy> | which get put into net |
2020-09-21 23:18:08 +0200 | <glguy> | though I still don't see why broadcast chans are being used at all yet |
2020-09-21 23:18:32 +0200 | <glguy> | any chance this is related to AoC? |
2020-09-21 23:18:35 +0200 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-09-21 23:18:40 +0200 | <Bill--Door> | I do the `inbound <- atomically $ dupTChan c` and use `inbound` instead, like that example does |
2020-09-21 23:18:50 +0200 | <merijn> | Where are they read, though? |
2020-09-21 23:18:52 +0200 | <glguy> | Bill--Door: The example is showing you what not to do |
2020-09-21 23:19:26 +0200 | <Bill--Door> | But even when I change to using `c` and `newTChanIO` which apparently leads to memory-leaks, it doesn't change |
2020-09-21 23:19:32 +0200 | <glguy> | if you have one reader and one writer you don't need a broadcast chan |
2020-09-21 23:19:44 +0200 | <glguy> | I mean: |
2020-09-21 23:19:53 +0200 | <Bill--Door> | There might be multiple writers but single readers |
2020-09-21 23:19:55 +0200 | <glguy> | if you have one reader (doesn't matter how many writters) |
2020-09-21 23:20:03 +0200 | <glguy> | then you don't need a broadcast chan |
2020-09-21 23:20:19 +0200 | <merijn> | glguy: If you never have 0 readers you don't need a broadcast chan |
2020-09-21 23:20:26 +0200 | <merijn> | That's the real thing |
2020-09-21 23:20:38 +0200 | <glguy> | the code never actually forks off all the listeners |
2020-09-21 23:21:42 +0200 | <Bill--Door> | Oh, so I just use `c` from `newTChanIO`, but it still locks: pastebin.com/T2CBXMaM |
2020-09-21 23:22:08 +0200 | <glguy> | You'll need to fork a thread per participant |
2020-09-21 23:22:51 +0200 | <Bill--Door> | Oooh, crap |
2020-09-21 23:23:07 +0200 | <Bill--Door> | I've been staring at this for way too long... thanks so much! |
2020-09-21 23:23:44 +0200 | darjeeling_ | (~darjeelin@122.245.219.58) (Ping timeout: 260 seconds) |
2020-09-21 23:23:45 +0200 | carlomagno | (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 240 seconds) |
2020-09-21 23:24:55 +0200 | <glguy> | Bill--Door: Is this homework? online challenge problem? something you're just making up? |
2020-09-21 23:25:16 +0200 | carlomagno | (~cararell@inet-hqmc02-o.oracle.com) |
2020-09-21 23:26:04 +0200 | <Bill--Door> | Just making sth. up, why? |
2020-09-21 23:26:27 +0200 | <Bill--Door> | It does work (not deadlock that is) now, but I have some issues w/ logging. |
2020-09-21 23:26:37 +0200 | darjeeling_ | (~darjeelin@122.245.219.58) |
2020-09-21 23:26:48 +0200 | <glguy> | 1) why not? 2) helps to see the actual problem description 3) reminds me of something else |
2020-09-21 23:26:50 +0200 | <Bill--Door> | I'd like to implement some simulations of multi-party protocols we looked at in uni |
2020-09-21 23:28:06 +0200 | <Bill--Door> | In such a case my approach with `TChan` isn't completely flawed, or is it? |
2020-09-21 23:28:47 +0200 | falafel | (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds) |
2020-09-21 23:29:03 +0200 | isovector1 | (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) (Ping timeout: 260 seconds) |
2020-09-21 23:30:38 +0200 | <Bill--Door> | btw. what does this remind you of? |
2020-09-21 23:30:41 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-09-21 23:31:01 +0200 | <glguy> | Some problems from Advent of Code 2019 |
2020-09-21 23:31:50 +0200 | <glguy> | making bunch of TChans for different threads to communicate like this is fine. If you have only a single reader TQueue is a little more efficient than TChan, but it doesn't really matter for a toy |
2020-09-21 23:32:50 +0200 | <Bill--Door> | Didn't know about advent of code, looks pretty cool. I used to do some Project Euler, but I don't think I ever used Haskell there |
2020-09-21 23:33:17 +0200 | <glguy> | aoc is more programming focused than pe |
2020-09-21 23:34:55 +0200 | <Bill--Door> | Yeah, PE is solely maths. Plus maybe some clever algorithms but still it got too hard at some point, maybe I should go back one day |
2020-09-21 23:36:24 +0200 | __monty__ | (~toonn@unaffiliated/toonn) (Quit: leaving) |
2020-09-21 23:38:27 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-09-21 23:39:02 +0200 | ystael | (~ystael@209.6.50.55) |
2020-09-21 23:41:01 +0200 | hiroaki | (~hiroaki@2a02:908:4b14:d500:8d4c:a111:9cac:718b) (Ping timeout: 272 seconds) |
2020-09-21 23:44:44 +0200 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-09-21 23:45:37 +0200 | <glguy> | Bill--Door: For example: https://adventofcode.com/2019/day/23 |
2020-09-21 23:46:50 +0200 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 272 seconds) |
2020-09-21 23:47:05 +0200 | Ariakenom | (~Ariakenom@h-98-128-229-34.NA.cust.bahnhof.se) (Quit: Leaving) |
2020-09-21 23:52:20 +0200 | Kampala | (~Kampala@84.39.117.57) |
2020-09-21 23:55:25 +0200 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer) |
2020-09-21 23:56:02 +0200 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) |
2020-09-21 23:56:46 +0200 | polyrain | (~polyrain@2001:8003:e501:6901:c488:3d8b:4de5:8b83) |
2020-09-21 23:58:45 +0200 | Dolly | (585fd1fd@ti0203q160-5312.bb.online.no) |
2020-09-21 23:58:51 +0200 | Dolly | (585fd1fd@ti0203q160-5312.bb.online.no) (Remote host closed the connection) |
2020-09-21 23:59:11 +0200 | fendor | (~fendor@77.119.128.64.wireless.dyn.drei.com) (Remote host closed the connection) |