2023-08-27 00:00:09 +0200 | <monochrom> | If you use Proxy, you shouldn't run into ambiguous types. If you use TypeApplication without Proxy, do expect ambiguous types. |
2023-08-27 00:01:22 +0200 | <monochrom> | The underlying principle being: "(MyConstraint t) => ... t does not appear here ..." iff ambiguous type. |
2023-08-27 00:01:22 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
2023-08-27 00:01:48 +0200 | <wroathe> | Well the definition itself is complaining baout the type being ambiguous... how would type applications help that? |
2023-08-27 00:01:52 +0200 | ski | mumbles something about FDs |
2023-08-27 00:01:53 +0200 | <monochrom> | err maybe that's wrong, nevermind. |
2023-08-27 00:01:58 +0200 | <wroathe> | I am using Proxy in the definition there if you look at the gist |
2023-08-27 00:03:01 +0200 | <ski> | well, "If you use Proxy" : `foo :: forall s. KnownSymbol s => Proxy s -> String; foo = symbolVal' |
2023-08-27 00:03:01 +0200 | myxokephale | (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
2023-08-27 00:03:39 +0200 | <wroathe> | Yeah... I see. Yeah, what I'm trying to avoid is having to pass a term level proxy value to the function |
2023-08-27 00:03:56 +0200 | ulysses4ever | (~artem@73.145.241.248) |
2023-08-27 00:03:59 +0200 | <wroathe> | The syntax for my SQL generator I'm looking for is something like createCompaniesTable = sqlCreateTable @Company |
2023-08-27 00:04:10 +0200 | <wroathe> | Where Company is a data type deriving Generic |
2023-08-27 00:04:33 +0200 | <wroathe> | createCompaniesTable :: String there |
2023-08-27 00:04:34 +0200 | <ski> | i guess `Reader (Proxy s) String' is anothr option |
2023-08-27 00:04:40 +0200 | <ski> | (not suggesting that) |
2023-08-27 00:05:32 +0200 | <geekosaur[c]> | The core problem is that ghc doesn't know and can't enforce that foo will always be called with a TypeApplication. |
2023-08-27 00:05:51 +0200 | <geekosaur[c]> | So foo itself is ambiguous |
2023-08-27 00:05:53 +0200 | <wroathe> | Right, yeah, that's what I was wondering about with monochrom's point |
2023-08-27 00:05:55 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
2023-08-27 00:06:37 +0200 | <wroathe> | I think Tagged basically gets me what I want here thought |
2023-08-27 00:06:52 +0200 | <wroathe> | It seems right and proper that this generated string of SQL also be "tagged" with the data type that generated it |
2023-08-27 00:06:56 +0200 | <geekosaur[c]> | With forall a ->, you would make it explicit that the Symbol is required |
2023-08-27 00:07:06 +0200 | <wroathe> | is forall a -> a proposal on the horizon? |
2023-08-27 00:07:10 +0200 | <wroathe> | And do you have a link? |
2023-08-27 00:07:13 +0200 | myxokephale | (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit) |
2023-08-27 00:07:52 +0200 | <monochrom> | oooohhhhh dependent-style polymorphism :) |
2023-08-27 00:07:52 +0200 | <geekosaur[c]> | It's a proposal, I am on my phone and don't have a link handy |
2023-08-27 00:08:10 +0200 | <wroathe> | Ah, what's the name of it? I can google |
2023-08-27 00:08:15 +0200 | erisco | (~erisco@d24-141-66-165.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
2023-08-27 00:08:25 +0200 | ulysses4ever | (~artem@73.145.241.248) (Ping timeout: 255 seconds) |
2023-08-27 00:08:40 +0200 | <monochrom> | "agda" (j/k) |
2023-08-27 00:08:41 +0200 | <geekosaur[c]> | Last I heard there were some issues with mapping the surface syntax to Core |
2023-08-27 00:08:46 +0200 | ulysses4ever | (~artem@2607:fb91:2faf:f49:f474:e3f8:9806:671) |
2023-08-27 00:09:31 +0200 | erisco | (~erisco@d24-141-66-165.home.cgocable.net) |
2023-08-27 00:10:55 +0200 | <wroathe> | ski: I think I prefer Tagged here. Thanks for the hot tip |
2023-08-27 00:11:09 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-08-27 00:11:34 +0200 | <monochrom> | I am a bit pessimistic that "forall a ->" may be a slippery slope that defeats the intention. Because what happened next in existing dependently-typed languages is that people then added one more syntax for "turn it back into implicit at use sites". |
2023-08-27 00:12:09 +0200 | <geekosaur[c]> | https://gitlab.haskell.org/ghc/ghc/-/issues/23740 is one |
2023-08-27 00:12:25 +0200 | <wroathe> | ty ty |
2023-08-27 00:14:12 +0200 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds) |
2023-08-27 00:15:05 +0200 | <geekosaur[c]> | It's definitely on the dependent Haskell path |
2023-08-27 00:16:05 +0200 | <geekosaur[c]> | And the intent is that the use site will have foo "a" |
2023-08-27 00:16:30 +0200 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2023-08-27 00:16:31 +0200 | <geekosaur[c]> | (not @"a") |
2023-08-27 00:17:43 +0200 | <ski> | (reminds me to wonder whether `foo @a ..a.. = ..a..'s in the works) |
2023-08-27 00:19:40 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
2023-08-27 00:22:06 +0200 | myxokephale | (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
2023-08-27 00:22:14 +0200 | myxokephale | (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit) |
2023-08-27 00:24:20 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-08-27 00:25:45 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 246 seconds) |
2023-08-27 00:28:46 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2023-08-27 00:28:48 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-08-27 00:37:01 +0200 | acidjnk | (~acidjnk@p200300d6e7072f7374bc765042e24c26.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-08-27 00:52:26 +0200 | ulysses4ever | (~artem@2607:fb91:2faf:f49:f474:e3f8:9806:671) (Ping timeout: 245 seconds) |
2023-08-27 00:56:36 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-08-27 00:58:40 +0200 | falafel | (~falafel@51.6.68.216) |
2023-08-27 01:11:39 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2023-08-27 01:14:11 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-08-27 01:14:12 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-08-27 01:14:12 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-08-27 01:15:10 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-08-27 01:19:15 +0200 | ulysses4ever | (~artem@73.145.242.42) |
2023-08-27 01:29:40 +0200 | ulysses4ever | (~artem@73.145.242.42) (Ping timeout: 245 seconds) |
2023-08-27 01:32:22 +0200 | ulysses4ever | (~artem@73.145.242.42) |
2023-08-27 01:37:39 +0200 | institor | (~root@user/institor) (K-Lined) |
2023-08-27 01:44:58 +0200 | hiredman | (~hiredman@frontier1.downey.family) (Remote host closed the connection) |
2023-08-27 01:45:17 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds) |
2023-08-27 01:46:52 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2023-08-27 01:47:17 +0200 | ulysses4ever | (~artem@73.145.242.42) (Read error: Connection reset by peer) |
2023-08-27 01:48:37 +0200 | mvk | (~mvk@2607:fea8:5c9a:a600::5235) |
2023-08-27 01:55:29 +0200 | ulysses4ever | (~artem@2601:408:c408:62c:f474:e3f8:9806:671) |
2023-08-27 01:59:14 +0200 | tabemann | (~tabemann@128.92.110.163) |
2023-08-27 02:10:21 +0200 | artem | (~artem@73.103.90.145) |
2023-08-27 02:12:11 +0200 | ulysses4ever | (~artem@2601:408:c408:62c:f474:e3f8:9806:671) (Ping timeout: 246 seconds) |
2023-08-27 02:13:37 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 246 seconds) |
2023-08-27 02:19:00 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
2023-08-27 02:19:37 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) |
2023-08-27 02:19:42 +0200 | notzmv | (~zmv@user/notzmv) |
2023-08-27 02:25:48 +0200 | falafel | (~falafel@51.6.68.216) (Ping timeout: 248 seconds) |
2023-08-27 02:27:42 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
2023-08-27 02:33:57 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 244 seconds) |
2023-08-27 02:43:15 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2023-08-27 02:53:36 +0200 | mhatta | (~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in) |
2023-08-27 02:59:16 +0200 | jmcantrell | (644f1bed9a@user/jmcantrell) |
2023-08-27 03:02:36 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) |
2023-08-27 03:06:24 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds) |
2023-08-27 03:06:48 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-08-27 03:06:48 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-08-27 03:06:48 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-08-27 03:07:52 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-08-27 03:08:32 +0200 | Guest|79 | (~Guest|79@177.89.244.30) |
2023-08-27 03:08:44 +0200 | Guest|79 | (~Guest|79@177.89.244.30) (Client Quit) |
2023-08-27 03:10:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-08-27 03:17:29 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-08-27 03:22:44 +0200 | bratwurst | (~blaadsfa@70.75.221.8) |
2023-08-27 03:24:34 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 03:28:12 +0200 | bratwurst | (~blaadsfa@70.75.221.8) (Ping timeout: 248 seconds) |
2023-08-27 03:29:13 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2023-08-27 03:41:14 +0200 | razetime | (~quassel@117.254.37.141) |
2023-08-27 03:43:35 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.207) |
2023-08-27 03:46:31 +0200 | <Jeanne-Kamikaze> | If I have 'class Product a b where type Prod a b :: *; (*) :: a -> b -> Prod a b' and, for example, 'instance Product Foo Bar where type Prod Foo Bar = Baz', why isn't Prod Foo Bar inferred as Baz when I put a Foo * Bar together? |
2023-08-27 03:47:04 +0200 | <Jeanne-Kamikaze> | (My experience with fundeps was short-lived; I had more runway with the associate type.) |
2023-08-27 03:47:54 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4) |
2023-08-27 03:47:59 +0200 | <Jeanne-Kamikaze> | "Couldn't match expected type: Baz, actual type: Prod Foo Bar" |
2023-08-27 03:50:40 +0200 | <Jeanne-Kamikaze> | Oh, I think I get the problem... |
2023-08-27 03:52:26 +0200 | <mauke> | works here |
2023-08-27 03:52:47 +0200 | <mauke> | https://paste.tomsmeding.com/LdhIdAzI |
2023-08-27 03:53:11 +0200 | <Jeanne-Kamikaze> | Yeah. The problem is that I have another type class with its own associated type, and the Prod Associated X isn't known. |
2023-08-27 04:02:45 +0200 | Thomas03 | (~Thomas03@2600:1702:21b0:a500:e09e:1f4f:e07c:2dc2) |
2023-08-27 04:06:37 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) (Ping timeout: 245 seconds) |
2023-08-27 04:07:21 +0200 | <Thomas03> | Hey, is this the right place to have my beginner code reviewed? I'm mostly self taught at Haskell, and I just finished my first sorta complicated project. The code works, but I just want to know in what ways I might be coding messily or inefficiently. |
2023-08-27 04:07:50 +0200 | <geekosaur> | this is the place although it might not be the right time |
2023-08-27 04:08:15 +0200 | <Jeanne-Kamikaze> | Shoot |
2023-08-27 04:08:19 +0200 | <geekosaur> | discourse.haskell.org is also a possibility and is less dependent on other people being awake |
2023-08-27 04:10:04 +0200 | <Thomas03> | https://paste.tomsmeding.com/BILueeeA#file-1 |
2023-08-27 04:11:05 +0200 | mvk | (~mvk@2607:fea8:5c9a:a600::5235) (Ping timeout: 244 seconds) |
2023-08-27 04:12:27 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::773) |
2023-08-27 04:12:29 +0200 | <Thomas03> | the code is supposed to emulate a game of tic-tac-toe, though I did make a couple shortcuts in its design |
2023-08-27 04:14:13 +0200 | <mauke> | oof, 1-based indexing? |
2023-08-27 04:16:23 +0200 | <mauke> | I don't like how everything is a string |
2023-08-27 04:16:58 +0200 | <mauke> | number? string. a character? string. the board? strings. |
2023-08-27 04:17:21 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 04:17:45 +0200 | <Jeanne-Kamikaze> | "read" is also not safe, some input handling in main would be helpful. |
2023-08-27 04:18:28 +0200 | <mauke> | well, the quick and diry way is to combine getLine + read into readLn :-) |
2023-08-27 04:18:37 +0200 | <Jeanne-Kamikaze> | If '#' is a sentinel, Maybe Char might be more appropriate in checkGrid. |
2023-08-27 04:21:18 +0200 | <Thomas03> | what is 1-based indexing and a sentinel? |
2023-08-27 04:22:09 +0200 | <Jeanne-Kamikaze> | '#" in checkGrid seems to be used only to signal that the game isn't over. Could have been '!' or whatever too. The meaning isn't clear until you find how it's used. |
2023-08-27 04:22:56 +0200 | <Jeanne-Kamikaze> | The input row/column is 1,2,3, as opposed to 0,1,2; that's what he means. |
2023-08-27 04:23:20 +0200 | <Jeanne-Kamikaze> | But I think that's fine since 1-based is more intuitive from a user's point of view. |
2023-08-27 04:23:24 +0200 | <Thomas03> | ah, ok |
2023-08-27 04:26:20 +0200 | ddellacosta | (~ddellacos@146.70.171.100) (Ping timeout: 248 seconds) |
2023-08-27 04:26:30 +0200 | <Thomas03> | I was pretty surprised that my code was almost safe when I ran it, considering the lack of Maybe monads. Inputting garbage into the row and column choice didn't cause a crash. The only way I found to crash the code was not inputting anything. |
2023-08-27 04:26:59 +0200 | <Thomas03> | even if !! and my replace function aren't safe |
2023-08-27 04:27:10 +0200 | <mauke> | I mean the replace function, not necessarily the user interface |
2023-08-27 04:27:30 +0200 | <mauke> | (also, xs is not used in replace) |
2023-08-27 04:28:26 +0200 | ddellacosta | (~ddellacos@146.70.166.180) |
2023-08-27 04:30:28 +0200 | <Thomas03> | yeah, i'm pretty sure my replace function could be done much more elegantly, but I chose to take the easy way out rather than turn the users rowChoice into something that wasn't a string |
2023-08-27 04:31:52 +0200 | <Thomas03> | it might also make the function safe, but I'm going to redo the function in the morning with your suggestions and better handling of the changeGrid function |
2023-08-27 04:31:59 +0200 | <Thomas03> | thanks for the help |
2023-08-27 04:33:02 +0200 | <mauke> | :t \n r xs -> case splitAt n xs of (pre, post) -> pre ++ [r] ++ drop 1 post |
2023-08-27 04:33:03 +0200 | <lambdabot> | Int -> a -> [a] -> [a] |
2023-08-27 04:33:16 +0200 | mvk | (~mvk@2607:fea8:5c9a:a600::5235) |
2023-08-27 04:34:26 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
2023-08-27 04:35:31 +0200 | <mauke> | :t \n r xs -> case splitAt n xs of (pre, post) -> pre <> [r] <> drop 1 post |
2023-08-27 04:35:32 +0200 | <lambdabot> | Int -> a -> [a] -> [a] |
2023-08-27 04:37:01 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::773) (Ping timeout: 248 seconds) |
2023-08-27 04:37:06 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 04:38:28 +0200 | <Thomas03> | That seems like a much better way to do it, I will just need to create a function to convert characterChoice into a Char |
2023-08-27 04:39:14 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Client Quit) |
2023-08-27 04:42:05 +0200 | myme | (~myme@2a01:799:d60:e400:8c94:2d5b:43cf:54e) (Ping timeout: 244 seconds) |
2023-08-27 04:42:59 +0200 | myme | (~myme@2a01:799:d60:e400:931b:da7a:83d:85fa) |
2023-08-27 04:43:01 +0200 | Thomas03 | (~Thomas03@2600:1702:21b0:a500:e09e:1f4f:e07c:2dc2) (Quit: Client closed) |
2023-08-27 04:48:12 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-08-27 04:48:12 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-08-27 04:48:12 +0200 | finn_elija | FinnElija |
2023-08-27 04:53:00 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 245 seconds) |
2023-08-27 04:53:16 +0200 | td_ | (~td@i5387093E.versanet.de) (Ping timeout: 255 seconds) |
2023-08-27 04:54:24 +0200 | bilegeek | (~bilegeek@2600:1008:b049:a550:322c:1ff6:da17:76e2) |
2023-08-27 04:55:24 +0200 | td_ | (~td@83.135.9.2) |
2023-08-27 05:00:41 +0200 | YuutaW | (~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds) |
2023-08-27 05:03:56 +0200 | YuutaW | (~YuutaW@mail.yuuta.moe) |
2023-08-27 05:18:46 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 244 seconds) |
2023-08-27 05:20:44 +0200 | mvk | (~mvk@2607:fea8:5c9a:a600::5235) (Ping timeout: 248 seconds) |
2023-08-27 05:29:45 +0200 | aforemny_ | (~aforemny@i59F516C9.versanet.de) |
2023-08-27 05:30:48 +0200 | aforemny | (~aforemny@2001:9e8:6cef:2100:bda0:603:2023:867f) (Ping timeout: 246 seconds) |
2023-08-27 05:34:44 +0200 | caryhartline | (~caryhartl@168.182.58.169) (Quit: caryhartline) |
2023-08-27 05:46:17 +0200 | <EvanR> | tic tac toe is obviously -1 based indexing |
2023-08-27 05:46:45 +0200 | <wroathe> | Is there a version of undefined, but for any kind? The use case is that I've got a scoped type variable in an instance of kind Meta, and I want to construct a value (that doesn't get evaluated) that I can apply https://hackage.haskell.org/package/base-4.18.0.0/docs/GHC-Generics.html#v:selName to |
2023-08-27 05:47:04 +0200 | <wroathe> | something like: selName (undefined :: c) |
2023-08-27 05:48:31 +0200 | <wroathe> | s/value/term, I guess |
2023-08-27 05:55:38 +0200 | nyc | (~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com) (Ping timeout: 258 seconds) |
2023-08-27 05:56:12 +0200 | <wroathe> | Oh, I think TypeApplications works here |
2023-08-27 05:56:19 +0200 | <wroathe> | selName @c undefined |
2023-08-27 05:57:11 +0200 | Nosrep | (~Nosrep@user/nosrep) (Remote host closed the connection) |
2023-08-27 05:57:36 +0200 | Nosrep | (~Nosrep@user/nosrep) |
2023-08-27 05:57:51 +0200 | fweht | (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-08-27 06:00:30 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.207) (Quit: Leaving) |
2023-08-27 06:07:26 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 245 seconds) |
2023-08-27 06:11:32 +0200 | k3ut0i | (~keutoi@223.230.26.106) (Ping timeout: 240 seconds) |
2023-08-27 06:13:09 +0200 | razetime | (~quassel@117.254.37.141) (Ping timeout: 246 seconds) |
2023-08-27 06:54:10 +0200 | razetime | (~quassel@117.254.37.141) |
2023-08-27 07:08:06 +0200 | hammond | (proscan@user/hammond2) |
2023-08-27 07:08:22 +0200 | <hammond> | ppl seem to change the interface of libraries in haskell a lot. |
2023-08-27 07:08:37 +0200 | <hammond> | is that a side effect of the language? |
2023-08-27 07:12:18 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
2023-08-27 07:16:28 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 07:17:39 +0200 | <dsal> | hammond: I think it's more of a side effect of your library choice. I don't experience that all that much. |
2023-08-27 07:18:01 +0200 | <dsal> | I don't doubt it happens. Lots of software out there could use improvement. :) |
2023-08-27 07:18:35 +0200 | <hammond> | yes |
2023-08-27 07:18:42 +0200 | <hammond> | like regex. |
2023-08-27 07:20:55 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
2023-08-27 07:21:14 +0200 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-08-27 07:21:21 +0200 | <dsal> | Oh. Maybe. I've not used regex for anything in years other than some editor stuff. I did use a haskell regex library a few years ago and it had a pretty awful exception case I couldn't make safe. |
2023-08-27 07:21:55 +0200 | <davean> | ttps://hackage.haskell.org/package/regex ? A glance suggests its API hasn't changed in years? |
2023-08-27 07:24:28 +0200 | Rydwxz | (~rw@cpe-75-82-51-90.socal.res.rr.com) (Ping timeout: 255 seconds) |
2023-08-27 07:24:36 +0200 | <davean> | Like litterly there hasn't been a change in like 5 years. That one 5 years ago sounds pretty minor. |
2023-08-27 07:28:45 +0200 | ddellacosta | (~ddellacos@146.70.166.180) (Ping timeout: 246 seconds) |
2023-08-27 07:33:28 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds) |
2023-08-27 07:37:10 +0200 | <davean> | hammond: do you have more clarity about what you mean? |
2023-08-27 07:39:31 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-08-27 07:39:32 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-08-27 07:39:32 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-08-27 07:41:20 +0200 | ddellacosta | (~ddellacos@146.70.166.100) |
2023-08-27 07:43:56 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 07:46:16 +0200 | <hammond> | oh it doesn't handle groups very well. say "ABC" "ABC" "ABC" and you want to find something (A(B)C)+ or something. |
2023-08-27 07:46:48 +0200 | <hammond> | you can only get a String[][] back. |
2023-08-27 07:46:50 +0200 | <hammond> | idk |
2023-08-27 07:47:21 +0200 | <dsal> | That seems unrelated to the original statement. But I still have a much better life avoiding regex as much as possible. |
2023-08-27 07:49:13 +0200 | <hammond> | dsal, well was devean referring to the original statement. well for instance the HTTP support. the interface changed with every version i downloaded. |
2023-08-27 07:49:31 +0200 | <dsal> | Regex has http support? |
2023-08-27 07:49:48 +0200 | <hammond> | HTTP library. |
2023-08-27 07:50:29 +0200 | <dsal> | Oh, you mean regex could use improvement, not that it changes a lot. |
2023-08-27 07:50:37 +0200 | <dsal> | Which HTTP library are you referring to? |
2023-08-27 07:50:38 +0200 | <hammond> | then the namespaces were all funky too, modules shifted, game and went. |
2023-08-27 07:50:52 +0200 | <hammond> | came* |
2023-08-27 07:51:08 +0200 | <hammond> | lemmi open my code hold on. |
2023-08-27 07:51:18 +0200 | nyc | (~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com) |
2023-08-27 07:55:28 +0200 | <hammond> | https://hackage.haskell.org/package/HTTP |
2023-08-27 07:56:42 +0200 | <hammond> | then Cabal couldn't figure it out, finally luckily for me Debian had the right versions compiled and i managed to figure it out. |
2023-08-27 07:57:11 +0200 | <hammond> | I was readin this thing about procedural programming, and I figured I asked. |
2023-08-27 07:58:08 +0200 | <dsal> | Wow, that thing's up to version 4000s. I've never used that particular library. |
2023-08-27 07:58:26 +0200 | <hammond> | why would regex in a very safe language have exceptions... for instance. and be unsafe. |
2023-08-27 07:58:29 +0200 | <hammond> | ok |
2023-08-27 07:58:31 +0200 | <dolio> | It's at version 4000 because it used to be versioned based on date or something. |
2023-08-27 07:58:44 +0200 | <dsal> | It's from the future! |
2023-08-27 07:59:11 +0200 | <dsal> | hammond: I've not looked in a while, but it has something to do with working on bytestrings. |
2023-08-27 08:00:11 +0200 | <hammond> | i found one that was linked to .*? regex, when the string is too long it gets tired and throws an exception. |
2023-08-27 08:00:32 +0200 | <hammond> | fine. |
2023-08-27 08:01:00 +0200 | <dsal> | Life is better without regex in general. |
2023-08-27 08:01:18 +0200 | <hammond> | you have to parse text sometimes. |
2023-08-27 08:01:19 +0200 | <mauke> | regex is good |
2023-08-27 08:01:24 +0200 | <mauke> | haskell is just bad at regex |
2023-08-27 08:01:29 +0200 | <dsal> | When I have to parse text, I write a parser. |
2023-08-27 08:02:59 +0200 | <haskellbridge> | <sm> a regular expression is a parser |
2023-08-27 08:03:10 +0200 | ddellacosta | (~ddellacos@146.70.166.100) (Ping timeout: 255 seconds) |
2023-08-27 08:03:13 +0200 | <haskellbridge> | <sm> with all the boilerplate hidden away |
2023-08-27 08:03:24 +0200 | <mauke> | why spend two seconds writing `printf "%.20s: %3.2f\n" label r` when I could write 20 lines formatting strings manually? |
2023-08-27 08:03:36 +0200 | <mauke> | same with regex vs. combinator parsers |
2023-08-27 08:03:37 +0200 | ski | (~ski@ext-1-496.eduroam.chalmers.se) (Ping timeout: 255 seconds) |
2023-08-27 08:04:55 +0200 | ddellacosta | (~ddellacos@143.244.47.89) |
2023-08-27 08:06:10 +0200 | <dsal> | I don't think it's fair comparing inputs and outputs. Outputs are generally more controlled. I find inputs easier to control with a parser with better ergonomics and maintainability. |
2023-08-27 08:07:31 +0200 | <mauke> | same, but regex has better ergonomics (and arguably maintainability in cases where it applies) |
2023-08-27 08:07:37 +0200 | <hammond> | regex is the language of parsing text. although it can be terrible to work with. |
2023-08-27 08:08:00 +0200 | <dolio> | No, it's the language of lexing text. |
2023-08-27 08:09:40 +0200 | jmcantrell | (644f1bed9a@user/jmcantrell) (Remote host closed the connection) |
2023-08-27 08:09:47 +0200 | jmcantrell | (644f1bed9a@user/jmcantrell) |
2023-08-27 08:14:18 +0200 | acidjnk | (~acidjnk@p200300d6e7072f522470d89c17007116.dip0.t-ipconnect.de) |
2023-08-27 08:23:51 +0200 | Rydwxz | (~rw@cpe-75-82-51-90.socal.res.rr.com) |
2023-08-27 08:26:51 +0200 | xff0x | (~xff0x@2405:6580:b080:900:52e4:e06e:5b2b:5859) (Ping timeout: 246 seconds) |
2023-08-27 08:27:16 +0200 | xff0x | (~xff0x@178.255.149.135) |
2023-08-27 08:30:36 +0200 | Square | (~Square@user/square) |
2023-08-27 08:31:51 +0200 | <Square> | I want a good ansi pretty printer of haskell values. Tried pretty-simple, but it seems a bit limited. Is there some acclaimed ansi pretty printer? |
2023-08-27 08:34:39 +0200 | acidjnk | (~acidjnk@p200300d6e7072f522470d89c17007116.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2023-08-27 08:36:21 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) (Remote host closed the connection) |
2023-08-27 08:41:02 +0200 | idgaen | (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-08-27 08:43:47 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 08:51:51 +0200 | <haskellbridge> | <sm> that's the one I use. pretty-show is an alternative, with different limitations |
2023-08-27 08:56:14 +0200 | bilegeek | (~bilegeek@2600:1008:b049:a550:322c:1ff6:da17:76e2) (Quit: Leaving) |
2023-08-27 09:01:33 +0200 | MQ-17J | (~MQ-17J@104.28.216.165) |
2023-08-27 09:01:48 +0200 | MQ-17J | (~MQ-17J@104.28.216.165) (Client Quit) |
2023-08-27 09:02:20 +0200 | MQ-17J | (~MQ-17J@104.28.216.165) |
2023-08-27 09:02:26 +0200 | MQ-17J | (~MQ-17J@104.28.216.165) (Client Quit) |
2023-08-27 09:06:10 +0200 | xff0x | (~xff0x@178.255.149.135) (Ping timeout: 255 seconds) |
2023-08-27 09:06:37 +0200 | acidjnk | (~acidjnk@p200300d6e7072f524500269999e4b2db.dip0.t-ipconnect.de) |
2023-08-27 09:08:00 +0200 | xff0x | (~xff0x@2405:6580:b080:900:609e:9cca:19ee:68a9) |
2023-08-27 09:09:18 +0200 | Rydwxz | (~rw@cpe-75-82-51-90.socal.res.rr.com) (Ping timeout: 255 seconds) |
2023-08-27 09:21:52 +0200 | ymirhotfoot | (~ymirhotfo@user/ymirhotfoot) |
2023-08-27 09:22:34 +0200 | <ymirhotfoot> | How does this work? |
2023-08-27 09:23:20 +0200 | <ymirhotfoot> | I joined via the Ganja Wee Web Cgat thingie. |
2023-08-27 09:23:37 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) |
2023-08-27 09:25:06 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
2023-08-27 09:25:33 +0200 | <mauke> | how does what work? |
2023-08-27 09:25:55 +0200 | <ymirhotfoot> | Ah, please forgive |
2023-08-27 09:25:58 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Remote host closed the connection) |
2023-08-27 09:26:06 +0200 | <ymirhotfoot> | gtoss vaguyness. |
2023-08-27 09:26:32 +0200 | <ymirhotfoot> | I write a tiny ping to Edward Kmett this evening. |
2023-08-27 09:26:34 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
2023-08-27 09:26:55 +0200 | <ymirhotfoot> | I used the address contact@positron.ai . |
2023-08-27 09:27:44 +0200 | <ymirhotfoot> | But I am "un-authentrcated" to Great Google's Own Version of USENET. |
2023-08-27 09:27:48 +0200 | <haskellbridge> | <Inst> testing |
2023-08-27 09:27:53 +0200 | <Inst> | okay, nice / works |
2023-08-27 09:28:10 +0200 | <ymirhotfoot> | So the tiny ping failed to get through. |
2023-08-27 09:29:56 +0200 | <mauke> | looks like edwardk has been idle here for 15 days |
2023-08-27 09:30:30 +0200 | <ymirhotfoot> | Is it reasonable yo send a single short sentence to Edward via this sub-system of the Internet? |
2023-08-27 09:31:35 +0200 | <ymirhotfoot> | Ah, this is, oim how to say who I an, ag, well, Lokely I will tru in daylight to fet to Lovelock MV tomorrow. |
2023-08-27 09:32:32 +0200 | <ymirhotfoot> | which is where the Verizon operator told me is the official home of POSOYTON.AI the Company. |
2023-08-27 09:33:14 +0200 | <ymirhotfoot> | Thanks, Mauke! |
2023-08-27 09:34:23 +0200 | <ymirhotfoot> | ad what I sent, attemped to send: |
2023-08-27 09:34:34 +0200 | <ymirhotfoot> | The main message was |
2023-08-27 09:34:44 +0200 | <ymirhotfoot> | PING |
2023-08-27 09:35:12 +0200 | <ymirhotfoot> | and Yes Souriau was right! |
2023-08-27 09:37:46 +0200 | <ymirhotfoot> | First: Thank you all! |
2023-08-27 09:38:42 +0200 | <ymirhotfoot> | Secind: Good night, and, Heaven forwarding, see you later! |
2023-08-27 09:38:49 +0200 | ymirhotfoot | (~ymirhotfo@user/ymirhotfoot) (Remote host closed the connection) |
2023-08-27 09:39:40 +0200 | Square | (~Square@user/square) (Ping timeout: 245 seconds) |
2023-08-27 09:39:55 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 255 seconds) |
2023-08-27 09:48:30 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2023-08-27 09:49:27 +0200 | mmhat | (~mmh@p200300f1c7042714ee086bfffe095315.dip0.t-ipconnect.de) |
2023-08-27 09:51:15 +0200 | <Inst> | what is preventing toDyn from handling polymorphic functions? |
2023-08-27 09:51:21 +0200 | mmhat | (~mmh@p200300f1c7042714ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
2023-08-27 09:52:07 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) |
2023-08-27 09:54:09 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 244 seconds) |
2023-08-27 09:56:59 +0200 | <Axman6> | What a strange fellow, I hope edwardk doesn't get murdered |
2023-08-27 10:00:36 +0200 | <c_wraith> | Inst: It's based on Dynamic, and Dynamic can only represent concrete types |
2023-08-27 10:01:08 +0200 | <c_wraith> | Err.. *Typeable |
2023-08-27 10:05:57 +0200 | APic | (apic@apic.name) (Quit: Upgrade GNU Screen) |
2023-08-27 10:08:34 +0200 | APic | (apic@apic.name) |
2023-08-27 10:18:20 +0200 | sm | (~sm@plaintextaccounting/sm) (Quit: sm) |
2023-08-27 10:19:08 +0200 | dobblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-08-27 10:19:08 +0200 | dobblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-08-27 10:19:08 +0200 | dobblego | (~dibblego@haskell/developer/dibblego) |
2023-08-27 10:19:19 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection) |
2023-08-27 10:19:24 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
2023-08-27 10:19:37 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::6702) |
2023-08-27 10:19:59 +0200 | dobblego | dibblego |
2023-08-27 10:25:56 +0200 | idgaen | (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2) |
2023-08-27 10:26:03 +0200 | <Inst> | c_wraith: seems to be what I remembered, not sure how much of a limitation this is |
2023-08-27 10:38:14 +0200 | xff0x | (~xff0x@2405:6580:b080:900:609e:9cca:19ee:68a9) (Read error: Connection reset by peer) |
2023-08-27 10:43:12 +0200 | xff0x | (~xff0x@2405:6580:b080:900:a08b:1654:7816:1e12) |
2023-08-27 10:46:34 +0200 | econo_ | (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2023-08-27 10:48:25 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2023-08-27 10:50:37 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 10:52:15 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) |
2023-08-27 10:56:32 +0200 | ulysses4ever | (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
2023-08-27 10:56:33 +0200 | artem | (~artem@73.103.90.145) (Read error: Connection reset by peer) |
2023-08-27 11:03:22 +0200 | <[Leary]> | Inst: You can circumvent it with a newtype wrapper. |
2023-08-27 11:06:32 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-08-27 11:11:37 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2023-08-27 11:11:49 +0200 | <Inst> | the typing involves specific variables |
2023-08-27 11:12:36 +0200 | <Inst> | i wonder what this looks like if i just inline everything |
2023-08-27 11:12:37 +0200 | <Inst> | https://discourse.haskell.org/t/beautiful-functional-programming/7411/28?u=liamzy |
2023-08-27 11:16:32 +0200 | <Inst> | also, wait, tricking toDyn to do stuff, isn't it easier if you typeapplications than do it with a newtype? |
2023-08-27 11:17:01 +0200 | Simikando | (~Simikando@adsl-dyn1.91-127-51.t-com.sk) |
2023-08-27 11:17:11 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 11:18:12 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-08-27 11:18:14 +0200 | <Axman6> | is the hackage matrix builder still a thing? I've uploaded a release candidate but have no idea if it builds |
2023-08-27 11:20:16 +0200 | <dminuoso> | https://github.com/haskell/hackage-server/issues/997 |
2023-08-27 11:21:39 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-08-27 11:22:05 +0200 | <dminuoso> | It reads like Andreas Abel is waiting on Herbert for a handover. |
2023-08-27 11:22:29 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2023-08-27 11:23:10 +0200 | thyriaen | (~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) |
2023-08-27 11:25:20 +0200 | <Inst> | yup, this works |
2023-08-27 11:25:21 +0200 | <Inst> | ghci> toDyn $ id @Char |
2023-08-27 11:25:21 +0200 | <Inst> | <<Char -> Char>> |
2023-08-27 11:25:27 +0200 | <Inst> | but i can see how newtype can be useful |
2023-08-27 11:26:24 +0200 | <mauke> | > toDyn (id :: Char -> Char) |
2023-08-27 11:26:26 +0200 | <lambdabot> | <<Char -> Char>> |
2023-08-27 11:26:36 +0200 | <mauke> | > toDyn (id `asAppliedTo` 'x') |
2023-08-27 11:26:37 +0200 | <lambdabot> | <<Char -> Char>> |
2023-08-27 11:26:42 +0200 | <c_wraith> | Inst: use a newtype that quantifies internally |
2023-08-27 11:27:55 +0200 | <mauke> | newtype IdPoly = IdPoly (forall a. a -> a) |
2023-08-27 11:28:46 +0200 | Simikando | (~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving) |
2023-08-27 11:29:11 +0200 | razetime | (~quassel@117.254.37.141) (Remote host closed the connection) |
2023-08-27 11:29:14 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 11:30:06 +0200 | <albet70> | in do notation, f _ <- ... what's f here? |
2023-08-27 11:30:07 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:c533:a387:9f57:1069) (Remote host closed the connection) |
2023-08-27 11:30:29 +0200 | <mauke> | is that legal syntax? |
2023-08-27 11:30:36 +0200 | <c_wraith> | doesn't look like legal syntax |
2023-08-27 11:30:49 +0200 | <mauke> | > do { f _ <- undefined; f } |
2023-08-27 11:30:50 +0200 | <lambdabot> | <hint>:1:6: error: |
2023-08-27 11:30:50 +0200 | <lambdabot> | Parse error in pattern: f |
2023-08-27 11:30:50 +0200 | <lambdabot> | Possibly caused by a missing 'do'? |
2023-08-27 11:30:53 +0200 | <c_wraith> | It would be if there was a constructor in front of it, though |
2023-08-27 11:31:02 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2023-08-27 11:31:10 +0200 | <mauke> | albet70: it's a parse error |
2023-08-27 11:31:24 +0200 | <c_wraith> | albet70: F _ <- ... is a pattern match, though |
2023-08-27 11:31:37 +0200 | gmg | (~user@user/gehmehgeh) |
2023-08-27 11:33:08 +0200 | <albet70> | https://github.com/crytic/echidna/blob/master/src/Main.hs#L60C1-L60C1 |
2023-08-27 11:33:16 +0200 | <albet70> | 62 lines |
2023-08-27 11:33:16 +0200 | fendor | (~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) |
2023-08-27 11:33:28 +0200 | <c_wraith> | Yes, there's a constructor at the start of that pattern |
2023-08-27 11:33:36 +0200 | <c_wraith> | The capital letter matters |
2023-08-27 11:36:05 +0200 | <albet70> | but 61 line isn't capitalized |
2023-08-27 11:36:15 +0200 | <c_wraith> | the pattern portion is |
2023-08-27 11:36:51 +0200 | <albet70> | what's the term I should search for those sytanx? |
2023-08-27 11:36:57 +0200 | <c_wraith> | it's just pattern syntax |
2023-08-27 11:37:13 +0200 | <c_wraith> | the only interesting part is that it's using RecordWildCards to bind record fields to names |
2023-08-27 11:37:23 +0200 | <Axman6> | dminuoso: thanks - that post beomg from 2022 isn't great. Would be nice to have Haskell benelovent corporate sponsoraship overload |
2023-08-27 11:38:18 +0200 | <mauke> | albet70: in line 61 there's only one "thing" to the left of the arrow |
2023-08-27 11:39:30 +0200 | <albet70> | haha, I see |
2023-08-27 11:40:46 +0200 | <albet70> | 62 line return a value which is EconfigWithValue ... and that pattern matching for extract loadedCfg and ks |
2023-08-27 11:42:25 +0200 | <c_wraith> | well, pattern-matching in do notation has one extra caveat - if the pattern doesn't match, a call to fail is made |
2023-08-27 11:43:45 +0200 | <Inst> | hold on |
2023-08-27 11:44:32 +0200 | <probie> | > do { Just x <- [Nothing]; pure 42 } |
2023-08-27 11:44:34 +0200 | <lambdabot> | [] |
2023-08-27 11:44:37 +0200 | <albet70> | that's neat, I define a getMultiPart MultiPart x = x to extract b from A b, and this can avoid to define a function |
2023-08-27 11:44:46 +0200 | <Inst> | cool, it works |
2023-08-27 11:45:07 +0200 | <probie> | > do { mx <- [Nothing]; case mx of { Just x -> pure 42} } |
2023-08-27 11:45:09 +0200 | <lambdabot> | *Exception: <interactive>:3:23-53: Non-exhaustive patterns in case |
2023-08-27 11:45:42 +0200 | <mauke> | Inst: I didn't look at any other solutions, but this is what I came up with: https://paste.tomsmeding.com/8yeAVifc |
2023-08-27 11:45:55 +0200 | <c_wraith> | :t \m -> do Just x <- m ; pure x -- also, note the inferred constraint |
2023-08-27 11:45:55 +0200 | <lambdabot> | MonadFail m => m (Maybe b) -> m b |
2023-08-27 11:46:09 +0200 | <mauke> | @undo do Just x <- m ; pure x |
2023-08-27 11:46:09 +0200 | <lambdabot> | m >>= \ a -> case a of { Just x -> pure x; _ -> fail ""} |
2023-08-27 11:46:29 +0200 | <Inst> | i still prefer the Object hashmap approach to data |
2023-08-27 11:46:50 +0200 | <Inst> | in this particular context; i.e, you're working with foreign data from a paradigm that implies objects, isn't Object hashmap the natural way to do it? |
2023-08-27 11:46:53 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds) |
2023-08-27 11:47:09 +0200 | <mauke> | no |
2023-08-27 11:47:18 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-08-27 11:47:25 +0200 | <Inst> | Object treemap is slower |
2023-08-27 11:47:33 +0200 | <mauke> | we have a clear spec that requires the existence and type of several fields |
2023-08-27 11:47:33 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) |
2023-08-27 11:47:45 +0200 | <mauke> | we can validate and decode that at the application boundaries |
2023-08-27 11:48:09 +0200 | <Inst> | tbh i'm not sure how Haskell static vs foreign language dynamic / objects interacts |
2023-08-27 11:48:16 +0200 | <mauke> | we don't have to go full dynamic for the application core and make everything partial (or put runtime checks everywhere) |
2023-08-27 11:48:39 +0200 | <Inst> | *parse, don't validate |
2023-08-27 11:48:53 +0200 | <mauke> | "validate and decode" ~ parse |
2023-08-27 11:49:40 +0200 | <Inst> | what do you think about the dynamic typing advocate counter-argument, i.e, domain might be too flexible for this to work, and might result in annoying constant refactoring? |
2023-08-27 11:49:42 +0200 | dcoutts | (~duncan@31.94.3.174) |
2023-08-27 11:49:56 +0200 | <probie> | I actually don't think that a Haskell record type is a fair encoding of the question (assuming this is Jose Valim's problem) |
2023-08-27 11:50:07 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 11:50:10 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
2023-08-27 11:50:10 +0200 | <mauke> | probie: why not? |
2023-08-27 11:50:14 +0200 | <Inst> | it is |
2023-08-27 11:50:21 +0200 | <Inst> | (that is, it is Jose Valim's problem) |
2023-08-27 11:50:21 +0200 | <c_wraith> | Doing it with static types requires not relying on unnecessary information, which a lot of people are... bad at. |
2023-08-27 11:50:25 +0200 | <probie> | It's not a real key-value data structure. It just looks and feels like one |
2023-08-27 11:50:49 +0200 | <mauke> | the problem doesn't require a "real" key-value data structure |
2023-08-27 11:51:05 +0200 | <Inst> | that is to say, you can just drop down to a product type and call it a day? |
2023-08-27 11:51:06 +0200 | <probie> | The algorithm should receive a list of sections. A section is a key-value data structure ... |
2023-08-27 11:51:16 +0200 | <mauke> | doesn't say "real" |
2023-08-27 11:51:40 +0200 | <mauke> | Inst: I don't understand that argument |
2023-08-27 11:51:53 +0200 | <Inst> | which argument? The dynamic typing advocate argument? |
2023-08-27 11:51:55 +0200 | <mauke> | yeah |
2023-08-27 11:52:16 +0200 | <Inst> | i mean the Haskeller counterargument is that Haskell is fast and flexible enough on refactoring that it won't be a problem |
2023-08-27 11:52:29 +0200 | <Inst> | their argument is that if you lock everything into fully-specified ADTs, the specification can keep on changing |
2023-08-27 11:52:31 +0200 | <mauke> | if the set of fields changes significantly, I change my data type accordingly |
2023-08-27 11:52:34 +0200 | <c_wraith> | Inst: that's not the Haskeller counterargument |
2023-08-27 11:52:47 +0200 | <mauke> | if that breaks the code handling it, then I'll get a compiler error and can fix the code |
2023-08-27 11:52:48 +0200 | <Inst> | what is the Haskeller counterargument, then? |
2023-08-27 11:52:59 +0200 | <mauke> | in a dynamic language, the code would still be broken in that case, only you wouldn't know |
2023-08-27 11:53:14 +0200 | <c_wraith> | Inst: the Haskeller counterargument is that you shouldn't be parsing things into fields that you don't need. You just store "the rest of the data" |
2023-08-27 11:53:32 +0200 | <c_wraith> | Inst: so the only things that require a code change are the things that change the parts you're actually using |
2023-08-27 11:54:36 +0200 | <mauke> | case in point: note that my solution is fully polymorphic in the section_extra/lesson_extra fields. you could carry an arbitrary Map in there |
2023-08-27 11:54:44 +0200 | <probie> | mauke: How can it be a key-value data structure if you don't have keys? |
2023-08-27 11:55:12 +0200 | <mauke> | probie: I have field names |
2023-08-27 11:55:14 +0200 | <mauke> | close enough |
2023-08-27 11:55:21 +0200 | <Inst> | implicit key is the Section l a -> b function, no? |
2023-08-27 11:55:51 +0200 | <albet70> | what's that syntax of 61 line? |
2023-08-27 11:55:52 +0200 | <probie> | mauke: Are they? What if I remove the field names and write separate functions to access them? Is that still a key-value data structure? |
2023-08-27 11:56:12 +0200 | <mauke> | probie: no |
2023-08-27 11:56:21 +0200 | <albet70> | opts@Options{...} <- ... |
2023-08-27 11:56:34 +0200 | <mauke> | albet70: aliasing |
2023-08-27 11:56:53 +0200 | <c_wraith> | albet70: there are only two dots |
2023-08-27 11:57:06 +0200 | <c_wraith> | albet70: {..} is RecordWildCards |
2023-08-27 11:57:09 +0200 | <mauke> | `variable@pattern` matches against `pattern`, but also binds the whole value to `variable` |
2023-08-27 11:57:15 +0200 | xff0x | (~xff0x@2405:6580:b080:900:a08b:1654:7816:1e12) (Remote host closed the connection) |
2023-08-27 11:57:34 +0200 | <probie> | mauke: What if Haskell didn't have record syntax, but I had a preprocessor that re-added it. Is your identical syntax code now no-longer a key-value data structure? |
2023-08-27 11:57:34 +0200 | xff0x | (~xff0x@2405:6580:b080:900:cb8f:3cad:845d:4b41) |
2023-08-27 11:57:42 +0200 | <Inst> | mauke: interesting use of runState |
2023-08-27 11:57:47 +0200 | <Inst> | no need for mapAccumL |
2023-08-27 11:58:01 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 11:58:33 +0200 | <mauke> | probie: does it matter? |
2023-08-27 11:59:06 +0200 | <probie> | For writing code which annotates courses and lessons, not one bit |
2023-08-27 11:59:36 +0200 | <probie> | For solving a problem on "key-value data structures" I think it's important to be explicit about what a key-value data structure is |
2023-08-27 12:00:13 +0200 | <mauke> | no, that's important for posing the problem |
2023-08-27 12:01:16 +0200 | <mauke> | for solving I'm going to do whatever seems easiest |
2023-08-27 12:01:28 +0200 | <Inst> | tbh, does elixir support mutable objects? |
2023-08-27 12:01:37 +0200 | <probie> | If I'm just going JSON -> annotate -> JSON for that problem, at no point do I need anything like a "key-value" data structure, but I think they'd cry foul if I just treated it as an event stream that needs lookahead (due to the nature of JSON) |
2023-08-27 12:02:42 +0200 | <probie> | I can just go with my shitty `foldr` solution, and deal in raw bytestrings |
2023-08-27 12:02:43 +0200 | <Inst> | c_wraith: tbh, are dynamic typing advocates essentially argueing for undefined behavior? |
2023-08-27 12:02:58 +0200 | <Inst> | /s/argueing/arguing |
2023-08-27 12:03:26 +0200 | <probie> | https://paste.tomsmeding.com/ewVC4yzd for my unreadable `foldr` solution |
2023-08-27 12:03:31 +0200 | <mauke> | besides, you can just slap a parser in front of my solution and get the same interface |
2023-08-27 12:03:48 +0200 | aeroplane | (~user@user/aeroplane) |
2023-08-27 12:04:12 +0200 | <probie> | (to clarify, my solution was originally meant as a joke "all you need is foldr", so readability is lacking) |
2023-08-27 12:04:15 +0200 | <albet70> | opts@Options{..} <- ... equal to let opts = ...? |
2023-08-27 12:04:31 +0200 | notzmv | (~zmv@user/notzmv) |
2023-08-27 12:05:49 +0200 | <Inst> | technically speaking, aren't most recursive problems solvable with foldr? |
2023-08-27 12:05:49 +0200 | <Inst> | like, you can implement maps with foldr, unfolds (I think) with foldr, filters with foldr, etc |
2023-08-27 12:05:49 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::6702) (Remote host closed the connection) |
2023-08-27 12:06:06 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) |
2023-08-27 12:06:51 +0200 | <probie> | All problems are solvable with `foldr` if you have infinite lists. |
2023-08-27 12:07:09 +0200 | <mauke> | and if your "accumulator" is another function |
2023-08-27 12:08:12 +0200 | dcoutts | (~duncan@31.94.3.174) (Ping timeout: 248 seconds) |
2023-08-27 12:08:23 +0200 | <Inst> | what is an accumulator in a foldr context? |
2023-08-27 12:08:35 +0200 | <Inst> | the element on the left, i.e, the next expression to be parsed, or the default value? |
2023-08-27 12:08:55 +0200 | <tomsmeding> | albet70: 'opts@Options{..} <- ...' means 'x <- ... ; let opts@Options{...} = x' |
2023-08-27 12:09:09 +0200 | <tomsmeding> | well, it doesn't if Options isn't the only constructor of '...' |
2023-08-27 12:09:31 +0200 | <tomsmeding> | because then MonadFail would get used if the constructor didn't match |
2023-08-27 12:09:40 +0200 | <tomsmeding> | but for single-constructor datatypes, close enough |
2023-08-27 12:09:46 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-08-27 12:09:59 +0200 | kupi_ | (uid212005@id-212005.hampstead.irccloud.com) |
2023-08-27 12:10:24 +0200 | <tomsmeding> | Inst: the a in (b -> a -> a) -> a -> [b] -> a |
2023-08-27 12:12:25 +0200 | <albet70> | right |
2023-08-27 12:14:56 +0200 | kupi_ | (uid212005@id-212005.hampstead.irccloud.com) () |
2023-08-27 12:15:20 +0200 | kupi_ | (uid212005@id-212005.hampstead.irccloud.com) |
2023-08-27 12:15:20 +0200 | kupi_ | kupi |
2023-08-27 12:15:23 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Client Quit) |
2023-08-27 12:15:35 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2023-08-27 12:23:16 +0200 | <Inst> | thanks |
2023-08-27 12:23:26 +0200 | <Inst> | yeah it's hard for me to think of foldr as containing an accumulator |
2023-08-27 12:23:44 +0200 | <Inst> | because i think of how you can implement foldl' with foldr |
2023-08-27 12:23:55 +0200 | <[Leary]> | tomsmeding: That transform also breaks strictness and tyvar scoping. What's wrong with case? |
2023-08-27 12:23:58 +0200 | <Inst> | wherein the accumulator can actually not exist |
2023-08-27 12:24:11 +0200 | <Inst> | and the actual accumulator is the function after the foldr function |
2023-08-27 12:24:26 +0200 | <probie> | In that case, the "accumulator" in foldr is the continuation |
2023-08-27 12:24:41 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-08-27 12:25:50 +0200 | <[Leary]> | @undo do{ x@Foo{} <- foo; bar } |
2023-08-27 12:25:50 +0200 | <lambdabot> | foo >>= \ a -> case a of { x@Foo{} -> bar; _ -> fail ""} |
2023-08-27 12:25:55 +0200 | <[Leary]> | albet70: ^ |
2023-08-27 12:28:21 +0200 | <probie> | :t \f z xs -> foldr (\x cont !acc -> cont (acc `f` x)) id xs z -- if this is the foldl' you're thinking of |
2023-08-27 12:28:22 +0200 | <lambdabot> | Foldable t1 => (t2 -> t3 -> t2) -> t2 -> t1 t3 -> t2 |
2023-08-27 12:30:39 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:508a:b795:5c07:5ed4) |
2023-08-27 12:33:15 +0200 | <tomsmeding> | Inst: all the same you're accumulating that continuation, as it were -- building a larger and larger continuation as you go |
2023-08-27 12:34:13 +0200 | <Inst> | ehhh, i can strict it, no? |
2023-08-27 12:34:41 +0200 | <Inst> | thanks for terms, calling the foldl' simulation a fold with continuation is nice |
2023-08-27 12:34:47 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:508a:b795:5c07:5ed4) (Ping timeout: 246 seconds) |
2023-08-27 12:34:57 +0200 | <Inst> | afaik the continuation isn't actually built |
2023-08-27 12:35:30 +0200 | <Inst> | because if you strict it on the outside accumulator, the function evaluates to a continuation and new accumulator |
2023-08-27 12:35:40 +0200 | <Inst> | and goes through the continuations step by step |
2023-08-27 12:36:36 +0200 | <tomsmeding> | Inst: is that behaviour observable? |
2023-08-27 12:36:50 +0200 | <tomsmeding> | or just a result of ghc's particular choice of lazy evaluation order |
2023-08-27 12:37:15 +0200 | <tomsmeding> | if the latter, then it's still valid to semantically see foldr as building up a continuation :) |
2023-08-27 12:37:31 +0200 | <tomsmeding> | anyway, that's where the terminology comes from |
2023-08-27 12:38:26 +0200 | <Inst> | i guess i think in terms of GHC |
2023-08-27 12:38:50 +0200 | <Inst> | thanks for the advice and enlightenment everyone! |
2023-08-27 13:05:39 +0200 | mrmr1 | (~mrmr@user/mrmr) |
2023-08-27 13:12:50 +0200 | idgaen | (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-08-27 13:20:30 +0200 | xff0x | (~xff0x@2405:6580:b080:900:cb8f:3cad:845d:4b41) (Ping timeout: 245 seconds) |
2023-08-27 13:20:55 +0200 | xff0x | (~xff0x@2405:6580:b080:900:6a3:c84f:b4fa:44ab) |
2023-08-27 13:22:22 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-08-27 13:23:14 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Max SendQ exceeded) |
2023-08-27 13:23:48 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-08-27 13:26:04 +0200 | xff0x | (~xff0x@2405:6580:b080:900:6a3:c84f:b4fa:44ab) (Ping timeout: 248 seconds) |
2023-08-27 13:26:49 +0200 | k3ut0i | (~keutoi@106.201.95.140) |
2023-08-27 13:27:47 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4) |
2023-08-27 13:28:06 +0200 | xff0x | (~xff0x@2405:6580:b080:900:1db3:366c:50c0:f70b) |
2023-08-27 13:38:25 +0200 | TheCoffeMaker_ | (~TheCoffeM@190.245.100.85) (Ping timeout: 255 seconds) |
2023-08-27 13:41:38 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
2023-08-27 13:44:27 +0200 | jabuxas | (~jabuxas@user/jabuxas) |
2023-08-27 13:46:04 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds) |
2023-08-27 13:49:21 +0200 | <edwardk> | Axman6: more likely my cofounder will get murdered. I'm not the one in Nevada. |
2023-08-27 13:50:18 +0200 | <Axman6> | Well, that some consolation then! (Unless we like your cofounder equally, then it's also still probably a bad thing). How' the new gig going? |
2023-08-27 13:53:09 +0200 | <edwardk> | i mean i do rather like him. we did go start a company together. |
2023-08-27 13:53:16 +0200 | <edwardk> | going well! |
2023-08-27 13:53:39 +0200 | <edwardk> | i'll be at ICFP in a week or so hiring a little bit. |
2023-08-27 13:55:18 +0200 | <jackdk> | man I need more conferences in my life again |
2023-08-27 13:57:26 +0200 | <juri_> | i just tried to do a talk, after four years of no-talk. it's pretty embarassing. |
2023-08-27 13:58:12 +0200 | <juri_> | showed up with a laptop that had no pdf viewer, and ended up on a loaner that did not handle "slide and notes" well. showed my slide and notes side-by-side to the audience. |
2023-08-27 13:58:22 +0200 | <juri_> | very "kill me now" experience. |
2023-08-27 13:58:49 +0200 | <mauke> | how go you get a laptop without a browser? |
2023-08-27 13:59:06 +0200 | <juri_> | very carefully. :) |
2023-08-27 13:59:17 +0200 | <Inst> | did you have a GUI? |
2023-08-27 13:59:24 +0200 | xff0x | (~xff0x@2405:6580:b080:900:1db3:366c:50c0:f70b) (Ping timeout: 256 seconds) |
2023-08-27 13:59:38 +0200 | <juri_> | sort of. no GUI apps at all, other than an xterm. |
2023-08-27 14:00:11 +0200 | <Inst> | no package manager either? |
2023-08-27 14:00:12 +0200 | <juri_> | the conference had no ethernet, so i couldn't just fix it quickly. |
2023-08-27 14:00:15 +0200 | <Inst> | ah |
2023-08-27 14:00:37 +0200 | <Inst> | also, can I ask about Cabal? |
2023-08-27 14:00:46 +0200 | <Inst> | I'm told it's bad practice to cabal install foo --lib everything |
2023-08-27 14:00:56 +0200 | <Inst> | what I'm doing now is cabal install acme-dont --lib |
2023-08-27 14:01:08 +0200 | <Inst> | which overrides dont, which is apparently not in any stackage libs |
2023-08-27 14:01:15 +0200 | <juri_> | you can thank the german state for that mess. they scheduled a meeting about buying a house in the middle of the conference. |
2023-08-27 14:01:18 +0200 | xff0x | (~xff0x@2405:6580:b080:900:39d8:3c9:7c35:7d94) |
2023-08-27 14:01:33 +0200 | <Inst> | that seems surreal |
2023-08-27 14:01:41 +0200 | <juri_> | it's an experience. |
2023-08-27 14:01:45 +0200 | <Inst> | then i cabal install libs, which doesn't expose them to a public namespace |
2023-08-27 14:01:59 +0200 | <juri_> | from what i hear, the talk was still alright, but.. |
2023-08-27 14:02:28 +0200 | <juri_> | people might just be being polite. |
2023-08-27 14:05:02 +0200 | <Axman6> | edwardk: interesting; I wish I could make ICFP sometime. New job which doesn't care about FP and money being tright mean that's unlikely to change anytime soon sadly |
2023-08-27 14:07:00 +0200 | <Axman6> | edwardk: Any chance you're using Clash at positron? |
2023-08-27 14:07:20 +0200 | <edwardk> | none. clash isn't really up to the task we're pushing |
2023-08-27 14:08:08 +0200 | <edwardk> | short term project is 95% direct verilog. 4% c for high-level synthesis, 1% haskell. the 1% haskell is the key to it all. |
2023-08-27 14:08:45 +0200 | <Axman6> | Interesting, I'd be interested to hear more about that. I've been playing with it lately (new job is a FPGA based scientific test and measurement product), and have been really impressed by the depth of what they've built |
2023-08-27 14:09:37 +0200 | <edwardk> | happy to jump on a call some time. calendly.com/ekmett is easy, if nothing works for you off there (australian time and the hours i leave open are not terribly compatible) let me know and we'll find something (hell, i'm awake now |
2023-08-27 14:09:39 +0200 | anselmschueler | (~anselmsch@user/schuelermine) |
2023-08-27 14:11:21 +0200 | <Axman6> | Ha, indeed, it would be good to catch up again. I have a feeling my usual awake hours tend top end up roughly <the US>+12h, which makes overlaps nearly maximally bad |
2023-08-27 14:11:32 +0200 | <probie> | edwardk: "> awake now" It's 10pm |
2023-08-27 14:12:22 +0200 | <edwardk> | 8am here, and i didn't sleep yet. |
2023-08-27 14:12:31 +0200 | <Axman6> | D: |
2023-08-27 14:13:58 +0200 | thyriaen | (~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
2023-08-27 14:14:02 +0200 | <Axman6> | I hope that's because you've been working on something fun, and not the standard company work hours |
2023-08-27 14:14:50 +0200 | <edwardk> | very much the 'something fun' part |
2023-08-27 14:15:06 +0200 | <edwardk> | found a clever way to code up the control logic and wanted to see it work before i slept |
2023-08-27 14:20:55 +0200 | anselmschueler | (~anselmsch@user/schuelermine) (Ping timeout: 246 seconds) |
2023-08-27 14:24:19 +0200 | finsternis | (~X@23.226.237.192) (Ping timeout: 258 seconds) |
2023-08-27 14:24:43 +0200 | finsternis | (~X@23.226.237.192) |
2023-08-27 14:24:54 +0200 | xff0x | (~xff0x@2405:6580:b080:900:39d8:3c9:7c35:7d94) (Ping timeout: 256 seconds) |
2023-08-27 14:26:32 +0200 | xff0x | (~xff0x@2405:6580:b080:900:714a:8e99:dec2:574) |
2023-08-27 14:29:40 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-08-27 14:32:52 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-08-27 14:33:16 +0200 | sm | (~sm@plaintextaccounting/sm) (Quit: sm) |
2023-08-27 14:36:17 +0200 | ripspin | (~chatzilla@1.145.230.12) |
2023-08-27 14:37:22 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
2023-08-27 14:40:52 +0200 | fendor | (~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) (Remote host closed the connection) |
2023-08-27 14:41:09 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 246 seconds) |
2023-08-27 14:41:38 +0200 | xff0x | (~xff0x@2405:6580:b080:900:714a:8e99:dec2:574) (Ping timeout: 246 seconds) |
2023-08-27 14:43:45 +0200 | xff0x | (~xff0x@2405:6580:b080:900:b7a3:53a:8a49:b7b0) |
2023-08-27 14:43:47 +0200 | fweht | (uid404746@id-404746.lymington.irccloud.com) |
2023-08-27 14:44:48 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-08-27 14:49:02 +0200 | extor | (~extor@ns3018124.ip-149-202-82.eu) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in) |
2023-08-27 14:52:58 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 14:54:51 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-08-27 14:55:39 +0200 | xff0x | (~xff0x@2405:6580:b080:900:b7a3:53a:8a49:b7b0) (Remote host closed the connection) |
2023-08-27 14:55:58 +0200 | xff0x | (~xff0x@2405:6580:b080:900:35db:109b:d18d:4f60) |
2023-08-27 14:58:57 +0200 | extor | (~extor@ns3018124.ip-149-202-82.eu) |
2023-08-27 15:18:57 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 15:19:19 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection) |
2023-08-27 15:19:37 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::9ad9) |
2023-08-27 15:23:43 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
2023-08-27 15:23:55 +0200 | econo_ | (uid147250@id-147250.tinside.irccloud.com) |
2023-08-27 15:26:39 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds) |
2023-08-27 15:29:33 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
2023-08-27 15:30:35 +0200 | aeroplane | (~user@user/aeroplane) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
2023-08-27 15:33:52 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 15:35:05 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 245 seconds) |
2023-08-27 15:41:32 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4) |
2023-08-27 15:41:47 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 15:48:08 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4) |
2023-08-27 15:48:23 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 15:48:46 +0200 | jabuxas | (~jabuxas@user/jabuxas) (Ping timeout: 246 seconds) |
2023-08-27 15:50:06 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 15:50:20 +0200 | idgaen | (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2) |
2023-08-27 15:50:55 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Client Quit) |
2023-08-27 15:51:09 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 15:55:27 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 15:55:44 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 15:56:56 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 16:02:20 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::9ad9) (Ping timeout: 248 seconds) |
2023-08-27 16:04:32 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
2023-08-27 16:05:46 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 4.0.4) |
2023-08-27 16:09:22 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-08-27 16:13:54 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
2023-08-27 16:14:44 +0200 | sm | (~sm@plaintextaccounting/sm) (Remote host closed the connection) |
2023-08-27 16:15:24 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 16:15:57 +0200 | Pickchea | (~private@user/pickchea) |
2023-08-27 16:18:27 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 16:18:46 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 16:19:40 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Quit: Quit) |
2023-08-27 16:19:54 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
2023-08-27 16:22:42 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Client Quit) |
2023-08-27 16:22:56 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
2023-08-27 16:24:44 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::7f5a) |
2023-08-27 16:26:56 +0200 | sm | (~sm@plaintextaccounting/sm) (Quit: sm) |
2023-08-27 16:28:58 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 16:29:04 +0200 | kilolympus | (~kilolympu@cpc105064-sgyl40-2-0-cust46.18-2.cable.virginm.net) |
2023-08-27 16:31:20 +0200 | <albet70> | I found that pattern matching is too powerful, we may not need record syntax to extract b from A b |
2023-08-27 16:32:03 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
2023-08-27 16:32:03 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2023-08-27 16:32:27 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-08-27 16:32:42 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) |
2023-08-27 16:35:05 +0200 | shapr | (~user@2600:1700:c640:3100:ffa9:4f64:3f6e:7248) (Remote host closed the connection) |
2023-08-27 16:35:18 +0200 | shapr | (~user@2600:1700:c640:3100:5abb:a85e:1a7a:3359) |
2023-08-27 16:37:18 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2023-08-27 16:38:27 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 16:38:46 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 16:40:23 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) |
2023-08-27 16:45:43 +0200 | thyriaen | (~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) |
2023-08-27 16:45:44 +0200 | thyriaen | (~thyriaen@2a01:aea0:dd4:6c62:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
2023-08-27 16:51:42 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) |
2023-08-27 16:57:52 +0200 | leah2 | (~leah@vuxu.org) (Ping timeout: 245 seconds) |
2023-08-27 16:58:31 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
2023-08-27 17:05:10 +0200 | RSCASTILHO | (~RSCASTILH@187.40.124.54) |
2023-08-27 17:08:25 +0200 | sm | (~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds) |
2023-08-27 17:08:52 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 17:09:16 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 17:11:04 +0200 | leah2 | (~leah@vuxu.org) |
2023-08-27 17:12:23 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 17:13:36 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds) |
2023-08-27 17:13:41 +0200 | sm_ | (~sm@plaintextaccounting/sm) |
2023-08-27 17:14:43 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-08-27 17:14:43 +0200 | dibblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-08-27 17:14:43 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2023-08-27 17:17:00 +0200 | sm | (~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds) |
2023-08-27 17:19:58 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2023-08-27 17:23:28 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Remote host closed the connection) |
2023-08-27 17:23:51 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
2023-08-27 17:24:45 +0200 | Square | (~Square@user/square) |
2023-08-27 17:25:17 +0200 | <Square> | Is there some trick to add writer-like capabilities to your Free monad? |
2023-08-27 17:25:18 +0200 | gmg | (~user@user/gehmehgeh) (Ping timeout: 246 seconds) |
2023-08-27 17:25:59 +0200 | gmg | (~user@user/gehmehgeh) |
2023-08-27 17:26:41 +0200 | <Square> | ...just want to log things during its evaluation |
2023-08-27 17:27:36 +0200 | Simikando | (~Simikando@adsl-dyn1.91-127-51.t-com.sk) |
2023-08-27 17:28:17 +0200 | ripspin | (~chatzilla@1.145.230.12) (Remote host closed the connection) |
2023-08-27 17:34:10 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 256 seconds) |
2023-08-27 17:35:03 +0200 | Simikando | (~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving) |
2023-08-27 17:37:20 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@static-198-54-134-154.cust.tzulo.com) |
2023-08-27 17:37:23 +0200 | caryhartline | (~caryhartl@168.182.58.169) |
2023-08-27 17:38:27 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 17:38:44 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 17:40:50 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2023-08-27 17:42:25 +0200 | grnman_ | (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) |
2023-08-27 17:50:36 +0200 | YuutaW | (~YuutaW@mail.yuuta.moe) (Ping timeout: 248 seconds) |
2023-08-27 17:51:52 +0200 | <EvanR> | it's a free monad, you add whatever you want to the interface, then implement it |
2023-08-27 17:52:30 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-08-27 17:52:33 +0200 | YuutaW | (~YuutaW@mail.yuuta.moe) |
2023-08-27 17:52:35 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds) |
2023-08-27 17:52:42 +0200 | sm_ | (~sm@plaintextaccounting/sm) (Quit: sm_) |
2023-08-27 17:52:46 +0200 | <EvanR> | albet70, 'extracting' fields usually isn't the 'problem' with record syntax |
2023-08-27 17:53:16 +0200 | <Inst> | where do I go to report that this list is insane? |
2023-08-27 17:53:17 +0200 | <Inst> | https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/table.html |
2023-08-27 17:53:26 +0200 | <Inst> | not in the usual "Haskell has too many extensions" sense, but rather: |
2023-08-27 17:53:31 +0200 | <Inst> | ImplicitPrelude Don't implicitly import Prelude. Implied by RebindableSyntax. ??? |
2023-08-27 17:54:02 +0200 | idgaen | (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-08-27 17:56:57 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2023-08-27 17:57:13 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2023-08-27 17:57:24 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-08-27 17:57:55 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 17:58:44 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 18:00:05 +0200 | k3ut0i | (~keutoi@106.201.95.140) (Ping timeout: 245 seconds) |
2023-08-27 18:00:11 +0200 | drdo | (~drdo@bl5-28-156.dsl.telepac.pt) (Ping timeout: 250 seconds) |
2023-08-27 18:03:13 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 250 seconds) |
2023-08-27 18:04:29 +0200 | bratwurst | (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 248 seconds) |
2023-08-27 18:05:00 +0200 | <Inst> | reported on GitLab, hope that's appropriate |
2023-08-27 18:06:54 +0200 | k3ut0i | (~keutoi@122.169.217.14) |
2023-08-27 18:07:55 +0200 | notzmv | (~zmv@user/notzmv) (Remote host closed the connection) |
2023-08-27 18:07:56 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::7f5a) (Remote host closed the connection) |
2023-08-27 18:08:08 +0200 | <EvanR> | what is the problem |
2023-08-27 18:08:13 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) |
2023-08-27 18:08:27 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 18:08:44 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 18:11:07 +0200 | grnman_ | (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 255 seconds) |
2023-08-27 18:13:44 +0200 | notzmv | (~zmv@user/notzmv) |
2023-08-27 18:17:37 +0200 | fweht | (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-08-27 18:18:41 +0200 | YuutaW | (~YuutaW@mail.yuuta.moe) (Ping timeout: 260 seconds) |
2023-08-27 18:18:43 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-08-27 18:21:56 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-08-27 18:22:18 +0200 | Rydwxz | (~rw@cpe-75-82-51-90.socal.res.rr.com) |
2023-08-27 18:29:56 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::bb82) (Remote host closed the connection) |
2023-08-27 18:30:16 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::7f5a) |
2023-08-27 18:33:29 +0200 | migas | (~migas@astra4961.startdedicated.net) (Quit: Ping timeout (120 seconds)) |
2023-08-27 18:33:29 +0200 | caryhartline | (~caryhartl@168.182.58.169) (Quit: caryhartline) |
2023-08-27 18:35:17 +0200 | migas | (~migas@astra4961.startdedicated.net) |
2023-08-27 18:35:44 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 18:36:12 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c5b:3166:bd64:8e4) |
2023-08-27 18:36:36 +0200 | caryhartline | (~caryhartl@168.182.58.169) |
2023-08-27 18:37:00 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@static-198-54-134-154.cust.tzulo.com) (Quit: Leaving) |
2023-08-27 18:39:31 +0200 | YuutaW | (~YuutaW@2404:f4c0:f9c3:502::100:17b7) |
2023-08-27 18:40:35 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c5b:3166:bd64:8e4) (Ping timeout: 246 seconds) |
2023-08-27 18:44:36 +0200 | hyvoid | (~hyenavoid@222-0-178-69.static.gci.net) |
2023-08-27 18:44:40 +0200 | hyvoid | (~hyenavoid@222-0-178-69.static.gci.net) (Remote host closed the connection) |
2023-08-27 18:52:00 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2023-08-27 18:52:16 +0200 | dobblego | (~dibblego@116-255-1-151.ip4.superloop.au) |
2023-08-27 18:52:16 +0200 | dobblego | (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
2023-08-27 18:52:16 +0200 | dobblego | (~dibblego@haskell/developer/dibblego) |
2023-08-27 18:52:30 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 255 seconds) |
2023-08-27 18:53:08 +0200 | dobblego | dibblego |
2023-08-27 18:53:49 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-08-27 18:58:27 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Remote host closed the connection) |
2023-08-27 18:58:28 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) (Ping timeout: 246 seconds) |
2023-08-27 18:58:44 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) |
2023-08-27 19:02:08 +0200 | andrei_n | (~andrei.n@2a02:a03f:c0bc:8400:ab9c:7f5b:faa5:5bc) (Client Quit) |
2023-08-27 19:02:57 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) |
2023-08-27 19:04:54 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-08-27 19:06:40 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-08-27 19:06:47 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) (Quit: WeeChat 3.8) |
2023-08-27 19:11:41 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-08-27 19:15:56 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2023-08-27 19:16:30 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
2023-08-27 19:20:52 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds) |
2023-08-27 19:29:34 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-08-27 19:30:46 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
2023-08-27 19:35:25 +0200 | caryhartline | (~caryhartl@168.182.58.169) (Quit: caryhartline) |
2023-08-27 19:36:20 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 19:40:12 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-08-27 19:41:42 +0200 | sm | (~sm@plaintextaccounting/sm) (Quit: sm) |
2023-08-27 19:46:43 +0200 | <Inst> | for antiquated Haskell freeware books |
2023-08-27 19:46:47 +0200 | <Inst> | why not RWH over LYAH? |
2023-08-27 19:52:03 +0200 | <monochrom> | Did anyone said "not RWH"? |
2023-08-27 19:52:23 +0200 | <geekosaur> | I'd actually prefer RWH because it gives you things to do, exercises, etc. LYAH is 15 countries in 15 days |
2023-08-27 19:52:28 +0200 | michalz | (~michalz@185.246.207.197) |
2023-08-27 19:52:36 +0200 | <monochrom> | Actually, I tend to say that, but no one heard me anyway. |
2023-08-27 19:53:33 +0200 | <geekosaur> | so you need to do LYAH along with data61 or cis194 in order to be able to actually write Haskell |
2023-08-27 19:54:05 +0200 | <dolio> | Do you? |
2023-08-27 19:54:17 +0200 | <geekosaur> | not enough exercises in lyah |
2023-08-27 19:54:32 +0200 | <geekosaur> | you can read Haskell but not really write it |
2023-08-27 19:55:15 +0200 | <dolio> | I didn't use any dedicated Haskell course to practice writing Haskell when I was learning. |
2023-08-27 19:55:23 +0200 | <monochrom> | :) |
2023-08-27 19:55:27 +0200 | <dolio> | I just wrote my AI homework in it or something. |
2023-08-27 19:55:36 +0200 | <monochrom> | The Gentle Introduction here. LYAH didn't even exist. |
2023-08-27 19:55:41 +0200 | <geekosaur> | ^ |
2023-08-27 19:55:56 +0200 | <geekosaur> | right, but not everyone is as good at self-directed learning |
2023-08-27 19:56:09 +0200 | <monochrom> | I am sympathetic that LYAH is less terse than Gentle Intro. |
2023-08-27 19:56:39 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 19:56:41 +0200 | <geekosaur> | I did the gentle intro and then dove directly into xmonad, which was a really good fit because I knew what it had to be doing so I could concentrate on the "how" |
2023-08-27 19:56:54 +0200 | <monochrom> | OK, unpopular opinion: So you need to do LYAH along/after Learn How to Learn. :) |
2023-08-27 19:57:50 +0200 | <Inst> | monochrom: I'm a bit excited because someone who I recall said he hated Haskell suddenly changed his mind |
2023-08-27 19:57:50 +0200 | <dolio> | Maybe you need something that tells you which "optional" libraries to use these days, because they've all been split out of base. |
2023-08-27 19:58:05 +0200 | <Inst> | but people kept on mentioning LYAH |
2023-08-27 19:58:09 +0200 | <Inst> | which... didn't work for me |
2023-08-27 19:58:45 +0200 | <monochrom> | Right, people who don't use Haskell in anger keep suggesting LYAH. |
2023-08-27 19:58:57 +0200 | <monochrom> | But have you lurked in this channel lately? |
2023-08-27 19:59:18 +0200 | <geekosaur> | cis194 and the wikibook are most recommended around here, I think |
2023-08-27 19:59:19 +0200 | <monochrom> | Because here is full of people who use Haskell in anger and they say "anything except LYAH". |
2023-08-27 19:59:26 +0200 | <Inst> | no one ever mentions lyah here, i think among actual haskellers, different resources get recommended |
2023-08-27 20:01:07 +0200 | <Inst> | i directed him to effective haskell and thinking functionally with haskell |
2023-08-27 20:01:22 +0200 | ss4 | (~wootehfoo@user/wootehfoot) |
2023-08-27 20:02:38 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds) |
2023-08-27 20:03:59 +0200 | <Inst> | but I'm just surprised that RWH doesn't get mentioned nearly as much, RWH is 50% longer than LYAH, is now free online, and is a better book, imo |
2023-08-27 20:04:44 +0200 | <Inst> | if Don Stewart et al updated RWH, they'd probably have a book that's better than 90% of books on the market |
2023-08-27 20:04:52 +0200 | <geekosaur> | it's been free online since it was released. sadly, it's been obsolete for pretty much the same amount of time because the exception system was completely overhauled while it was in post-production |
2023-08-27 20:05:37 +0200 | <geekosaur> | and I don't know whatm if any, kind of NDA dons is under currently but it would very much not surprise me if he is |
2023-08-27 20:06:22 +0200 | jabuxas | (~jabuxas@user/jabuxas) |
2023-08-27 20:06:26 +0200 | <Inst> | 2nd edition got published in 2012 iirc |
2023-08-27 20:06:26 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::7f5a) (Remote host closed the connection) |
2023-08-27 20:06:33 +0200 | <monochrom> | I would think merely unbitrotting RWH would not infringe any NDA. |
2023-08-27 20:06:43 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::9d0d) |
2023-08-27 20:06:49 +0200 | <Inst> | oh, it was always first edition :( |
2023-08-27 20:07:02 +0200 | <geekosaur> | one would think so, then I remember the NDA a bank tried to rope me into |
2023-08-27 20:07:10 +0200 | <geekosaur> | back in 1998 |
2023-08-27 20:07:28 +0200 | <geekosaur> | it was narsty |
2023-08-27 20:07:37 +0200 | <monochrom> | But the irony of "someone is surprised that non-Haskell users recommend lesser Haskell resource" and "someone who is not a lawyer is surprised that an NDA blocks unbitrotting an old book". |
2023-08-27 20:08:42 +0200 | <dolio> | Even if you don't think an NDA would, there are all kinds of weird contracts corporations try to get people to sign. |
2023-08-27 20:09:32 +0200 | <Inst> | so wait, is Standard Chartered somehow blocking RWH? |
2023-08-27 20:09:35 +0200 | <dolio> | Like, don't one of the big ones have some kind of, 'we own all the programming work you do in your spare time,' clauses? |
2023-08-27 20:11:28 +0200 | <Inst> | there's this, though |
2023-08-27 20:11:29 +0200 | <Inst> | https://github.com/tssm/up-to-date-real-world-haskell |
2023-08-27 20:11:38 +0200 | <dolio> | Probably not. dons probably just doesn't feel like updating the book. |
2023-08-27 20:12:43 +0200 | <Inst> | it's also a 3 person book, the band probably doesn't want to get back together again |
2023-08-27 20:12:49 +0200 | <Inst> | dons I think is doing Rust a lot |
2023-08-27 20:12:55 +0200 | danza | (~francesco@151.37.230.40) |
2023-08-27 20:12:58 +0200 | <monochrom> | His contract allows him to post skyline sunset photos only :) |
2023-08-27 20:13:30 +0200 | <APic> | ☺ |
2023-08-27 20:14:17 +0200 | <monochrom> | One time someone on haskell-cafe asked about a book for haskell-and-databases-etc. |
2023-08-27 20:14:39 +0200 | <monochrom> | I said the cold hard truth "if someone tries to write one, it's outdated the next day already". |
2023-08-27 20:14:59 +0200 | <monochrom> | The original poster was very angry at me. :) |
2023-08-27 20:15:29 +0200 | <Inst> | well, i guess not, working on glean |
2023-08-27 20:16:09 +0200 | <monochrom> | Like it or not, it's the cold hard truth. Just look at RWH. Even LYAH is outdated. |
2023-08-27 20:16:45 +0200 | <geekosaur> | dolio, that's what the bank I was talking about earlier had |
2023-08-27 20:17:16 +0200 | <geekosaur> | since I was already into open source by then, I was very unhappy |
2023-08-27 20:17:22 +0200 | <dolio> | Yeah. |
2023-08-27 20:17:39 +0200 | <APic> | Yeah. |
2023-08-27 20:17:41 +0200 | <monochrom> | Oh wait, has anyone tried to do stenography analysis or something on dons's posted photos? >:) |
2023-08-27 20:17:43 +0200 | <geekosaur> | I managed to get it weakened to "…that is related to what we do" |
2023-08-27 20:18:15 +0200 | <monochrom> | Is it possible that dons was hiding RWH updates and new fantastic Haskell libs that can change the world in the photos? |
2023-08-27 20:18:41 +0200 | <Inst> | lol ;_; |
2023-08-27 20:19:29 +0200 | <monochrom> | "dons hid a lens library in a sunset photo 5 years before edwardk wrote the lens library we know" >:D |
2023-08-27 20:19:32 +0200 | <dolio> | Oh yeah. I suppose it makes some amount of sense to try to prevent people from duplicating what their being paid to work on. Although that seems like a very out of touch concern. |
2023-08-27 20:20:08 +0200 | <geekosaur> | I wasn't even writing financial code, I was mostly doing sysadmin stuff for them |
2023-08-27 20:21:33 +0200 | gatekempt | (~gatekempt@user/gatekempt) |
2023-08-27 20:22:50 +0200 | ss4 | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2023-08-27 20:26:43 +0200 | hubvu_ | (uid495858@id-495858.tinside.irccloud.com) |
2023-08-27 20:28:20 +0200 | gatekempt | (~gatekempt@user/gatekempt) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-08-27 20:28:44 +0200 | hubvu_ | (uid495858@id-495858.tinside.irccloud.com) () |
2023-08-27 20:29:01 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 20:29:58 +0200 | sm | (~sm@plaintextaccounting/sm) (Client Quit) |
2023-08-27 20:35:12 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-08-27 20:36:09 +0200 | <edwardk> | monochrom: sure, though dons' version limited the choice of functor to IO. |
2023-08-27 20:43:50 +0200 | jabuxas | (~jabuxas@user/jabuxas) (Quit: Leaving.) |
2023-08-27 20:44:10 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-08-27 20:44:10 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-08-27 20:44:10 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-08-27 20:48:11 +0200 | jabuxas | (~jabuxas@user/jabuxas) |
2023-08-27 20:53:34 +0200 | <monochrom> | hahaha |
2023-08-27 20:54:31 +0200 | <geekosaur> | also I think you meant steganography |
2023-08-27 20:54:43 +0200 | <geekosaur> | stenography is typists' shorthand |
2023-08-27 20:57:34 +0200 | <monochrom> | oops yeah |
2023-08-27 20:58:04 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2023-08-27 21:05:53 +0200 | Simikando | (~Simikando@adsl-dyn1.91-127-51.t-com.sk) |
2023-08-27 21:06:07 +0200 | Simikando | (~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Client Quit) |
2023-08-27 21:10:15 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2023-08-27 21:14:16 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
2023-08-27 21:15:19 +0200 | caryhartline | (~caryhartl@168.182.58.169) |
2023-08-27 21:15:51 +0200 | ddellacosta | (~ddellacos@143.244.47.89) (Ping timeout: 245 seconds) |
2023-08-27 21:16:16 +0200 | ddellacosta | (~ddellacos@143.244.47.89) |
2023-08-27 21:16:46 +0200 | fendor | (~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) |
2023-08-27 21:23:38 +0200 | extor | (~extor@ns3018124.ip-149-202-82.eu) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in) |
2023-08-27 21:25:19 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-08-27 21:25:19 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-08-27 21:25:19 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-08-27 21:45:06 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-08-27 21:57:54 +0200 | jabuxas | (~jabuxas@user/jabuxas) (Remote host closed the connection) |
2023-08-27 21:59:39 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
2023-08-27 22:01:38 +0200 | <Inst> | since chuck norris is NDA-ed |
2023-08-27 22:01:55 +0200 | <Inst> | erm, Don Stewart is NDA-ed, is he now the Haskell community Chuck Norris? |
2023-08-27 22:04:26 +0200 | nate2 | (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2023-08-27 22:06:56 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::9d0d) (Remote host closed the connection) |
2023-08-27 22:07:13 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::7f5a) |
2023-08-27 22:07:28 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
2023-08-27 22:10:38 +0200 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-08-27 22:11:32 +0200 | V | (~v@ircpuzzles/2022/april/winner/V) (Ping timeout: 240 seconds) |
2023-08-27 22:25:26 +0200 | xmachina | (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds) |
2023-08-27 22:26:34 +0200 | V | (~v@ircpuzzles/2022/april/winner/V) |
2023-08-27 22:29:59 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-08-27 22:30:34 +0200 | Pickchea | (~private@user/pickchea) |
2023-08-27 22:30:34 +0200 | todi | (~todi@p4fd1a580.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in) |
2023-08-27 22:32:00 +0200 | idgaen | (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2) |
2023-08-27 22:32:26 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 22:33:27 +0200 | sm | (~sm@plaintextaccounting/sm) (Client Quit) |
2023-08-27 22:33:53 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-08-27 22:36:26 +0200 | shapr | (~user@2600:1700:c640:3100:5abb:a85e:1a7a:3359) (Remote host closed the connection) |
2023-08-27 22:45:15 +0200 | RSCASTILHO | (~RSCASTILH@187.40.124.54) () |
2023-08-27 22:45:46 +0200 | fendor | (~fendor@2a02:8388:1640:be00:29b8:807b:7fa6:1bcf) (Remote host closed the connection) |
2023-08-27 22:51:08 +0200 | son0p | (~ff@152.203.98.110) |
2023-08-27 22:53:07 +0200 | AlexNoo_ | (~AlexNoo@178.34.150.48) |
2023-08-27 22:53:51 +0200 | myxokephale | (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
2023-08-27 22:53:51 +0200 | Luj1 | (~Luj@2a01:e0a:5f9:9681:92c9:bd26:afaf:3abb) |
2023-08-27 22:54:31 +0200 | billchenchina | (~billchenc@103.152.35.21) |
2023-08-27 22:54:44 +0200 | terrorjack7 | (~terrorjac@2a01:4f8:c17:87f8::) |
2023-08-27 22:54:44 +0200 | pierrot_ | (~pi@user/pierrot) |
2023-08-27 22:54:49 +0200 | jbalint_ | (~jbalint@071-090-119-177.res.spectrum.com) |
2023-08-27 22:55:00 +0200 | TheCoffeMaker_ | (~TheCoffeM@190.245.100.85) |
2023-08-27 22:55:01 +0200 | p3n_ | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) |
2023-08-27 22:55:01 +0200 | whatsupdoc_ | (uid509081@id-509081.hampstead.irccloud.com) |
2023-08-27 22:56:08 +0200 | hueso_ | (~root@user/hueso) |
2023-08-27 22:56:17 +0200 | michalz | (~michalz@185.246.207.197) (Remote host closed the connection) |
2023-08-27 22:56:28 +0200 | piele_ | (~piele@tbonesteak.creativeserver.net) |
2023-08-27 22:57:27 +0200 | kronicma1 | (user98083@neotame.csclub.uwaterloo.ca) |
2023-08-27 22:57:32 +0200 | caubert_ | (~caubert@user/caubert) |
2023-08-27 22:57:47 +0200 | [exa]_ | (~exa@srv3n.blesmrt.net) |
2023-08-27 22:57:55 +0200 | dxtr_ | (~dxtr@user/dxtr) |
2023-08-27 22:58:20 +0200 | falafel | (~falafel@216.68.6.51.dyn.plus.net) |
2023-08-27 23:00:12 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
2023-08-27 23:02:08 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (*.net *.split) |
2023-08-27 23:02:08 +0200 | vglfr | (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (*.net *.split) |
2023-08-27 23:02:08 +0200 | dxtr | (~dxtr@user/dxtr) (*.net *.split) |
2023-08-27 23:02:08 +0200 | billchenchina- | (~billchenc@2a0c:b641:7a2:320:ee3e:47ca:6070:d71a) (*.net *.split) |
2023-08-27 23:02:08 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) (*.net *.split) |
2023-08-27 23:02:08 +0200 | AlexNoo | (~AlexNoo@178.34.150.48) (*.net *.split) |
2023-08-27 23:02:08 +0200 | piele | (~piele@tbonesteak.creativeserver.net) (*.net *.split) |
2023-08-27 23:02:08 +0200 | Buggys | (Buggys@buggy.shelltalk.net) (*.net *.split) |
2023-08-27 23:02:08 +0200 | myxos | (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (*.net *.split) |
2023-08-27 23:02:08 +0200 | jbalint | (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) (*.net *.split) |
2023-08-27 23:02:08 +0200 | hueso | (~root@user/hueso) (*.net *.split) |
2023-08-27 23:02:08 +0200 | p3n | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (*.net *.split) |
2023-08-27 23:02:08 +0200 | kronicmage | (user44322@neotame.csclub.uwaterloo.ca) (*.net *.split) |
2023-08-27 23:02:08 +0200 | pierrot | (~pi@user/pierrot) (*.net *.split) |
2023-08-27 23:02:08 +0200 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (*.net *.split) |
2023-08-27 23:02:08 +0200 | Ranhir | (~Ranhir@157.97.53.139) (*.net *.split) |
2023-08-27 23:02:08 +0200 | Luj | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (*.net *.split) |
2023-08-27 23:02:08 +0200 | terrorjack | (~terrorjac@2a01:4f8:c17:87f8::) (*.net *.split) |
2023-08-27 23:02:08 +0200 | Vajb | (~Vajb@2001:999:489:74bc:8e7:73bb:7236:fd81) (*.net *.split) |
2023-08-27 23:02:08 +0200 | Adran | (~adran@botters/adran) (*.net *.split) |
2023-08-27 23:02:08 +0200 | [exa] | (~exa@user/exa/x-3587197) (*.net *.split) |
2023-08-27 23:02:08 +0200 | caubert | (~caubert@user/caubert) (*.net *.split) |
2023-08-27 23:02:09 +0200 | Luj1 | Luj |
2023-08-27 23:02:09 +0200 | terrorjack7 | terrorjack |
2023-08-27 23:02:10 +0200 | whatsupdoc_ | whatsupdoc |
2023-08-27 23:02:15 +0200 | Buggys- | (Buggys@Buggy.shelltalk.net) |
2023-08-27 23:02:39 +0200 | Adran | (~adran@botters/adran) |
2023-08-27 23:03:11 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-08-27 23:04:31 +0200 | arahael | (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 246 seconds) |
2023-08-27 23:06:52 +0200 | dxtr_ | dxtr |
2023-08-27 23:09:40 +0200 | Ranhir | (~Ranhir@157.97.53.139) |
2023-08-27 23:09:51 +0200 | sm | (~sm@plaintextaccounting/sm) |
2023-08-27 23:10:48 +0200 | sm | (~sm@plaintextaccounting/sm) (Client Quit) |
2023-08-27 23:16:27 +0200 | mniip_ | mniip |
2023-08-27 23:17:07 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 255 seconds) |
2023-08-27 23:17:23 +0200 | extor | (~extor@ns3018124.ip-149-202-82.eu) |
2023-08-27 23:22:52 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-08-27 23:26:34 +0200 | Thomas03 | (~Thomas03@2600:1702:21b0:a500:e1c1:8242:9d33:b337) |
2023-08-27 23:29:47 +0200 | cheater | (~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com)) |
2023-08-27 23:30:41 +0200 | pavonia | (~user@user/siracusa) |
2023-08-27 23:31:37 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-08-27 23:33:56 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-08-27 23:35:29 +0200 | Guest99 | (~Guest99@2601:602:a080:4e50:fefc:3da5:d370:8cd4) |
2023-08-27 23:36:20 +0200 | Guest99 | (~Guest99@2601:602:a080:4e50:fefc:3da5:d370:8cd4) () |
2023-08-27 23:38:52 +0200 | aaronv | (~Guest99@user/aaronv) |
2023-08-27 23:43:53 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2023-08-27 23:46:04 +0200 | aaronv | (~Guest99@user/aaronv) (Quit: aaronv) |
2023-08-27 23:46:06 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 246 seconds) |
2023-08-27 23:46:43 +0200 | aaronv | (~aaronv@user/aaronv) |
2023-08-27 23:47:26 +0200 | Inst | (~liamzy@2601:6c4:4085:6d50::7f5a) (Ping timeout: 258 seconds) |
2023-08-27 23:55:11 +0200 | aaronv | (~aaronv@user/aaronv) (Quit: Leaving) |
2023-08-27 23:55:33 +0200 | aaronv | (~aaronv@user/aaronv) |
2023-08-27 23:56:34 +0200 | <Square> | I've tried out a bunch of pretty printers (for Haskell values). It seems "prettyprinter" is the golden standard, but there seems to be a mighty endeavor getting nice ANSI colored printing of Haskell values. "pretty-simple" seems like the popular one for this task, but it seems very limited. |
2023-08-27 23:57:31 +0200 | <Square> | Anyone have any insight in where to look to accomplish this? |
2023-08-27 23:58:56 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |