Logs on 2022-05-22 (liberachat/#haskell)
| 00:00:07 | × | gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 00:02:10 | × | pfharlock quits (~pfharlock@cpe-74-138-169-108.kya.res.rr.com) (Ping timeout: 240 seconds) |
| 00:04:52 | → | dcoutts__ joins (~duncan@host86-150-41-206.range86-150.btcentralplus.com) |
| 00:07:10 | × | dcoutts_ quits (~duncan@host86-150-41-206.range86-150.btcentralplus.com) (Ping timeout: 240 seconds) |
| 00:10:48 | × | romesrf quits (~romes@185.5.8.134) (Quit: WeeChat 3.4.1) |
| 00:14:42 | × | alp quits (~alp@user/alp) (Ping timeout: 260 seconds) |
| 00:15:20 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 00:17:44 | <sm> | jackdk: I saw your https://www.reddit.com/r/haskell/comments/uuevb1/reflexbackendsocket0201_released_ghc_902_support : |
| 00:17:45 | <sm> | > makes Reflex an interesting potential choice for MUD servers |
| 00:18:27 | <sm> | of course, now I must ask, are you running a haskell MUD somewhere ? |
| 00:19:00 | <sm> | surely it's time for the haskell MUD |
| 00:20:33 | <EvanR> | MUDs work by having a lot of scheduled or scheduled then rescheduled events that are dispatched at the correct time |
| 00:20:55 | <EvanR> | not in response to any event at that time |
| 00:21:07 | <EvanR> | as I understood it, it's not something reflex just does |
| 00:21:18 | <EvanR> | could work if you try hard enough though xD |
| 00:26:35 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds) |
| 00:27:08 | <exarkun> | I finally started porting my Python MUD server to Haskell a couple weeks ago |
| 00:27:29 | <exarkun> | And I found a few simple student projects in that space as I was thinking about how to get started |
| 00:27:38 | <exarkun> | Who wouldn't want a Haskell MUD server |
| 00:29:59 | <exarkun> | I don't know Reflex but wouldn't an Inform-like system work well as an FRP system? |
| 00:30:18 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:37:34 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
| 00:37:58 | <sm> | go exarkun! |
| 00:38:33 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 00:38:43 | <sm> | isn't Inform more about modelling using an amazing natural language DSL, than concurrency architecture ? |
| 00:39:32 | <sm> | it would be quite interesting to hear your ongoing python vs haskell experiences |
| 00:40:23 | <sm> | MUD-like things sure seem to love highly dynamic, hot reloading systems |
| 00:40:36 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:43:28 | <EvanR> | yes the best is when a section can be reloaded without kicking everyone offline |
| 00:43:55 | <EvanR> | either globally, in that area or both |
| 00:44:42 | <EvanR> | or the MOO way and everything is sourced from a persistent database and edited in real time |
| 00:45:41 | <sm> | multi-user adventure as a wiki. That certainly sounds possible in haskell |
| 00:46:40 | <sm> | what would be the safe scripting language you'd let users go wild with ? |
| 00:46:55 | <EvanR> | haskell!!!!111 |
| 00:47:03 | <sm> | you maniac |
| 00:47:05 | <EvanR> | ok. idris |
| 00:47:16 | <sm> | lol |
| 00:47:30 | <jackdk> | sm: it has been on my to-do list for ages, but no. reflex-libtelnet is built on a non-reflex binding: https://hackage.haskell.org/package/libtelnet so that could be good. I feel like reflex's `Dynamic` type is good for reloading data, but hot-loading code is hard. I never managed to write a hotboot server in straight Haskell though |
| 00:47:31 | <sm> | I would like to see that |
| 00:47:49 | <jackdk> | I think I would play with scripting mobs, etc, using hslua |
| 00:48:00 | <sm> | yeah |
| 00:48:25 | <sm> | when it gets to that point I start thinking python sounds pretty good! |
| 00:49:08 | × | mmhat quits (~mmh@p200300f1c742cc01ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 00:50:14 | <jackdk> | I really liked hslua when I played with it the other week, and you can use fennel if you want FP in your scripting |
| 00:50:32 | <EvanR> | python D: |
| 00:50:36 | <EvanR> | in a haskell MUD |
| 00:51:12 | <sm> | fennel you say... can you use that with hslua ? |
| 00:51:17 | <EvanR> | I used lua for a lot of mud code and... it got old |
| 00:53:18 | <sm> | "the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system... Anywhere you can run Lua code, you can run Fennel code" |
| 00:54:50 | × | spacenautx quits (~spacenaut@user/spacenautx) (Ping timeout: 240 seconds) |
| 00:55:08 | × | Topsi quits (~Topsi@dyndsl-095-033-022-188.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 00:56:30 | → | benin joins (~benin@183.82.31.141) |
| 01:02:46 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 01:03:03 | → | img joins (~img@user/img) |
| 01:03:15 | <jackdk> | sm: http://jackkelly.name/blog/archives/2022/05/01/haskell_lua_and_fennel/index.html |
| 01:04:09 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 276 seconds) |
| 01:05:03 | → | mmhat joins (~mmh@p200300f1c744a725ee086bfffe095315.dip0.t-ipconnect.de) |
| 01:05:08 | <exarkun> | EvanR: At worst you just hand your file descriptors to a new process. |
| 01:05:32 | <sm> | jackdk: very cool |
| 01:07:12 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds) |
| 01:09:12 | → | Infinite joins (~Infinite@49.39.122.125) |
| 01:09:39 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 01:14:08 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 01:22:22 | × | mmhat quits (~mmh@p200300f1c744a725ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 01:23:53 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 01:30:12 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 01:32:31 | → | dcoutts joins (~duncan@host86-150-41-206.range86-150.btcentralplus.com) |
| 01:36:00 | × | dcoutts__ quits (~duncan@host86-150-41-206.range86-150.btcentralplus.com) (Ping timeout: 276 seconds) |
| 01:36:47 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 01:38:17 | → | mmhat joins (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) |
| 01:38:43 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 01:39:15 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit) |
| 01:42:02 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 01:50:48 | → | andrey_ joins (~andrey@p200300dbcf4855005f41c91a08d0b9aa.dip0.t-ipconnect.de) |
| 01:53:34 | × | andrey__ quits (~andrey@p200300dbcf35b9009a0ab587690af4b8.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 01:55:27 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 01:55:28 | → | nate1 joins (~nate@98.45.169.16) |
| 01:55:50 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5) |
| 01:56:20 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 01:57:00 | × | mjacob quits (~mjacob@adrastea.uberspace.de) (Ping timeout: 260 seconds) |
| 01:57:24 | → | mjacob joins (~mjacob@adrastea.uberspace.de) |
| 01:57:38 | × | Infinite quits (~Infinite@49.39.122.125) (Ping timeout: 252 seconds) |
| 01:57:59 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:00:10 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 02:00:11 | × | Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Read error: Connection reset by peer) |
| 02:00:22 | → | Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) |
| 02:00:25 | → | zebrag joins (~chris@user/zebrag) |
| 02:06:34 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) |
| 02:17:52 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Remote host closed the connection) |
| 02:22:12 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) |
| 02:30:37 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 02:33:25 | → | aliabrar[m] joins (~aliabrarm@2001:470:69fc:105::1:2730) |
| 02:33:51 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 276 seconds) |
| 02:34:17 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 02:34:39 | ← | aliabrar[m] parts (~aliabrarm@2001:470:69fc:105::1:2730) () |
| 02:39:18 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 02:44:13 | × | mmhat quits (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5) |
| 02:46:51 | × | xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 276 seconds) |
| 02:52:14 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 02:59:31 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:59:31 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:59:31 | finn_elija | is now known as FinnElija |
| 03:03:06 | × | benin quits (~benin@183.82.31.141) (Ping timeout: 276 seconds) |
| 03:16:56 | → | frost joins (~frost@user/frost) |
| 03:18:31 | × | frost quits (~frost@user/frost) (Client Quit) |
| 03:18:32 | → | xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp) |
| 03:22:34 | → | frost joins (~frost@user/frost) |
| 03:24:29 | → | coot joins (~coot@213.134.190.95) |
| 03:25:24 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 03:27:50 | → | Guest54 joins (~Guest54@modemcable048.16-160-184.mc.videotron.ca) |
| 03:30:50 | <Guest54> | Can someone explain me what <> do ? is it the same as ++ to concatenate two lists ? |
| 03:31:02 | <Guest54> | > [1,2,3] <> [4,5,6] |
| 03:31:05 | <lambdabot> | [1,2,3,4,5,6] |
| 03:31:12 | <Guest54> | > [1,2,3] ++ [4,5,6] |
| 03:31:15 | <lambdabot> | [1,2,3,4,5,6] |
| 03:31:46 | <pavonia> | (<>) is more general |
| 03:32:06 | <pavonia> | > Just [1,2,3] <> Just [4,5,6] |
| 03:32:08 | <lambdabot> | Just [1,2,3,4,5,6] |
| 03:35:14 | <Guest54> | it can also be used for ordering ? |
| 03:35:26 | <Guest54> | instance Semigroup Ordering where |
| 03:35:26 | <Guest54> | LT <> _ = LT |
| 03:35:27 | <Guest54> | EQ <> y = y |
| 03:35:27 | <Guest54> | GT <> _ = GT |
| 03:36:48 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 03:37:05 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 03:37:44 | → | mokee joins (~mokee@37.228.215.63) |
| 03:37:46 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 03:38:48 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 03:39:11 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 03:40:50 | <pavonia> | You can build more interesting sortings using that, but I forgot how that was done |
| 03:42:01 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 03:42:40 | <pavonia> | > sortBy (comparing head <> comparing length) [ [7], [4,5,6], [8,9], [1,2,3] ] |
| 03:42:42 | <lambdabot> | [[1,2,3],[4,5,6],[7],[8,9]] |
| 03:43:06 | <pavonia> | Err |
| 03:43:35 | <pavonia> | Not the best example, but you see the point |
| 03:44:52 | → | coot joins (~coot@213.134.190.95) |
| 03:44:54 | <Guest54> | Thanks !! |
| 03:46:19 | <Guest54> | I m actually trying to solve a problem and i m using <> in the compare. I ll try to describe the problem and give my try so it can be more clear |
| 03:48:04 | <Guest54> | Supposing my list defined as [[Id, time, priority] , [Id, time, priority], [Id, time, priority] ... ] |
| 03:48:04 | <Guest54> | In This exemple, i want to order my lists in an increasing way depending on the priorities and if I have two equal priorities I order them depending on the time (whoever has the greatest time comes first): |
| 03:48:05 | <Guest54> | From this : [["43525", "5", "2"],["25545", "7", "5"],["7455", "3", "4"],["3586", "8", "2"]] |
| 03:48:05 | <Guest54> | To this : [[3586, 8, 2], [43525, 5, 2], [7455, 3, 4], [25545, 7, 5]] |
| 03:48:06 | <Guest54> | My try : |
| 03:48:06 | <Guest54> | First, I convert all the strings to Int using read fucntion and mapping on all elements : |
| 03:48:07 | <Guest54> | toSort = map (map (read :: String -> Int)) [["43525", "5", "2"],["25545", "7", "5"],["7455", "3", "4"],["3586", "8", "2"]] |
| 03:48:07 | <Guest54> | Then i sort the lists: |
| 03:48:08 | <Guest54> | sortLGT x y = compare (x!!2) (y!!2) -- compare priorities |
| 03:48:08 | <Guest54> | <> compare (y!!1) (x!!1) -- compare time in descending order |
| 03:55:41 | <dsal> | Guest54: Just put priority first. |
| 03:55:48 | <dsal> | Then use sort. |
| 03:57:04 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds) |
| 03:57:24 | × | dka quits (~code-is-a@ns3059207.ip-193-70-33.eu) (Quit: My Ex-Girlfriend once told me: I'm not a slut, I'm just popular) |
| 03:57:53 | <dsal> | Also, you most certainly shouldn't be using lists that way. I'm not 100% sure what you've got going on, but this looks like a case of "use the right data types and you don't have to write any code" |
| 03:58:04 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 03:58:06 | → | dka joins (~code-is-a@ns3059207.ip-193-70-33.eu) |
| 03:59:35 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 04:00:07 | → | coot joins (~coot@213.134.190.95) |
| 04:00:16 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 04:01:02 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 04:04:25 | <mjrosenb> | ok, I have a ghcjs question. I have some code like {on button click $ do my_code} |
| 04:05:10 | <mjrosenb> | my_code has a bunch of dom manipulation in it, and some print statements |
| 04:05:16 | <mjrosenb> | but the print statements never get executed. |
| 04:05:24 | <mjrosenb> | and for the life of me, I can not figure out why. |
| 04:06:58 | <mjrosenb> | technically, the print statements are {lift (putStrLn "logging")} |
| 04:08:39 | <mjrosenb> | since for some reason I haven't 100% grokked, that bit of code is in the ReaderT foo IO monad, not just the IO monad |
| 04:09:28 | <mjrosenb> | more confusingly, {lift (putStrLn (trace "logging" "LOGGING"))} outputs logging, but not LOGGING. |
| 04:10:44 | <mjrosenb> | as for what I'm actually trying to do, I'm appending a bunch of nodes to a div, and I want them to appear at least somewhat incrementally |
| 04:11:07 | <mjrosenb> | but fro whatever godawful reason, they only appear after all of the data has been put into them. |
| 04:12:54 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::ba9a) (Ping timeout: 272 seconds) |
| 04:14:50 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 04:16:28 | <EvanR> | should it be liftIO |
| 04:16:52 | <EvanR> | if lift type checks... probably should also work |
| 04:18:16 | <tabemann> | Guest54: that sounds like something that should use a priority queue |
| 04:18:35 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds) |
| 04:19:16 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 04:19:32 | → | mokee joins (~mokee@37.228.215.63) |
| 04:25:34 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 04:26:56 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 04:27:25 | → | mokee joins (~mokee@37.228.215.63) |
| 04:29:09 | <mjrosenb> | EvanR: I just tried with liftIO, and it compiled as well, but also didn't execute the putStrLn. |
| 04:29:59 | <mjrosenb> | I also tried {on button click $ lift $ do my_code}, assuming there was something fishy going on with the reader monad being equivalent to const for sequencing actions |
| 04:30:08 | <mjrosenb> | but that didn't fix anything. |
| 04:30:42 | <EvanR> | so nothing appears in the dev console, nothing appears in the terminal, and nothing appears in a random file named "stdout" |
| 04:37:56 | → | vicfred joins (~vicfred@user/vicfred) |
| 04:41:52 | × | dcoutts quits (~duncan@host86-150-41-206.range86-150.btcentralplus.com) (Ping timeout: 260 seconds) |
| 04:45:29 | × | noteness quits (~noteness@user/noteness) (Remote host closed the connection) |
| 04:45:46 | → | noteness joins (~noteness@user/noteness) |
| 04:47:31 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds) |
| 04:50:07 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 04:51:21 | × | Guest54 quits (~Guest54@modemcable048.16-160-184.mc.videotron.ca) (Quit: Client closed) |
| 05:15:25 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 244 seconds) |
| 05:18:47 | → | gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) |
| 05:26:46 | → | Infinite joins (~Infinite@49.39.115.237) |
| 05:30:19 | → | coot joins (~coot@213.134.190.95) |
| 05:30:25 | → | nate1 joins (~nate@98.45.169.16) |
| 05:31:56 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 05:40:18 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 05:44:32 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 05:49:03 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 05:50:25 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 05:51:37 | × | raym quits (~raym@user/raym) (Quit: kernel update, rebooting...) |
| 05:55:30 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 06:00:02 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 06:00:39 | → | raym joins (~raym@user/raym) |
| 06:00:44 | → | _mokee_ joins (~mokee@37.228.215.63) |
| 06:01:03 | × | _mokee_ quits (~mokee@37.228.215.63) (Client Quit) |
| 06:03:25 | → | ashpil joins (~ashpil@98.42.126.67) |
| 06:04:55 | → | slack1256 joins (~slack1256@191.125.227.212) |
| 06:06:37 | <ashpil> | So I recently started learning Haskell after wanting to do so for a while, and honestly having heard that learning it will "change the way you think about programming", after reading the first few chapters of "Learn you a Haskell", I'm feeling a bit... underwhelmed. It's possible I just haven't dove deep enough yet, but the thing is, I do have |
| 06:06:37 | <ashpil> | somewhat significant prior functional programming experience -- not in pure languages I guess, but I've done a decent amount of OCaml, Rust, and Elixir, relying quite heavily on their functional parts. Is it possible that Haskell just doesn't have all that much to offer (in terms of learning about new ways to think as a programmer or PL design) to |
| 06:06:38 | <ashpil> | someone like me? |
| 06:07:59 | <slack1256> | Yeah, I think that if you already know OCAML, then haskell is not that big of a jump. |
| 06:09:09 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 06:09:35 | → | slac72117 joins (~slack1256@191.125.99.74) |
| 06:09:56 | <dsal> | ocaml isn't pure. Learning purity helps quite a bit. |
| 06:10:18 | <dsal> | Haskell also is a lot… taller? Much nicer high level abstractions. |
| 06:11:45 | <ashpil> | I understand the languages I've used aren't pure, but at least OCaml I've only ever used completely purely so I think I've had that perspective |
| 06:12:10 | × | slack1256 quits (~slack1256@191.125.227.212) (Ping timeout: 240 seconds) |
| 06:12:15 | → | slac62079 joins (~slack1256@181.43.226.229) |
| 06:12:17 | <dsal> | I've not heard great things about LYAH, and haven't read it myself, but I'd had production ocaml a decade or so before I started doing anything serious in Haskell. |
| 06:12:26 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 06:12:48 | slac62079 | is now known as slack1256 |
| 06:14:10 | × | slac72117 quits (~slack1256@191.125.99.74) (Ping timeout: 240 seconds) |
| 06:14:34 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds) |
| 06:15:52 | <dsal> | I don't know what kind of work you do or what's important to you. I've kind of settled on Haskell just because it's easier than anything else I've done. |
| 06:17:46 | <ashpil> | I guess I just wanted to learn it for this claimed "new way to think about programming" or even just from a perspective of being interested in PL design and implementation, thought it might teach me something new. But maybe I just have to dig deeper for that |
| 06:18:12 | <dsal> | I don't know what you know, so it's hard to know how to tell what might help you. :) |
| 06:19:22 | → | sabry joins (~sabry@197.37.144.70) |
| 06:20:09 | <dsal> | Do you feel that you have a pretty good understanding of some of the base classes like Functor, Applicative, Foldable, and Traversable? That stuff will get you super far. |
| 06:20:43 | <dsal> | Oh, and Semigroup/Monoid. |
| 06:21:47 | <dsal> | I see so much boilerplate in other languages because people can't express simple common things like `fold` |
| 06:21:48 | <dsal> | :t fold |
| 06:21:49 | <lambdabot> | (Foldable t, Monoid m) => t m -> m |
| 06:22:12 | <dsal> | :t traverse |
| 06:22:14 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 06:23:15 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 06:24:21 | <dsal> | :t dimap |
| 06:24:22 | <lambdabot> | Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d |
| 06:27:13 | <ashpil> | Hmm I guess I'll keep digging deeper, then! Thanks |
| 06:27:40 | <dsal> | I write a lot of parsers. One of the parsers I work on at work groks fixed-width format files with fixed-width fields within a fixed line. The parser is constructed such that the data type contains the length of a line such that the *implementation* of a row parser composes field parsers whose length must equal the total length of the line. |
| 06:29:11 | <dsal> | e.g., `parseRow :: Parser 30; parseRow = parseFifteenCharacterField *> parseTenCharacterField` won't compile because the sum of those field parsers won't consume 30 characters. |
| 06:30:04 | <dsal> | Same for serialization. If you try to emit something other than 30 characters, you'd get a compiler error. That stuff is nice. |
| 06:31:18 | <dsal> | It's controversial, but I like slightly non-trivial profunctor lenses, as well. Seeing how that stuff's defined and how they compose is pretty hard to do elsewhere. |
| 06:31:54 | × | ashpil quits (~ashpil@98.42.126.67) (Ping timeout: 252 seconds) |
| 06:34:08 | × | nate1 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 06:46:16 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection) |
| 06:53:44 | → | acidjnk joins (~acidjnk@p200300d0c7068b45e4e7c1a76966715b.dip0.t-ipconnect.de) |
| 06:58:30 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 06:58:46 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds) |
| 07:01:34 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 07:04:44 | → | Tuplanolla joins (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) |
| 07:06:00 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 07:14:29 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 07:15:36 | → | zaquest joins (~notzaques@5.130.79.72) |
| 07:25:54 | × | slack1256 quits (~slack1256@181.43.226.229) (Remote host closed the connection) |
| 07:26:50 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds) |
| 07:29:46 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 07:31:29 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 07:36:03 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 256 seconds) |
| 07:37:48 | → | syntactic_sugar joins (~amoljha@2601:644:8000:6640::d839) |
| 07:39:12 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:43:27 | × | syntactic_sugar quits (~amoljha@2601:644:8000:6640::d839) (Quit: WeeChat 3.4.1) |
| 07:46:00 | → | coot joins (~coot@213.134.190.95) |
| 07:48:15 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:49:58 | → | dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
| 07:50:01 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 07:50:13 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 07:55:12 | × | dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 272 seconds) |
| 08:06:15 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Remote host closed the connection) |
| 08:07:33 | → | benin joins (~benin@183.82.31.141) |
| 08:10:17 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 08:10:34 | × | lagooned quits (~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net) (Ping timeout: 244 seconds) |
| 08:20:50 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 08:21:20 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 08:22:23 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 08:28:43 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 246 seconds) |
| 08:33:09 | → | cyphase joins (~cyphase@user/cyphase) |
| 08:33:28 | × | sabry quits (~sabry@197.37.144.70) (Quit: Client closed) |
| 08:38:06 | → | jgeerds joins (~jgeerds@d53604b0.access.ecotel.net) |
| 08:38:23 | <sm> | you know how haskell programs usually fail with text decoding errors, if you read non-ascii text with LANG= or so ? |
| 08:39:20 | <sm> | on linux, that is easy to reproduce. On mac today I can't seem to break it this way, no matter what I set LANG or LC_ALL to. Any idea why that could be ? |
| 08:39:21 | <Hecate> | sm: hmm, Bodigrim opened a ticket about the message on the GHC tracker not so long ago |
| 08:39:31 | <Hecate> | hmm |
| 08:40:05 | <Hecate> | for mac I'm unable to help in a practical way, I don't own one |
| 08:41:23 | <sm> | some magic on mac ? I should check #ghc maybe |
| 08:41:45 | <sm> | oops already did |
| 08:42:41 | → | Kaiepi joins (~Kaiepi@156.34.47.253) |
| 08:45:15 | <Hecate> | sm: does "strace" reveal something? |
| 08:45:57 | <sm> | unfortunately that's not a usable thing on mac |
| 08:48:18 | <Rembane> | Is there a mactrace on mac? |
| 08:48:26 | <sm> | ok I got dtruss to run, but no it doesn't reveal anything (to me) |
| 08:51:03 | → | emad joins (~emad@156.214.61.111) |
| 08:52:12 | <sm> | ok yes I think this shows ghc locale is unaffected by the usual env vars, on mac: |
| 08:52:13 | <sm> | $ LC_ALL= ghc -e 'import System.IO' -e 'print localeEncoding' |
| 08:52:13 | <sm> | UTF-8 |
| 08:52:42 | <jackdk> | sm: someone made a with-utf8 package to do all the magic twiddling, if you wrap `main` with it |
| 08:53:18 | <sm> | I just started using that, it's exactly what I want to test (I hope to see it fail with the old code and pass with the new) |
| 08:53:47 | <sm> | ironic, this has been breaking for so many years now I can't break it |
| 08:56:46 | <sm> | the encoding seems to be read from c here: https://hackage.haskell.org/package/base-4.16.1.0/docs/src/GHC-IO-Encoding-Iconv.html#localeEncodingName |
| 08:57:52 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 08:59:18 | → | chomwitt joins (~chomwitt@2a02:587:dc1e:cc00:630a:df82:afd2:eb70) |
| 09:00:17 | × | yosef36 quits (~yosefweis@2001:470:69fc:105::1:e501) (Quit: You have been kicked for being idle) |
| 09:02:04 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 09:02:14 | → | Vajb joins (~Vajb@2001:999:231:409f:b036:bb6b:e334:8a8e) |
| 09:02:33 | → | mokee joins (~mokee@37.228.215.63) |
| 09:03:08 | × | shriekingnoise_ quits (~shrieking@201.231.16.156) (Quit: Quit) |
| 09:04:31 | × | mokee quits (~mokee@37.228.215.63) (Client Quit) |
| 09:04:32 | <Maxdamantus> | sm: what happens when you set `LC_ALL=C` ? |
| 09:05:05 | <sm> | $ LC_ALL=C ghc -e 'import System.IO' -e 'print localeEncoding' |
| 09:05:05 | <sm> | UTF-8 |
| 09:05:35 | <Maxdamantus> | Maybe LC_ALL is a glibc thing. |
| 09:06:40 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) |
| 09:09:18 | <Maxdamantus> | Hm, no, it seems to be standardised in POSIX. |
| 09:11:02 | <Maxdamantus> | What happens if you do `echo 'á' | LC_ALL=C grep -o ^.`? |
| 09:11:50 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 272 seconds) |
| 09:13:08 | <sm> | $ echo 'á' | LC_ALL=C grep -o ^. |
| 09:13:08 | <sm> | � |
| 09:13:28 | <Maxdamantus> | So it works there. |
| 09:13:39 | <amongas666[m]> | @compose pl undo [ [ x | x <- xs, even x ] | xs <- xxs] |
| 09:13:40 | <lambdabot> | (line 1, column 29): |
| 09:13:40 | <lambdabot> | unexpected "{" |
| 09:13:40 | <lambdabot> | expecting variable, "(", operator or ")" |
| 09:13:58 | <sm> | yeah.. that's a C program. It's ghc-compiled programs I seem to be having trouble with |
| 09:16:42 | <sm> | oh well, time to sleep. Thanks, all |
| 09:18:25 | × | benin quits (~benin@183.82.31.141) (Ping timeout: 246 seconds) |
| 09:19:10 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 09:19:31 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:19:55 | → | romesrf joins (~romes@185.5.8.134) |
| 09:22:19 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 09:24:36 | × | Infinite quits (~Infinite@49.39.115.237) (Ping timeout: 252 seconds) |
| 09:25:59 | × | gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Quit: leaving) |
| 09:28:53 | → | mokee joins (~mokee@37.228.215.63) |
| 09:29:50 | × | jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds) |
| 09:31:47 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 09:38:18 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 09:39:10 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 09:44:36 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 244 seconds) |
| 09:48:34 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 09:49:18 | → | king_gs joins (~Thunderbi@187.201.97.18) |
| 09:52:43 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 09:54:37 | → | mokee joins (~mokee@37.228.215.63) |
| 09:59:54 | × | king_gs quits (~Thunderbi@187.201.97.18) (Quit: king_gs) |
| 10:02:19 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 10:02:35 | → | mokee joins (~mokee@37.228.215.63) |
| 10:06:46 | → | co-JOMBLO-38-CAR joins (~co-JOMBLO@92.223.85.241) |
| 10:07:50 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 10:07:54 | → | mmhat joins (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) |
| 10:15:26 | <[exa]> | if I for whatever wicked reason want to build dynamic executables with cabal, what's the way to go? I found `executable-dynamic: True` but that just doesn't do anything despite documented |
| 10:16:12 | <sm> | isn't that the default kind of build ? |
| 10:16:24 | <[exa]> | ok solved, I needed to pass it to `cabal configure` as a flag. |
| 10:16:42 | <[exa]> | thanks #haskell for rubberducking :] |
| 10:16:55 | <[exa]> | sm: I thought everything is built as static by default, no? |
| 10:17:04 | <sm> | I thought the reverse |
| 10:17:08 | <[exa]> | (at least the binary sizes kinda tell that tale |
| 10:17:18 | <sm> | usually people are working hard to make things static |
| 10:17:58 | <[exa]> | weird |
| 10:18:09 | <sm> | I guess the usual default is somewhere in the middle.. neither fully dynamic nor fully static |
| 10:18:17 | <[exa]> | yeah I'd suspect that |
| 10:18:38 | → | Midjak joins (~Midjak@82.66.147.146) |
| 10:18:44 | sm | installs ghc 9.4 alpha with amazing ease, thanks ghcup! |
| 10:18:44 | sm | https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/6?u=simonmic |
| 10:19:26 | <[exa]> | ah yeah really, it only packs the haskell libraries as static, and system/C-ish stuff stays dynamic |
| 10:19:53 | <[exa]> | mildly confusing, thanks for clarification :] |
| 10:20:24 | <maerwald> | static is the default (for haskell libraries) |
| 10:20:32 | <maerwald> | C libraries is a different topic |
| 10:20:58 | <[exa]> | btw what's new in 9.4? |
| 10:21:19 | <sm> | https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455 tells |
| 10:21:29 | <[exa]> | maerwald: yeah on the second look it is perfectly logical this way, one only kinda doesn't assume the half-static state |
| 10:21:57 | <sm> | and by the way discourse is awesome, I don't know why I'm still messing around with reddit |
| 10:21:59 | <maerwald> | yes, because C has stable ABI |
| 10:22:46 | × | mmhat quits (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 10:25:54 | <[exa]> | oh lovely, 150kb binary |
| 10:26:10 | <sm> | woah |
| 10:26:26 | <[exa]> | (I've got a pandoc on the same system image, so 99.9% of libraries are really shared) |
| 10:29:10 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:32:50 | × | co-JOMBLO-38-CAR quits (~co-JOMBLO@92.223.85.241) (Remote host closed the connection) |
| 10:35:58 | → | cosmos1 joins (cosmos@user/cosmos1) |
| 10:39:47 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 10:40:43 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 10:45:32 | <maerwald> | [exa]: shipping dynamically linked haskell binaries isn't too hard either |
| 10:45:59 | <maerwald> | but doesn't make much sense for most cases |
| 10:50:13 | <[exa]> | yeah, I'm building completely closed and intact system images actually, and they should be small so copying the static libs would be a complete waste |
| 10:51:01 | → | benin joins (~benin@183.82.31.141) |
| 10:55:31 | → | zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) |
| 11:05:46 | → | mmhat joins (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) |
| 11:07:14 | → | Infinite joins (~Infinite@49.39.118.171) |
| 11:07:54 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 11:08:46 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) |
| 11:09:20 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 11:13:30 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 260 seconds) |
| 11:27:07 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 11:32:05 | → | cosmos1_ joins (cosmos@user/cosmos1) |
| 11:32:28 | → | dcoutts joins (~duncan@host213-122-143-3.range213-122.btcentralplus.com) |
| 11:33:04 | × | acidjnk quits (~acidjnk@p200300d0c7068b45e4e7c1a76966715b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 11:34:10 | × | cosmos1 quits (cosmos@user/cosmos1) (Ping timeout: 240 seconds) |
| 11:41:19 | × | Vajb quits (~Vajb@2001:999:231:409f:b036:bb6b:e334:8a8e) (Read error: Connection reset by peer) |
| 11:41:43 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 11:58:03 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:02:43 | × | Infinite quits (~Infinite@49.39.118.171) (Quit: Client closed) |
| 12:15:07 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
| 12:17:00 | → | alp joins (~alp@user/alp) |
| 12:20:42 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
| 12:22:23 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 12:28:22 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 12:38:30 | × | zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Remote host closed the connection) |
| 12:48:00 | → | Infinite joins (~Infinite@49.39.123.254) |
| 12:55:40 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 12:55:53 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 13:02:48 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5) |
| 13:10:20 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) |
| 13:11:58 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 13:14:53 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 244 seconds) |
| 13:18:08 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 13:18:15 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 13:18:57 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 13:22:02 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 13:23:00 | × | alp quits (~alp@user/alp) (Ping timeout: 260 seconds) |
| 13:23:46 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 13:30:46 | × | xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds) |
| 13:33:31 | → | xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp) |
| 13:38:09 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 276 seconds) |
| 13:43:39 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 13:44:02 | × | mmhat quits (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5) |
| 13:47:34 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 13:47:41 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 13:51:54 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 13:59:32 | → | Josh joins (~Josh@216.154.3.96) |
| 14:00:18 | <raehik> | Where's the definition for Natural in GHC pre-9.2? New one is in ghc-bignum in GHC.Num.Natural |
| 14:00:59 | <raehik> | ahh found it, GHC.Natural |
| 14:08:13 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 14:08:46 | × | mokee quits (~mokee@37.228.215.63) (Quit: off) |
| 14:09:09 | → | mokee joins (~mokee@37.228.215.63) |
| 14:10:07 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 14:10:18 | × | mokee quits (~mokee@37.228.215.63) (Client Quit) |
| 14:12:40 | → | ubert joins (~Thunderbi@p200300ecdf3b995b118dba1cd1127f24.dip0.t-ipconnect.de) |
| 14:13:19 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) |
| 14:13:26 | → | mokee joins (~mokee@37.228.215.63) |
| 14:14:23 | × | mokee quits (~mokee@37.228.215.63) (Client Quit) |
| 14:15:52 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 14:17:50 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 260 seconds) |
| 14:25:42 | <Bulby[m]> | why is `foo *> pure bar` equivilant to `foo $> bar` |
| 14:25:57 | <Bulby[m]> | or why does hlint suggest it |
| 14:28:29 | <hpc> | :t \foo bar -> foo *> pure bar |
| 14:28:30 | <lambdabot> | Applicative f => f a -> b -> f b |
| 14:28:34 | <hpc> | :t \foo bar -> foo $> bar |
| 14:28:35 | <lambdabot> | error: |
| 14:28:35 | <lambdabot> | • Variable not in scope: ($>) :: t -> t1 -> t2 |
| 14:28:35 | <lambdabot> | • Perhaps you meant one of these: |
| 14:29:10 | <hpc> | @let import Data.Functor |
| 14:29:11 | <hpc> | :t \foo bar -> foo $> bar |
| 14:29:12 | <lambdabot> | Defined. |
| 14:29:13 | <lambdabot> | Functor f => f a -> b -> f b |
| 14:29:34 | <Bulby[m]> | ah, so basically the same... |
| 14:29:40 | <hpc> | yep |
| 14:29:44 | <Bulby[m]> | :t \foo bar -> foo *> bar |
| 14:29:45 | <lambdabot> | Applicative f => f a -> f b -> f b |
| 14:30:18 | <Bulby[m]> | `$>` just takes a normal value |
| 14:30:57 | <Bulby[m]> | they behave the same right? `fmap . const` doesn't sound identical to `foo *> pure bar` |
| 14:31:35 | <Franciman> | :t fmap . const |
| 14:31:37 | <lambdabot> | Functor f => b -> f a -> f b |
| 14:31:48 | <hpc> | :t (*>) |
| 14:31:49 | <lambdabot> | Applicative f => f a -> f b -> f b |
| 14:32:05 | <hpc> | (*>) already has that const-ish behavior |
| 14:32:11 | <Franciman> | yes |
| 14:32:13 | <hpc> | you just need to take a thing of type b (or a) |
| 14:32:16 | <hpc> | and make it fit f b |
| 14:32:22 | <Franciman> | `fmap . const` seems equal to (<$) |
| 14:32:29 | <Franciman> | :t (<$) |
| 14:32:30 | <lambdabot> | Functor f => a -> f b -> f a |
| 14:33:04 | <Bulby[m]> | wait, so `[1, 2, 3] *> pure 4 -- [4, 4, 4]` is correct? |
| 14:33:51 | <Franciman> | it should be [4] i think? |
| 14:33:56 | <Bulby[m]> | it is! |
| 14:34:00 | <Franciman> | > [1, 2, 3] *> pure 4 |
| 14:34:02 | <lambdabot> | [4,4,4] |
| 14:34:08 | <Franciman> | you are correct Bulby[m] |
| 14:34:21 | <Bulby[m]> | wow, they are identical! amazing |
| 14:34:26 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 14:35:39 | <Bulby[m]> | which is why i assume hlint always reccomends replacing `foo *> pure bar` with `foo $> bar` |
| 14:35:46 | <Franciman> | yes |
| 14:38:18 | → | coot joins (~coot@213.134.190.95) |
| 14:38:25 | <Bulby[m]> | is that a convention? |
| 14:38:36 | <Franciman> | wait, which one? |
| 14:38:43 | <Bulby[m]> | it's not stated in docs |
| 14:38:48 | <Bulby[m]> | them being equivilant |
| 14:38:48 | <Franciman> | using $> over foo *> pure bar |
| 14:38:53 | <Franciman> | ah |
| 14:38:55 | <Franciman> | uhm |
| 14:39:00 | <hpc> | yeah, more or less |
| 14:39:14 | <hpc> | if two things are the same, prefer the more generic one |
| 14:39:20 | <hpc> | plus it's just simpler to write |
| 14:39:36 | <Franciman> | https://hackage.haskell.org/package/base-4.16.1.0/docs/Data-Functor.html#v:-60--36- |
| 14:39:45 | <Franciman> | it's written here that the default efinition of <$ is fmap . const |
| 14:39:51 | <hpc> | :t mapM |
| 14:39:52 | <lambdabot> | (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) |
| 14:40:00 | <Franciman> | but you can change it, yeah |
| 14:40:04 | <Franciman> | this is true |
| 14:40:08 | <Bulby[m]> | I don't see the signifigance of that lol |
| 14:40:19 | <Bulby[m]> | :t fmap . const |
| 14:40:20 | <lambdabot> | Functor f => b -> f a -> f b |
| 14:40:27 | <Franciman> | (<$) = fmap . const |
| 14:40:35 | <Franciman> | by default |
| 14:40:41 | <Franciman> | if you implement a functor instance |
| 14:40:45 | <Franciman> | and define fmap |
| 14:40:52 | <hpc> | :t liftM -- rather |
| 14:40:53 | <Franciman> | then (<$) = fmap . const, by default |
| 14:40:53 | <lambdabot> | Monad m => (a1 -> r) -> m a1 -> m r |
| 14:40:57 | <hpc> | :t liftA |
| 14:40:59 | <lambdabot> | Applicative f => (a -> b) -> f a -> f b |
| 14:40:59 | <hpc> | :t fmap |
| 14:41:01 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 14:41:22 | <hpc> | each of those is the same function, but using fmap is recommended because more types are Functor than are Monad |
| 14:41:32 | <hpc> | and every Monad is also Functor |
| 14:42:04 | <Bulby[m]> | liftA looks like it is described to only be used for deriving a Functor instance from a Applicative instance |
| 14:42:58 | <geekosaur> | liftA is more or less generalized liftM, which historicallyexisted only to recover a Functor from a Monad because it wasn't a superclass yet |
| 14:43:20 | <geekosaur> | and completes the liftAn set |
| 14:43:49 | <Bulby[m]> | i'm saying it's docs say it's used for making a functor instance from an applicative instance |
| 14:44:32 | <geekosaur> | that doesn't actually make any sense because anything that is Applicative is also functor (and has been for the entire existence of Applicative) |
| 14:44:58 | <Bulby[m]> | ... why does liftA exist at all then |
| 14:45:01 | <geekosaur> | guessing the doc was copied from liftM where that was true for s/Applicative/Monad/ |
| 14:46:11 | hololeap | can't wait for the release of liftA4 |
| 14:46:19 | <Bulby[m]> | \o/ |
| 14:46:32 | <hpc> | someday when we have the technology for it, we might even get liftA5 |
| 14:46:48 | <hololeap> | O_O |
| 14:46:51 | <Bulby[m]> | ez `liftA4 f a b c d = liftA3 f a b c <*> d` |
| 14:47:04 | <hololeap> | stop that sorcery |
| 14:47:25 | <hpc> | yeah, what do you think we do here, functional programming? :P |
| 14:47:40 | <Bulby[m]> | `liftA5 f a b c d e = liftA4 f a b c d <*> e` |
| 14:47:59 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 14:48:00 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 14:48:00 | → | wroathe joins (~wroathe@user/wroathe) |
| 14:48:33 | <hololeap> | Bulby[m]: plz stop, you're scaring me :( |
| 14:48:35 | <Bulby[m]> | https://hackage.haskell.org/package/base-4.16.1.0/docs/Control-Monad.html#v:liftM5 explain this |
| 14:48:36 | → | kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr) |
| 14:49:22 | <hololeap> | I assume liftM5 is a holdover from before (<*>) was a thing |
| 14:50:31 | <Bulby[m]> | we have fun here |
| 14:51:23 | <hpc> | you could still use `ap` but much like lisp and perl programmers, we love pressing the shfit key :D |
| 14:55:52 | → | romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660) |
| 14:58:43 | → | zebrag joins (~chris@user/zebrag) |
| 14:58:54 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 14:59:29 | <geekosaur> | yeh, Monad goes up to liftM6, but also had `ap` which became `<*>` when Applicative arrived |
| 14:59:43 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 15:00:05 | × | emad quits (~emad@156.214.61.111) (Remote host closed the connection) |
| 15:06:53 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 15:09:02 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 15:10:25 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) |
| 15:11:57 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 15:13:59 | → | tubogram44 joins (~tubogram@user/tubogram) |
| 15:14:02 | → | alp joins (~alp@user/alp) |
| 15:14:44 | × | tubogram4 quits (~tubogram@user/tubogram) (Ping timeout: 240 seconds) |
| 15:14:44 | tubogram44 | is now known as tubogram4 |
| 15:15:59 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 15:16:48 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 15:18:57 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 15:19:05 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 15:20:29 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 15:21:51 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 15:21:51 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 15:22:08 | × | fryguybo1 quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving) |
| 15:25:49 | × | romesrf quits (~romes@185.5.8.134) (Ping timeout: 256 seconds) |
| 15:27:12 | → | gensyst joins (gensyst@user/gensyst) |
| 15:27:50 | <gensyst> | How can this code possibly be type-checking? (Why can I wrap a pointer to something into that something all over again??) let e = (C.Cairo (undefined :: Ptr C.Cairo) :: C.Cairo) |
| 15:29:20 | <geekosaur> | because Ptr is not really a pointer to something in the C sense |
| 15:29:50 | <geekosaur> | it's a pointer to some value from C, and the type is more of a tag than anything else |
| 15:29:51 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 15:29:53 | <Bulby[m]> | it's a magic type basically iirc |
| 15:30:03 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 15:30:22 | <geekosaur> | the actual thing it's pointing to is some C structure that you typically can't represent directly in Haskell |
| 15:30:58 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 15:31:11 | <geekosaur> | (well, in this case it's pointing to nothing because it's using `undefined`, so you can think of it as a null pointer) |
| 15:31:57 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 15:32:05 | → | sabry joins (~sabry@197.37.144.70) |
| 15:32:05 | <gensyst> | wtf lol |
| 15:32:21 | <Bulby[m]> | i hate C externs |
| 15:32:30 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 15:32:34 | <Bulby[m]> | in all sorts of languages they are nothing but witchcraft |
| 15:32:41 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 15:33:00 | <gensyst> | geekosaur, so what is e in my example? the underlying thing being pointed at? |
| 15:33:26 | <geekosaur> | I don't know what C.Cairo is, aside from "a constructor" |
| 15:33:53 | <geekosaur> | the constructor contains what amounts to a null pointer |
| 15:34:21 | <Bulby[m]> | you are never supposed to make your own pointers I think |
| 15:34:34 | <Bulby[m]> | you just use `Ptr` as a type sig for extern functions |
| 15:34:53 | <geekosaur> | it's valid to pass a Ptr around. |
| 15:35:09 | <geekosaur> | I would question why it uses undefined instead of nullPtr, but that's just me |
| 15:35:10 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds) |
| 15:35:25 | <Bulby[m]> | yes, but you shouldn't create them manually, aside from in C |
| 15:35:32 | <geekosaur> | unless they want an exception if it's touched, which might be reasonable |
| 15:35:33 | <gensyst> | geekosaur, if I write this instead, let e = (C.Cairo (undefined :: Ptr Int) :: C.Cairo) I get the error "Couldn't match type ‘Int’ with ‘C.Cairo’". So we know this C.Cairo constructor is indeed expecting a Ptr C.Cairo lol? |
| 15:35:40 | × | frost quits (~frost@user/frost) (Ping timeout: 252 seconds) |
| 15:35:40 | <gensyst> | it's expecting a pointer to itself! |
| 15:35:44 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Client Quit) |
| 15:35:45 | <geekosaur> | like I told you, it's a tag |
| 15:35:47 | <Bulby[m]> | It's a phantom type |
| 15:35:55 | <geekosaur> | no, it is not pointing to itself |
| 15:35:57 | <Bulby[m]> | or a tag |
| 15:36:01 | <geekosaur> | a Ptr Foo is not a Foo |
| 15:36:33 | <geekosaur> | its representation is the address of something. the type is ignored except for type checking purposes |
| 15:36:44 | <geekosaur> | so you can't mix it with a Ptr Int |
| 15:37:17 | <Bulby[m]> | C pointers are similar, no? you can (unsafely) cast them however your heart desires |
| 15:37:33 | <geekosaur> | there is an unsafe cast operation, in fact |
| 15:37:51 | <geekosaur> | but in the normal case you can't in Haskell, the type must match |
| 15:37:51 | <Bulby[m]> | unsafe coerce in haskell right |
| 15:38:06 | <geekosaur> | don't even need that, there is castPtr |
| 15:38:18 | <Bulby[m]> | oh |
| 15:38:21 | <Bulby[m]> | yuck |
| 15:38:50 | <Bulby[m]> | i'm proud of myself, I wrote C++ externs that don't segfault |
| 15:39:11 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 15:39:19 | <gensyst> | Thanks for the above! I'll have to sleep on this a bit and get back to this when I'm more focused. |
| 15:40:01 | <Bulby[m]> | Polysemy is being mean - it isn't letting me use `note` even though the Sem I return has `Error` in it's members list |
| 15:40:21 | <Bulby[m]> | `polysemyHelp :: P.Sem [P.Fail, P.Error T.Text] VersionInfo` |
| 15:40:51 | <Bulby[m]> | this is a helper function btw |
| 15:40:58 | <Bulby[m]> | which is why it's hardcodec |
| 15:41:01 | <Bulby[m]> | s/hardcodec/hardcoded/ |
| 15:41:05 | <Bulby[m]> | NO I EDITED IT |
| 15:41:18 | <Bulby[m]> | sorry for any garbage on the irc end |
| 15:43:03 | <geekosaur> | gensyst, consider https://play-haskell.tomsmeding.com/play/paste/YMxHdqaS/1 |
| 15:43:56 | <geekosaur> | single edits are usually okay, we get the point. it's when you do a bunch of them or replacing the whole line or etc. that it gets messy |
| 15:45:16 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 15:45:34 | → | gpncarl joins (~gpncarl@120.244.220.74) |
| 15:45:50 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 15:47:58 | <Bulby[m]> | ah, it's another case of polysemy being insane |
| 15:48:08 | <Bulby[m]> | thankfully polysemy-plugin fixes insanity (mostly) |
| 15:50:46 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 15:51:00 | → | fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) |
| 15:52:55 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 15:55:09 | <gensyst> | geekosaur, should I then just view such a constructor C.Cairo :: Ptr C.Cairo -> C.Cairo as a weird artifact of the way C.Cairo has chosen to do FFI? |
| 15:55:25 | <geekosaur> | yes |
| 15:55:41 | <gensyst> | but can nothing more be said? as in, could C.Cairo have done this differently? |
| 15:55:50 | <gensyst> | this is so weird lol |
| 15:56:04 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
| 15:56:04 | <geekosaur> | it could have created a distinct type to represent the pointer to a C struct |
| 15:56:11 | <gensyst> | It's like the C.Cairo inside the Ptr is not the same as the outer C.Cairo |
| 15:56:27 | <geekosaur> | it's not |
| 15:56:33 | <geekosaur> | it's some C value |
| 15:56:41 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 15:56:43 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 15:56:45 | <geekosaur> | but there's no good reason to do so and you can't take a Ptr to a Haskell value, so why not reuse the Haskell type? |
| 15:56:46 | → | __monty__ joins (~toonn@user/toonn) |
| 15:56:59 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds) |
| 15:57:04 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 15:57:12 | <gensyst> | geekosaur, good question! So is this commonly done when doing FFI? |
| 15:57:32 | <geekosaur> | if there are a bunch of different C values to keep track of, yes |
| 15:57:33 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:57:48 | <gensyst> | ok thanks! this is key intel |
| 15:57:53 | <geekosaur> | since this is probably a binding to libcairo, that would seem likely |
| 15:58:01 | <geekosaur> | it's what I've been trying to tell you :) |
| 15:59:11 | <gensyst> | :D |
| 15:59:43 | <geekosaur> | more correctly you can take a pointer to a Haskell value if you try hard enough, but the garbage collector won't update it if it moves the value around so it's useless and eventually dangerous |
| 16:00:01 | <maerwald> | I still don't understand why Haskellers are eager to use effects systems that have fishy semantics. But that reinforces my suspicion that abstraction is valued more than correctness in Haskell, generally. |
| 16:00:12 | → | hololeap joins (~hololeap@user/hololeap) |
| 16:00:13 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 16:01:01 | <maerwald> | trying out research ideas in production... let's go :D |
| 16:02:20 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 16:04:20 | → | gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) |
| 16:04:44 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:06:11 | → | andai joins (~andai@86.32.39.178) |
| 16:06:37 | × | andai quits (~andai@86.32.39.178) (Client Quit) |
| 16:07:44 | → | andai joins (~andai@86.32.39.178) |
| 16:11:57 | → | nattiestnate joins (~nate@202.138.250.17) |
| 16:12:50 | × | andai quits (~andai@86.32.39.178) (Quit: Connection closed) |
| 16:14:18 | × | gensyst quits (gensyst@user/gensyst) (Quit: Leaving) |
| 16:16:07 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 16:16:34 | → | andai joins (~andai@86.32.39.178) |
| 16:16:40 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 16:17:45 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 16:19:26 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 16:19:53 | ← | gpncarl parts (~gpncarl@120.244.220.74) (WeeChat 3.4.1) |
| 16:20:55 | × | cosmos1_ quits (cosmos@user/cosmos1) (Quit: Lost terminal) |
| 16:21:15 | <monochrom> | I don't think any programming community prioritize correctness, really. |
| 16:22:13 | <sm> | ada ? |
| 16:22:33 | <maerwald> | you mean agda? |
| 16:23:00 | <sm> | no, I mean the ada language community |
| 16:23:50 | <sm> | they take a certain kind of correctness very seriously. But of course there are multiple kinds of correctness and they also care about results too |
| 16:25:30 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 16:27:35 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 256 seconds) |
| 16:27:48 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds) |
| 16:30:11 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 16:31:17 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:31:33 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:31:48 | → | eggplant_ joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:31:50 | → | andai48 joins (~andai@89.205.139.77) |
| 16:32:34 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 16:32:55 | andai48 | is now known as andaii |
| 16:33:28 | × | andai quits (~andai@86.32.39.178) (Ping timeout: 246 seconds) |
| 16:33:47 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 240 seconds) |
| 16:34:57 | × | eggplant_ quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:35:02 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:35:39 | → | hololeap joins (~hololeap@user/hololeap) |
| 16:36:11 | <hpc> | there's a joke about https://www.youtube.com/watch?v=RqTsUtQLRFk in there somewhere |
| 16:36:54 | × | wolfshappen quits (~waff@irc.furworks.de) (Quit: later) |
| 16:37:22 | → | wolfshappen joins (~waff@irc.furworks.de) |
| 16:40:33 | → | Kaiepi joins (~Kaiepi@156.34.47.253) |
| 16:43:11 | → | abiss27 joins (~abiss27@user/abiss) |
| 16:44:38 | → | phuegrvs[m] joins (~phuegrvsm@2001:470:69fc:105::1:65e4) |
| 16:45:18 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 272 seconds) |
| 16:46:45 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 16:47:37 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 16:49:18 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:51:50 | × | abiss27 quits (~abiss27@user/abiss) (Quit: hasta la vista... tchau!) |
| 16:53:02 | → | abiss27 joins (~abiss27@user/abiss) |
| 16:53:13 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:57:01 | <hololeap> | what was the magic to add to cabal.project.local so that you can point cabal to a package that exists locally, but not on hackage? |
| 16:57:57 | <hololeap> | point cabal to the source dir of dependency that isn't on hackage |
| 16:58:35 | <hpc> | https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-the-local-packages looks like |
| 16:59:54 | <hololeap> | yeah, I tried adding the line `packages: . ../parsable/`, but I get the error "TODO: add support for multiple packages in a directory." |
| 17:00:04 | → | cheater joins (~Username@user/cheater) |
| 17:01:30 | → | stackdroid18 joins (14094@user/stackdroid) |
| 17:02:15 | × | cheater quits (~Username@user/cheater) (Client Quit) |
| 17:02:30 | <hpc> | hmm |
| 17:02:57 | → | cheater joins (~Username@user/cheater) |
| 17:03:14 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:03:17 | <hpc> | oh, i was wrong |
| 17:03:19 | <hpc> | https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-extra-packages |
| 17:03:22 | <maerwald> | `packages: dir1 dir2` works |
| 17:03:33 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 17:03:58 | <maerwald> | hololeap: is there a cabal file in ../parsable/? |
| 17:04:49 | <hololeap> | yeah |
| 17:04:56 | <maerwald> | then that should work |
| 17:05:04 | → | zeenk joins (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) |
| 17:05:49 | Sqaure | is now known as Square |
| 17:07:18 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:07:37 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 17:08:36 | <hololeap> | yeah, I don't get it: http://sprunge.us/N0p7UW |
| 17:09:58 | <geekosaur> | what's in cabal.project? I think it might be combined with cabal.project.local |
| 17:10:00 | → | Enrico63 joins (~Enrico63@81.109.143.226) |
| 17:10:12 | <geekosaur> | the packages field at least |
| 17:10:47 | <hololeap> | there is no cabal.project file |
| 17:10:55 | <monochrom> | Is there ../cabal.project ? |
| 17:11:07 | <hololeap> | no |
| 17:11:35 | <sclv> | You should put all this in cabal.project, not cabal.project.local fwiw |
| 17:12:01 | <hololeap> | well, this is so I can develop without having to push parsable to hackage first |
| 17:12:49 | × | Enrico63 quits (~Enrico63@81.109.143.226) (Client Quit) |
| 17:14:15 | <maerwald> | hololeap: when you omit cabal.project, an implicit cabal.project will be used |
| 17:14:48 | <maerwald> | which is something like 'packages: ./*.cabal' I think |
| 17:15:11 | <hololeap> | oh, ok |
| 17:15:14 | × | Square quits (~a@user/square) (Quit: ZNC 1.6.3+deb1 - http://znc.in) |
| 17:15:27 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 17:15:37 | → | Square joins (~a@user/square) |
| 17:15:45 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:15:50 | <hololeap> | yeah, making a cabal.project with just "packages: ." and then "packages: ../parsable/" in cabal.project.local worked |
| 17:16:00 | → | Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
| 17:16:52 | <hololeap> | in fact, removing cabal.project and leaving cabal.project.local as that works as well |
| 17:16:56 | <hololeap> | thanks for the tip, maerwald |
| 17:17:57 | → | econo joins (uid147250@user/econo) |
| 17:23:50 | × | abiss27 quits (~abiss27@user/abiss) (Ping timeout: 240 seconds) |
| 17:26:14 | × | Josh quits (~Josh@216.154.3.96) (Quit: Connection closed) |
| 17:26:31 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 17:31:17 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 17:33:31 | <hololeap> | is there a way to use GeneralizedNewtypeDeriving for IsList? |
| 17:34:04 | <hololeap> | I don't see a way to define Item without making an instance block |
| 17:38:56 | → | zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) |
| 17:39:56 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 244 seconds) |
| 17:40:26 | → | zincy_ joins (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) |
| 17:41:15 | × | andaii quits (~andai@89.205.139.77) (Quit: Connection closed) |
| 17:44:07 | × | zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 240 seconds) |
| 17:47:48 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 17:47:50 | → | iqubic joins (~iqubic@2601:602:9502:c70:922d:79af:4ac2:afe3) |
| 17:48:46 | <iqubic> | Does anyone here use The Haskell Language Server? I'm running into this bug: https://github.com/haskell/haskell-language-server/issues/1971 |
| 17:49:04 | <geekosaur> | there's a #haskell-language-server channel |
| 17:49:14 | <iqubic> | I didn't know that. |
| 17:53:55 | × | ircbrowse_tom quits (~ircbrowse@2a01:4f8:1c1c:9319::1) (ZNC 1.7.5+deb4 - https://znc.in) |
| 18:10:02 | → | ircbrowse_tom joins (~ircbrowse@static.162.49.55.162.clients.your-server.de) |
| 18:10:02 | × | fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 260 seconds) |
| 18:10:05 | Server | sets mode +Cnt |
| 18:10:10 | → | defanor joins (~defanor@tart.uberspace.net) |
| 18:10:18 | → | bcoppens joins (~bartcopp@vpn2.bartcoppens.be) |
| 18:11:09 | × | madnight_ quits (~madnight@static.59.103.201.195.clients.your-server.de) (Ping timeout: 276 seconds) |
| 18:11:33 | → | madnight joins (~madnight@static.59.103.201.195.clients.your-server.de) |
| 18:11:39 | <Bulby[m]> | it's been 5 minutes and sinkLazy still hasn't finished |
| 18:12:10 | → | hexology joins (~hexology@user/hexology) |
| 18:13:34 | geekosaur | suspects the "lazy" part is relevant |
| 18:13:37 | × | zincy_ quits (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Remote host closed the connection) |
| 18:13:40 | × | toluene quits (~toluene@user/toulene) (Quit: The Lounge - https://thelounge.chat) |
| 18:13:49 | <Bulby[m]> | 😳 |
| 18:14:23 | <Bulby[m]> | well you see, toArchive wants a lazy bytestring |
| 18:15:22 | <geekosaur> | i.e. something has to demand it (via demanding the result of that extractFilesFromArchive, and quite possibly trying to access one of the extracted files won't be enough) |
| 18:15:55 | <Bulby[m]> | won't `toArchive` demand it |
| 18:16:06 | → | wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de) |
| 18:16:07 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 18:16:17 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 18:16:20 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 18:16:28 | <Bulby[m]> | altho it takes in a lazy bs |
| 18:16:39 | <geekosaur> | that, and it's pure |
| 18:16:48 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 18:16:49 | <Bulby[m]> | 😳 |
| 18:16:57 | <Bulby[m]> | and what does that mean |
| 18:17:08 | × | ncf quits (~n@monade.li) (Quit: Fairfarren.) |
| 18:17:09 | <geekosaur> | extractFilesFromArchive is in IO and can actually demand execution |
| 18:17:25 | → | ncf joins (~n@monade.li) |
| 18:17:28 | <geekosaur> | pure computations are more declarative, and inherently lazy |
| 18:17:45 | <Bulby[m]> | if |
| 18:17:46 | <Bulby[m]> | fllgihg; |
| 18:18:02 | <Bulby[m]> | so... |
| 18:18:08 | <Bulby[m]> | how would I fix this mess |
| 18:18:19 | <Lycurgus> | many matrix nicks, the final ... uh evolution |
| 18:19:27 | <geekosaur> | good question, I would have expected extractFilesFromArchive to demand it but apparently that's not enough. possibly because it's inside the conduit? my knowledge of conduit is pretty weak |
| 18:19:27 | <Bulby[m]> | I don't want to pull it all into memory - that would defeat the point of using conduit |
| 18:19:46 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt) |
| 18:20:33 | <geekosaur> | right, but extracting files may do so anyway, unless it's designed to work with conduit. but somehow I would expect not having to do that sink etc. in that case |
| 18:20:53 | <Bulby[m]> | hm, maybe I should try to find a zip conduit lib |
| 18:21:01 | <Bulby[m]> | instead of mashing them together |
| 18:22:13 | <Bulby[m]> | zip-stream looks promising (by promising I mean 3 entries below where I looked 🙃) |
| 18:22:35 | × | zeenk quits (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!) |
| 18:23:46 | <Bulby[m]> | oh, it does it in memory. I want to save |
| 18:25:35 | → | zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
| 18:26:11 | <geekosaur[m]> | And I wasn't even using mine! |
| 18:27:30 | <Bulby[m]> | i am going to commit murder |
| 18:27:32 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 252 seconds) |
| 18:27:38 | <Bulby[m]> | a good lib isn't on stack |
| 18:30:14 | <Bulby[m]> | how do I lookup packages on stackage |
| 18:30:53 | <Clint> | use the website |
| 18:31:16 | <Bulby[m]> | the website uses hoogle which is not very conveinent for looking up packages |
| 18:31:43 | <maerwald> | Bulby[m]: check out libarchive |
| 18:32:19 | <Bulby[m]> | argh! i don't want to use hoogle! I just want to find package |
| 18:32:24 | × | Infinite quits (~Infinite@49.39.123.254) (Ping timeout: 252 seconds) |
| 18:32:50 | <yushyin> | https://www.stackage.org/lts-19.7 ctrl-f |
| 18:32:52 | <yushyin> | ;D |
| 18:33:19 | <Bulby[m]> | i know that's probably a joke but it didn't work |
| 18:34:03 | × | nattiestnate quits (~nate@202.138.250.17) (Quit: WeeChat 3.5) |
| 18:34:16 | <Bulby[m]> | what is a package repo with no dedicated search feature? |
| 18:35:07 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 18:35:37 | × | zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
| 18:39:56 | <yushyin> | more of a joke since i don't use stack/stackage but nevertheless it should list all available packages for the lts-19.7, no? |
| 18:40:22 | <monochrom> | and pretty searchable by ctrl-f |
| 18:40:23 | <Bulby[m]> | well, it loads it while you scroll |
| 18:40:28 | <yushyin> | https://hackage.haskell.org/packages/browse?terms=%28distro%3AStackage%29 maybe this works better for you |
| 18:40:45 | <Bulby[m]> | \o/ |
| 18:42:33 | <Bulby[m]> | libarchive isn't on stack |
| 18:42:56 | × | ubert quits (~Thunderbi@p200300ecdf3b995b118dba1cd1127f24.dip0.t-ipconnect.de) (Quit: ubert) |
| 18:43:43 | <Bulby[m]> | zip-stream gives me flashbacks to haxe manually unzipping files |
| 18:44:02 | → | Kaipei joins (~Kaiepi@156.34.47.253) |
| 18:44:45 | <geekosaur> | there's a libarchive-conduit but it's like 8 years old and therefore unlikely to be in any recent stackage lts |
| 18:46:19 | <geekosaur> | oh, it's the wrong end of it |
| 18:46:35 | × | iqubic quits (~iqubic@2601:602:9502:c70:922d:79af:4ac2:afe3) (Quit: Client closed) |
| 18:46:59 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 18:47:11 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 18:48:10 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 272 seconds) |
| 18:51:51 | → | iqubic joins (~iqubic@2601:602:9502:c70:922d:79af:4ac2:afe3) |
| 18:52:35 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:56:09 | <maerwald> | Bulby[m]: so? Just add it |
| 18:57:45 | → | Guest60 joins (~Guest60@189.120.76.108) |
| 19:01:35 | × | Guest60 quits (~Guest60@189.120.76.108) (Client Quit) |
| 19:01:49 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 19:05:05 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 19:09:19 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 19:11:43 | → | michalz joins (~michalz@185.246.204.122) |
| 19:13:49 | × | bgamari quits (~bgamari@2001:470:e438::1) (Remote host closed the connection) |
| 19:16:33 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 19:18:01 | <maerwald> | sm: can you scrape project links from hackage DB? |
| 19:20:53 | <sm> | maerwald: yes! I'd like that to be one of the next data sets. I plan to poll the rss feed for new links, but any thoughts on the easiest way to download the full set ? |
| 19:21:15 | <maerwald> | you just download the actual hackage db and... dunno, parse it |
| 19:21:21 | <maerwald> | it's some obscure binary format though |
| 19:24:12 | → | coot joins (~coot@213.134.190.95) |
| 19:24:45 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 19:25:31 | × | xstill- quits (xstill@fimu/xstill) (Ping timeout: 256 seconds) |
| 19:25:31 | × | xsarnik quits (xsarnik@lounge.fi.muni.cz) (Ping timeout: 256 seconds) |
| 19:27:05 | <sm> | sounds.. gun |
| 19:27:19 | <sm> | oops, freudian slip. Fun. |
| 19:27:30 | <Bulby[m]> | footgun? |
| 19:27:53 | <sm> | bristling with footguns |
| 19:28:28 | × | sabry quits (~sabry@197.37.144.70) (Quit: Client closed) |
| 19:28:38 | <sm> | sclv, do you happen to know if there's an easier hackage api or snapshot for getting a list of package names ? |
| 19:29:15 | → | bgamari joins (~bgamari@2001:470:e438::1) |
| 19:29:30 | <Bulby[m]> | does conduit/req have a rate limit or is my internet comically bad |
| 19:30:58 | <geekosaur> | there's a rate limit (streamly is faster) but it's not *that* low |
| 19:31:26 | <Bulby[m]> | can I have a ballpark estimate of that rate limit |
| 19:31:56 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 19:32:58 | <geekosaur> | there isn't a fixed one |
| 19:33:12 | <geekosaur> | it's just not as fast as it might potentially be |
| 19:33:37 | <geekosaur> | (I don't have an estimate since my internet is throttled) |
| 19:36:34 | <Bulby[m]> | i'm getting ~0.1MB/howeverlong it takes pcmanfm to update |
| 19:37:03 | <geekosaur> | that seems *way* too slow |
| 19:37:14 | <Bulby[m]> | hmm |
| 19:39:08 | <Bulby[m]> | i'm running arch which doesn't do traffic shaping |
| 19:39:38 | sm | uploaded an image: (156KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/ibdBqSDgfQxvufJJFtGUccAM/image.png > |
| 19:39:56 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 19:40:00 | sm | uploaded an image: (380KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/FZemaZymqHBmxqOoOgelqjoC/image.png > |
| 19:40:00 | <Bulby[m]> | i thought images don't work on irc? |
| 19:40:29 | <sm> | ^ getting to the important stuff now |
| 19:40:34 | → | ubert joins (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de) |
| 19:40:40 | <sm> | they appear as links on irc |
| 19:40:57 | <hpc> | the matrix bridge translates it into a /me |
| 19:41:00 | <hpc> | * sm uploaded an image: (156KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/ibdBqSDgfQxvufJJFtGUccAM/image.png > |
| 19:41:15 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 19:41:23 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 19:41:47 | → | wroathe joins (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) |
| 19:41:47 | × | wroathe quits (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) (Changing host) |
| 19:41:47 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:41:59 | <Bulby[m]> | hm, i defo need to add a progress thing of some kind |
| 19:42:49 | → | jmd_ joins (~jmdaemon@user/jmdaemon) |
| 19:43:21 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds) |
| 19:43:32 | <Bulby[m]> | yeah lime (what I am downloading) is just absurdly large |
| 19:44:04 | <Bulby[m]> | switching to hscript which is ~40kb makes it happy |
| 19:45:44 | <Bulby[m]> | I assume my internet just sucks |
| 19:50:49 | × | ubert quits (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de) (Quit: ubert) |
| 19:51:16 | → | ubert joins (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de) |
| 19:52:15 | × | ubert quits (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de) (Client Quit) |
| 19:58:51 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 19:59:17 | <Bulby[m]> | cool cli libs \o/ |
| 19:59:19 | <Bulby[m]> | ? |
| 20:01:26 | <sclv> | sm maerwald the 01-index.tar.gz isnt an obscure binary format, its literally a tarball of cabal files |
| 20:02:19 | <sclv> | with the stipulation that when multiples of the same name exist, last one is most recent revision… which was designed into the spec of tarfiles back in the 70s even! |
| 20:02:26 | → | stackdroid18 joins (14094@de1.hashbang.sh) |
| 20:02:34 | <sm> | great, thanks sclv. Though large that sounds like the easiest source of package names then ? Do you remember the stable url ? |
| 20:03:14 | × | stackdroid18 quits (14094@de1.hashbang.sh) (Client Quit) |
| 20:03:19 | <sclv> | if you just want names, there’s other apis that might be easier too — follow the api link from hackage frontpqge |
| 20:03:31 | <sm> | will do, thanks |
| 20:04:05 | <sm> | https://hackage.haskell.org/api, this is great |
| 20:04:13 | <sclv> | im on my phone so can’t give stable url at the moment — the reason 01-index may be better is because its the Source of Truth for package data in general |
| 20:09:45 | <Bulby[m]> | for cli libs I will enact DO IT URSELF! |
| 20:11:46 | → | jgeerds joins (~jgeerds@d53604b0.access.ecotel.net) |
| 20:12:34 | → | notzmv joins (~zmv@user/notzmv) |
| 20:13:12 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:13:25 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 20:14:30 | <wroathe> | Hey guys, what would be the best way to do multiline strings for something like postgresql-simple? Like if I wanted multiline SQL for ease of reading |
| 20:14:51 | → | zincy joins (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) |
| 20:15:47 | <hpc> | https://stackoverflow.com/a/22919011 |
| 20:15:49 | <wroathe> | Oh, ignore me. Seems there's a quasi quoter available |
| 20:15:54 | <hpc> | heh, or that |
| 20:15:55 | <sm> | Bulby: for command line parsing I like cmdargs, others here like optparse-applicative. Both are complicated but powerful. There are lots of more limited but easier alternatives, like docopts |
| 20:15:58 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 244 seconds) |
| 20:16:06 | <geekosaur> | quasiquoter or string gaps, yeh |
| 20:16:36 | <sm> | docopt |
| 20:16:39 | <hpc> | string gaps have the nice benefit of allowing you to preserve the whitespace of both haskell and sql |
| 20:17:07 | <hpc> | the source code will be aligned with the surrounding function definitions, and the sql will be as if it started at column 0 with its own indentation intact |
| 20:17:26 | <hpc> | if you need to print it in an error message or similar |
| 20:17:48 | <Bulby[m]> | hm, I don't really like applicativeness |
| 20:17:53 | <Bulby[m]> | with no monad |
| 20:18:34 | → | acidjnk joins (~acidjnk@p200300d0c7068b4571401365c1036792.dip0.t-ipconnect.de) |
| 20:19:17 | × | abiss27 quits (~abiss27@user/abiss) (Quit: hasta la vista... tchau!) |
| 20:19:39 | <Bulby[m]> | so I guess cmdargs? |
| 20:21:55 | <sm> | this hackage api is great. Maybe could use hackage usernames as simple auth mechanism for voting. |
| 20:22:20 | <sm> | Bulby: if you want lots of flexibility, yes |
| 20:22:34 | <sm> | docopt if you want to get something going quickly with low boilerplate and don't mind a few rough edges |
| 20:25:48 | <Bulby[m]> | well I need subcommands (i.e. `nylon install`, `nylon info`) and switches + more args |
| 20:26:08 | <Bulby[m]> | are "modes" subcommands |
| 20:29:08 | <sm> | yes |
| 20:29:32 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:32:16 | <Bulby[m]> | hm, do I have to dip into `Explicit` to use them properly |
| 20:34:04 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 20:34:23 | <sm> | I'm not sure.. that's the one I use |
| 20:34:34 | <Bulby[m]> | noooo I want to use implicit |
| 20:34:53 | <sm> | I believe in you! |
| 20:34:58 | <Bulby[m]> | \o/ |
| 20:36:35 | → | dcleonarski joins (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) |
| 20:39:27 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 20:39:27 | <sm> | maerwald: I added the hackage packages (locally). That adds 16k rows to the current 1k table, and 5M to the page size, and makes the ui too slow on my fast laptop (m1) unfortunately. Some optimisations/restrictions and probably paging with ajax download will be needed I think. |
| 20:40:24 | <maerwald> | Bulby[m]: why would applicative not be enough? |
| 20:40:53 | <sm> | if anyone here can help with the necessary frontend changes, that would be most welcome |
| 20:41:02 | <maerwald> | you only need monads to dynamically change parsing... which also means you cannot really automatically derive a --help text |
| 20:41:34 | <Bulby[m]> | Idk, I just prefer monads |
| 20:42:01 | <maerwald> | that's a bad habit then |
| 20:42:13 | <Bulby[m]> | ☹️ |
| 20:42:42 | <geekosaur> | why would it even matter here |
| 20:42:48 | <Bulby[m]> | ur right I should just enable applicative do and get on with it |
| 20:42:59 | <maerwald> | uhm :D |
| 20:43:09 | <maerwald> | applicative do is quite confusing, good luck |
| 20:43:35 | <Bulby[m]> | I also dislike that it's named parser, when I am also using megaparsec |
| 20:44:54 | <sm> | well it's definitely a parsing task (and a tricky one) |
| 20:45:35 | × | vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...) |
| 20:46:11 | <Bulby[m]> | i feel like I'm choosing between two sports teams (or something similar) |
| 20:46:16 | <Bulby[m]> | no, picking the favorite child |
| 20:47:45 | <iqubic> | I'm having cabal errors here, in this cabal file. "cabal build" is telling me there's an unexpected "h" here on line 12. Why? https://github.com/IQubic/TinyMod4Haskell/blob/main/TinyMod4.cabal#L12 |
| 20:48:25 | × | dcleonarski quits (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) (Remote host closed the connection) |
| 20:49:32 | → | shriekingnoise joins (~shrieking@201.231.16.156) |
| 20:51:47 | <sm> | iqubic: it doesn't want the .hs part |
| 20:51:55 | <iqubic> | Thanks. |
| 20:53:34 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 272 seconds) |
| 20:53:50 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:54:38 | <Bulby[m]> | lol optparse doesn't make immediate sense either - neither of them do |
| 20:55:49 | → | MajorBiscuit joins (~MajorBisc@80.146.187.107) |
| 20:57:34 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 20:58:06 | → | Guest9028 joins (~Guest90@139.47.6.251) |
| 21:01:25 | → | hololeap joins (~hololeap@user/hololeap) |
| 21:01:44 | × | zincy quits (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Remote host closed the connection) |
| 21:02:43 | × | MajorBiscuit quits (~MajorBisc@80.146.187.107) (Quit: WeeChat 3.4) |
| 21:03:08 | <sm> | our last sports fans' discussion starts here: https://matrix.to/#/!hYueEvaBrsbfKxjshs:libera.chat/$8OBlk8aYRc2Gy3gamKHAuhnoMHi6Yxgcij1r0nFE2Sk |
| 21:03:31 | <Bulby[m]> | haha I don't think I existed then |
| 21:03:42 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds) |
| 21:03:59 | <Bulby[m]> | https://matrix.to/#/%23haskell%3Alibera.chat/%24qfXSiN9U5I40N0FbTeGEzUy8AdJI7ARu7vOPVN9kztE?via=matrix.org&via=libera.chat |
| 21:04:12 | <Bulby[m]> | yeah if it did exist I would jump to it |
| 21:04:13 | <Bulby[m]> | or nheko is being mean |
| 21:04:48 | <Bulby[m]> | element is the same and I think it's much more stable so 🤷 |
| 21:05:14 | <sm> | actually just search the channel for "cmdargs", it seems a bit spread out |
| 21:05:37 | <sm> | or try |
| 21:05:37 | <sm> | @where ircbrowse |
| 21:05:37 | <lambdabot> | https://ircbrowse.tomsmeding.com |
| 21:06:04 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 21:06:14 | <sm> | oh is that no longer updated tomsmeding ? my bad |
| 21:06:58 | <geekosaur> | you just got the landing page |
| 21:07:03 | <geekosaur> | https://ircbrowse.tomsmeding.com/browse/lchaskell |
| 21:07:34 | <sm> | oops I didn't notice the two #haskell links, clicked the wrong one |
| 21:07:44 | <geekosaur> | right, the other is from freenode |
| 21:07:47 | <Bulby[m]> | you can't search ☹️ |
| 21:07:56 | <sm> | consider putting those at the bottom tomsmeding ? |
| 21:07:56 | <geekosaur> | yes, search is disabled |
| 21:08:06 | <Bulby[m]> | disabled? |
| 21:08:17 | <geekosaur> | it requires full text indexing to work |
| 21:08:35 | <geekosaur> | which is something of an extra load |
| 21:08:41 | → | MajorBiscuit joins (~MajorBisc@80.146.187.107) |
| 21:08:45 | <Bulby[m]> | "something" |
| 21:09:38 | <sm> | despite the robots.txt excluding /browse, google does seem to index it: https://www.google.com/search?q=site%3Aircbrowse.tomsmeding.com |
| 21:10:01 | × | Guest9028 quits (~Guest90@139.47.6.251) (Quit: Client closed) |
| 21:10:02 | Kaipei | is now known as Kaiepi |
| 21:10:48 | <sm> | though not terribly well.. https://www.google.com/search?q=site%3Aircbrowse.tomsmeding.com+cmdargs |
| 21:11:34 | <sm> | actually, not bad when you click repeat the search with the omitted results included |
| 21:11:50 | <monochrom> | Have you considered System.Console.GetOpt? It comes with GHC. |
| 21:12:07 | <sm> | (I have been trying to figure out why google won't index the matrix logs at view.matrix.org, it's a big mystery) |
| 21:12:48 | <geekosaur> | I think they want subcommands |
| 21:13:09 | <Bulby[m]> | ^ |
| 21:16:02 | → | hololeap joins (~hololeap@user/hololeap) |
| 21:16:35 | <Bulby[m]> | not that I understand them 😉 |
| 21:17:40 | → | pavonia joins (~user@user/siracusa) |
| 21:18:51 | → | dcleonarski joins (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) |
| 21:27:01 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 21:29:24 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds) |
| 21:30:36 | × | phma quits (~phma@host-67-44-208-86.hnremote.net) (Read error: Connection reset by peer) |
| 21:31:04 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 21:31:09 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 21:31:28 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 21:33:58 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 21:34:34 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 21:36:42 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:41:40 | → | phma joins (~phma@host-67-44-208-253.hnremote.net) |
| 21:44:16 | × | phma quits (~phma@host-67-44-208-253.hnremote.net) (Read error: Connection reset by peer) |
| 21:48:19 | → | zeenk joins (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) |
| 21:48:27 | <Bulby[m]> | how can I parse a specific arg with cmdargs |
| 21:48:34 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 21:48:45 | <Bulby[m]> | i have a type that I have a megaparsec for, how do I use it with cmdargs |
| 21:50:26 | <sm> | maerwald: one issue is, hackage already does a good job of this: https://hackage.haskell.org/packages/search, https://hackage.haskell.org/packages/noscript-search |
| 21:52:17 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 256 seconds) |
| 21:53:39 | <maerwald> | sm: those are not project links |
| 21:54:12 | <maerwald> | I can't search for homepage |
| 21:54:37 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 21:54:50 | × | michalz quits (~michalz@185.246.204.122) (Remote host closed the connection) |
| 21:55:58 | <sm> | I guess I misunderstood your idea, I am working on links to the hackage package page - you'd like to see links directly to the home page or github repo eh |
| 21:56:48 | <sm> | I usually use the hackage page as my starting point, as it's reliable / in standard format.. |
| 21:57:17 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 21:58:15 | <maerwald> | yes, I mean homepage... I already have shortcuts for searching hackage |
| 21:58:58 | <sm> | Bulby: you give a parsing function as flagValue I think.. https://hackage.haskell.org/package/cmdargs-0.10.21/docs/System-Console-CmdArgs-Explicit.html#t:Update |
| 22:01:13 | <sm> | some examples here maybe: https://github.com/simonmichael/hledger/blob/master/hledger/Hledger/Cli/CliOptions.hs#L108 |
| 22:03:59 | → | xsarnik joins (xsarnik@lounge.fi.muni.cz) |
| 22:04:04 | → | xstill- joins (xstill@fimu/xstill) |
| 22:08:04 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:08:10 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 22:09:07 | → | yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
| 22:09:11 | × | ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 252 seconds) |
| 22:09:43 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 22:10:35 | × | benin quits (~benin@183.82.31.141) (Quit: The Lounge - https://thelounge.chat) |
| 22:12:26 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 22:12:34 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 22:12:34 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
| 22:12:40 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 22:12:50 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 22:13:33 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:13:37 | × | chomwitt quits (~chomwitt@2a02:587:dc1e:cc00:630a:df82:afd2:eb70) (Ping timeout: 260 seconds) |
| 22:14:22 | × | yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 22:14:38 | × | acidjnk quits (~acidjnk@p200300d0c7068b4571401365c1036792.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 22:17:32 | → | hololeap joins (~hololeap@user/hololeap) |
| 22:17:55 | → | stackdroid18 joins (14094@de1.hashbang.sh) |
| 22:20:39 | × | stackdroid18 quits (14094@de1.hashbang.sh) (Changing host) |
| 22:20:39 | → | stackdroid18 joins (14094@user/stackdroid) |
| 22:20:53 | → | toluene joins (~toluene@user/toulene) |
| 22:21:20 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 22:26:02 | × | Tuplanolla quits (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:28:47 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 22:29:10 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds) |
| 22:37:41 | → | ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
| 22:40:39 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:48:00 | → | P1RATEZ joins (piratez@user/p1ratez) |
| 22:50:44 | → | off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net) |
| 23:00:48 | <hololeap> | what are the chances of Apply ever making its way into base as a superclass of Applicative? |
| 23:01:26 | <geekosaur> | I think edwardk has said some things about it |
| 23:01:39 | × | MajorBiscuit quits (~MajorBisc@80.146.187.107) (Ping timeout: 240 seconds) |
| 23:03:21 | <geekosaur> | I think Apply by itself might work, but iirc breaking Applicative down into Apply and Pointed won't because there's a difference between `(Apply f, Pointed f)` => and `Applicative f =>` |
| 23:03:41 | <geekosaur> | sounded like a shortcoming of typeclasses to me |
| 23:03:51 | → | MajorBiscuit joins (~MajorBisc@80.146.187.107) |
| 23:03:58 | <geekosaur> | or of System Fc's approach to them maybe |
| 23:04:57 | <geekosaur> | oh, right, I remember. there may be many ways to be one, only one of which is valid for the other |
| 23:05:19 | <geekosaur> | (this was in particular about Pointed, but may also apply to Apply, pun not intended) |
| 23:06:20 | <geekosaur> | we have a law requiring Applicative and Monad instances to match, but that becomes more problematic the lower in the hierarchy you go because alternative instances are more likely to be useful |
| 23:06:39 | <jackdk> | Yeah but Apply on its own is really handy because it gives you instances for things like maps where you can't have `pure` |
| 23:09:27 | <zebrag> | System F strongly normalizing, so no fixed-point, right. But you must nevertheless be able to "iterate" over a recursive structure, like a list or an int? Is that "catamorphism"? How do you implement catamorphism in Haskell w/o general recursion? (I'm sure the question must have been answered many times, unless the answer is you can't) |
| 23:10:04 | × | MajorBiscuit quits (~MajorBisc@80.146.187.107) (Quit: WeeChat 3.4) |
| 23:10:12 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:10:16 | → | causal joins (~user@50.35.83.177) |
| 23:11:58 | <geekosaur> | zebrag, I don't understand that question unless you are restricting this to fixpoint implementations of recursion |
| 23:12:28 | <jackdk> | I think he means languages like Dhall, where you don't have general recursion but can fold over lists |
| 23:12:48 | <geekosaur> | but then I don't see what System F has to do with it |
| 23:12:56 | <geekosaur> | Dhall doesn't implement System F |
| 23:13:01 | <zebrag> | I think system F doesn't have general recursion |
| 23:13:15 | <geekosaur> | recursive *types*, no |
| 23:13:32 | <geekosaur> | *values* are a different question |
| 23:13:43 | <monochrom> | See Wadler's "recursive type for free!" https://homepages.inf.ed.ac.uk/wadler/topics/parametricity.html#free |
| 23:14:13 | <monochrom> | The gist though is that church encoding is already the catamorphism. |
| 23:14:15 | <zebrag> | but I think system F can't have a fixpoint operator at all |
| 23:14:42 | × | gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 276 seconds) |
| 23:14:43 | <zebrag> | yes, church encoding is the catamorphism |
| 23:14:48 | <zebrag> | okay got it |
| 23:14:51 | <geekosaur> | not directly. we go through a newtype |
| 23:15:11 | × | zeenk quits (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!) |
| 23:18:52 | × | xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 244 seconds) |
| 23:19:37 | × | P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection) |
| 23:22:20 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 23:22:20 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 23:22:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:23:01 | [_] | is now known as [itchyjunk] |
| 23:23:03 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:25:11 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 23:26:06 | × | off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 23:28:41 | → | stackdroid18 joins (14094@user/stackdroid) |
| 23:38:10 | × | joo-_ quits (~joo-_@fsf/member/joo--) (Ping timeout: 240 seconds) |
| 23:39:46 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:40:07 | → | joo-_ joins (~joo-_@80-62-117-27-mobile.dk.customer.tdc.net) |
| 23:40:07 | × | joo-_ quits (~joo-_@80-62-117-27-mobile.dk.customer.tdc.net) (Changing host) |
| 23:40:07 | → | joo-_ joins (~joo-_@fsf/member/joo--) |
| 23:43:36 | ← | drakonis parts (~drakonis@user/drakonis) (WeeChat 3.4) |
| 23:49:49 | → | benin joins (~benin@183.82.31.141) |
| 23:54:35 | → | cherries[m] joins (~cherriesm@2001:470:69fc:105::2:16c0) |
| 23:55:19 | × | jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds) |
| 23:57:15 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:94c1:4c92:9000:ac28) |
| 23:59:50 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
All times are in UTC on 2022-05-22.