Logs: freenode/#haskell
| 2020-11-18 17:05:20 | → | stree joins (~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net) |
| 2020-11-18 17:05:25 | <maerwald> | I remember this is a problem in "real-time" ads bidding I think |
| 2020-11-18 17:05:40 | → | nuncanada joins (~dude@179.235.160.168) |
| 2020-11-18 17:05:41 | <tdammers> | oh yes |
| 2020-11-18 17:05:42 | <p0a> | maerwald: my opinion is not molded by experience or shapen by facts, just something I conjured out of thin air. :P |
| 2020-11-18 17:05:53 | <tdammers> | I definitely wouldn't use Haskell for the tight parts of that |
| 2020-11-18 17:06:16 | <tdammers> | although the parallel GC could probably do it just fine, but it's still kind of icky that reasoning about perf in Haskell is so bloody hard |
| 2020-11-18 17:06:26 | <maerwald> | tdammers: could write it in rust, make a nice C interface and use it in haskell |
| 2020-11-18 17:06:42 | <tdammers> | yeah, write it in whatever performs well enough, and then orchestrate it from Haskell |
| 2020-11-18 17:06:50 | <tdammers> | C, C++, rust, golang, whatever |
| 2020-11-18 17:07:04 | <maerwald> | but a more reasonable assumption might be: their CTO fled the country :p |
| 2020-11-18 17:07:10 | <tdammers> | yeah |
| 2020-11-18 17:07:18 | <tdammers> | IME, it's usually unreasonable expectations |
| 2020-11-18 17:07:21 | <maerwald> | and they were left with an esoteric haskell stack and one junior dev |
| 2020-11-18 17:07:36 | <boxscape> | oh no I upgraded to ghc 8.10 and now the type level code I spent today writing doesn't work anymore |
| 2020-11-18 17:07:38 | <tdammers> | yep. the "unreasonably enthusiastic junior dev" problem |
| 2020-11-18 17:08:00 | hackage | array-chunks 0.1.2.0 - Lists of chunks https://hackage.haskell.org/package/array-chunks-0.1.2.0 (andrewthad) |
| 2020-11-18 17:08:25 | <idnar> | is there something like `take` that takes from the end? |
| 2020-11-18 17:08:38 | → | alp joins (~alp@88.126.45.36) |
| 2020-11-18 17:08:41 | <maerwald> | not lazily |
| 2020-11-18 17:08:42 | <maerwald> | :p |
| 2020-11-18 17:08:54 | <merijn> | :t \n -> reverse . take n . reverse -- *ducks* |
| 2020-11-18 17:08:55 | <lambdabot> | error: |
| 2020-11-18 17:08:55 | <lambdabot> | Ambiguous occurrence ‘reverse’ |
| 2020-11-18 17:08:55 | <lambdabot> | It could refer to |
| 2020-11-18 17:09:03 | <merijn> | wut |
| 2020-11-18 17:09:05 | <merijn> | @undefine |
| 2020-11-18 17:09:05 | <lambdabot> | Undefined. |
| 2020-11-18 17:09:09 | <merijn> | :t \n -> reverse . take n . reverse -- *ducks* |
| 2020-11-18 17:09:11 | <lambdabot> | Int -> [a] -> [a] |
| 2020-11-18 17:09:30 | <maerwald> | that's probably fine for small lists |
| 2020-11-18 17:09:37 | <tdammers> | https://hackage.haskell.org/package/extra-1.7.8/docs/Data-List-Extra.html#v:takeEnd |
| 2020-11-18 17:09:52 | <merijn> | maerwald: For big ones to if you do it infrequently enough :p |
| 2020-11-18 17:10:05 | → | hidedagger joins (~nate@unaffiliated/hidedagger) |
| 2020-11-18 17:10:15 | <tdammers> | for very big ones, "infrequently enough" means "once per universe" |
| 2020-11-18 17:10:42 | <boxscape> | not even that if you're dealing with [0..] |
| 2020-11-18 17:10:49 | × | hidedagger quits (~nate@unaffiliated/hidedagger) (Client Quit) |
| 2020-11-18 17:10:55 | <boxscape> | unless you count a non-terminating evaluation as "once" |
| 2020-11-18 17:11:20 | <tdammers> | right yeah, if you don't need it to terminate, then you can spawn as many of these as you want |
| 2020-11-18 17:11:44 | <maerwald> | You add RAM as you go |
| 2020-11-18 17:12:24 | <p0a> | that's what scalable means |
| 2020-11-18 17:12:37 | <idnar> | oh I need it reversed anyway and I'm starting with a Map so toDescList + take |
| 2020-11-18 17:13:03 | <hekkaidekapus> | If the list is finite, see also Data.Sequence. |
| 2020-11-18 17:13:08 | <p0a> | What is an example of a simple monad transformer? |
| 2020-11-18 17:13:24 | <maerwald> | p0a: none |
| 2020-11-18 17:13:30 | <idnar> | IdentityT :P |
| 2020-11-18 17:13:44 | <maerwald> | but there are plenty examples of non-simple transformers :p |
| 2020-11-18 17:13:49 | <p0a> | are monad transformers like natural transformations? |
| 2020-11-18 17:13:58 | <tdammers> | there's this concept of theoretical size of information, I don't remember the details, but the idea is to calculate how small you could theoretically make a data store for a given amount of information until you hit the limitations of the speed of light (or quantum physics? it's been a while) |
| 2020-11-18 17:14:14 | × | st8less quits (~st8less@2603:a060:11fd:0:d56c:a5ec:de50:ff91) (Quit: WeeChat 2.9) |
| 2020-11-18 17:14:17 | <tdammers> | which implies that the amount of information that can be stored in a finite universe is also finite |
| 2020-11-18 17:14:48 | <koz_> | Something something Bekenstein bound. |
| 2020-11-18 17:14:54 | <maerwald> | p0a: check out ExceptT, most other transformers are non-sense anyway |
| 2020-11-18 17:14:55 | × | ggole quits (~ggole@2001:8003:8119:7200:f828:bf:5160:1d23) (Quit: Leaving) |
| 2020-11-18 17:15:23 | <p0a> | maerwald: thank you |
| 2020-11-18 17:16:01 | hackage | json-syntax 0.1.2.0 - High-performance JSON parser and encoder https://hackage.haskell.org/package/json-syntax-0.1.2.0 (andrewthad) |
| 2020-11-18 17:16:08 | <tdammers> | maerwald: ExceptT Dynamic RWST Dynamic Dynamic Dynamic IO, a.k.a. the "I give up" monad |
| 2020-11-18 17:16:16 | → | jakob_ joins (~textual@p200300f49f162200855785b1c0c4761c.dip0.t-ipconnect.de) |
| 2020-11-18 17:16:38 | → | ubert1 joins (~Thunderbi@p200300ecdf1e53a7e6b318fffe838f33.dip0.t-ipconnect.de) |
| 2020-11-18 17:17:01 | hackage | say-my-name 0.1.0.0 - Require explicit type application for some type variables. https://hackage.haskell.org/package/say-my-name-0.1.0.0 (mnoonan) |
| 2020-11-18 17:18:07 | × | ubert quits (~Thunderbi@p200300ecdf1e53c9e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 2020-11-18 17:18:08 | ubert1 | is now known as ubert |
| 2020-11-18 17:18:18 | <maerwald> | at least we can say that the design space of monads has been exhaustively researched in haskell |
| 2020-11-18 17:18:57 | <maerwald> | many tears have been shed, but it is what it is |
| 2020-11-18 17:20:12 | × | ericsagn1 quits (~ericsagne@2405:6580:0:5100:53e4:af5e:8890:d6d0) (Ping timeout: 260 seconds) |
| 2020-11-18 17:20:47 | <koz_> | maerwald: Press F in chat for monads. |
| 2020-11-18 17:22:05 | × | ubert quits (~Thunderbi@p200300ecdf1e53a7e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 2020-11-18 17:23:29 | → | ubert joins (~Thunderbi@p200300ecdf1e53a7e6b318fffe838f33.dip0.t-ipconnect.de) |
| 2020-11-18 17:24:05 | <int-e> | > let ekat n xs = last $ zipWith const (replicate n xs ++ tails xs) (tails xs) in map (ekat 3) ["", "ab", "abc", "abcd"] |
| 2020-11-18 17:24:07 | <lambdabot> | ["","ab","abc","bcd"] |
| 2020-11-18 17:24:49 | <int-e> | . o O ( cotake ) |
| 2020-11-18 17:25:00 | hackage | array-builder 0.1.1.0 - Builders for arrays https://hackage.haskell.org/package/array-builder-0.1.1.0 (andrewthad) |
| 2020-11-18 17:25:47 | → | Tario joins (~Tario@201.192.165.173) |
| 2020-11-18 17:25:48 | → | random joins (~random@46.254.129.126) |
| 2020-11-18 17:25:50 | → | geekosaur joins (82659a09@host154-009.vpn.uakron.edu) |
| 2020-11-18 17:26:00 | <random> | hey guys |
| 2020-11-18 17:26:20 | <random> | is there a way to get all types used by a Servant API? |
| 2020-11-18 17:26:23 | <random> | like, a ready made library or something? |
| 2020-11-18 17:27:39 | × | Ariakenom quits (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
| 2020-11-18 17:28:18 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-11-18 17:28:19 | × | knupfer quits (~Thunderbi@200116b8244bd600953b9562e9fc25b9.dip.versatel-1u1.de) (Remote host closed the connection) |
| 2020-11-18 17:28:27 | → | knupfer joins (~Thunderbi@200116b8244bd600859a1b799407ebc4.dip.versatel-1u1.de) |
| 2020-11-18 17:30:14 | <texasmynsted> | Could with write what you can in Haskell and what you must, in C/Rust. |
| 2020-11-18 17:30:28 | <texasmynsted> | oh yikes. I missed much scrollback |
| 2020-11-18 17:31:20 | <maerwald> | Yeah, I think exploring rust and haskell in a single stack is interesting. |
| 2020-11-18 17:31:22 | <idnar> | does `Scientific` preserve trailing zeroes? |
| 2020-11-18 17:31:36 | → | cgfuh joins (~cgfuh@181.167.191.58) |
| 2020-11-18 17:32:06 | → | ericsagn1 joins (~ericsagne@2405:6580:0:5100:b570:65da:9eeb:ab03) |
| 2020-11-18 17:33:07 | <texasmynsted> | Yes, that is my plan at least |
| 2020-11-18 17:33:18 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 2020-11-18 17:33:25 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 2020-11-18 17:33:49 | → | Ariakenom joins (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) |
| 2020-11-18 17:35:30 | <texasmynsted> | I tried two almost the same projects. One in Haskell and one in Rust. Just to see how they feel and compare. Rust feels verbose and awkward when encountering complexity. |
| 2020-11-18 17:35:33 | <merijn> | idnar: Probably not |
| 2020-11-18 17:36:23 | <texasmynsted> | But when getting closer to the metal language options shrink dramatically. |
| 2020-11-18 17:37:02 | × | Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Remote host closed the connection) |
| 2020-11-18 17:37:13 | × | cgfuh quits (~cgfuh@181.167.191.58) (Quit: WeeChat 2.9) |
| 2020-11-18 17:37:26 | → | cgfuh joins (~cgfuh@181.167.191.58) |
| 2020-11-18 17:38:14 | × | jonatanb quits (~jonatanb@83.24.155.27.ipv4.supernova.orange.pl) (Quit: Leaving...) |
| 2020-11-18 17:40:08 | <merijn> | Pet peeve "C is not close to the metal" |
All times are in UTC.