Logs: freenode/#haskell
| 2021-03-29 22:15:58 | <dibblego> | maybe that too; I'll write it after :) |
| 2021-03-29 22:16:02 | <sparsity> | the scrolldown threshold was too strong |
| 2021-03-29 22:16:49 | <sparsity> | it went from "whats a value" to cojibberish in the blink of an eye |
| 2021-03-29 22:17:05 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 2021-03-29 22:17:34 | <nij> | dibblego: so each object is a list of list of lists. |
| 2021-03-29 22:17:35 | <sparsity> | and the "heres what your trying to understand" was not placed before "lest make reference to a databasing example" |
| 2021-03-29 22:17:56 | <nij> | I might say plists.. they have many slots, and i need to read and write frequently |
| 2021-03-29 22:18:11 | <nij> | sometimes just to the memory, but also frequently to database. |
| 2021-03-29 22:20:14 | <sparsity> | "Before we get to an example, I want to talk about free prearrows" |
| 2021-03-29 22:20:25 | <mpickering> | yes sparsity, I get that completely. |
| 2021-03-29 22:20:26 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 2021-03-29 22:20:27 | <sparsity> | * never * do * this * |
| 2021-03-29 22:20:35 | <mpickering> | It's just the only reference I could find |
| 2021-03-29 22:20:37 | <monochrom> | I still don't understand, but perhaps the function that maps old object to new object is functional. |
| 2021-03-29 22:22:04 | <sparsity> | i think i managed to glean it has something to do with "strength" |
| 2021-03-29 22:22:25 | <sparsity> | "strenght of arrows enables static checking" |
| 2021-03-29 22:22:36 | <sparsity> | or so they say... |
| 2021-03-29 22:24:13 | <sparsity> | my mind is flipping a profunctor arrow back and forth and trying to see how this stops the graph of a program undergoing evaluation from tearing apart |
| 2021-03-29 22:25:46 | <sparsity> | "A profunctor is strong if it can freely pass unknown values through it without modification. This is represented by adding an input to the profunctor in a tuple, and adding that same type to the output in a tuple, allowing a value to safely pass through." |
| 2021-03-29 22:25:53 | <sparsity> | that explains the arrows link at least |
| 2021-03-29 22:26:49 | <sparsity> | "This lets you pass in anything you want to preserve after the computation is done" |
| 2021-03-29 22:27:11 | <sm[m]> | nij: is your choice of database restricted ? will it be postgres ? |
| 2021-03-29 22:27:32 | <sparsity> | right, so you can use profunctors to preserve the internals of some term rewriting process or something? |
| 2021-03-29 22:27:46 | × | malumore quits (~malumore@151.62.126.223) (Ping timeout: 268 seconds) |
| 2021-03-29 22:28:29 | <sparsity> | im sure this is just a convoluted axample of something much more simple |
| 2021-03-29 22:28:39 | <nij> | sm[m]: no. it's a general question. |
| 2021-03-29 22:28:57 | <nij> | I wonder what's the principle to stay functional, while needing to deal with dbs |
| 2021-03-29 22:29:19 | <sparsity> | ah, right, so strength is like fmapping into *part* of something |
| 2021-03-29 22:29:49 | <monochrom> | Do you think it's like lens but for database? |
| 2021-03-29 22:30:32 | <mpickering> | sparsity: It's not so complicated. A value of type `P a b` is a build rule which takes an `a` as input and `b` as output. Then various ways to compose these rules correspond to constructing a graph. |
| 2021-03-29 22:30:46 | <mpickering> | Which you can then recover by appropiately choosing how to interpret `P`. |
| 2021-03-29 22:31:06 | <monochrom> | Our current lens is a specification of where to dive into a complex immutable object for tinkering or reading. Perhaps there is an analogue for s/immutable object/mutable record/ |
| 2021-03-29 22:31:33 | <sparsity> | isnt mutability a hangup from worser languages? |
| 2021-03-29 22:31:51 | <monochrom> | I am not talking to you, sparsity. |
| 2021-03-29 22:32:11 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:a5da:1e25:ab26:50f2) |
| 2021-03-29 22:32:28 | <monochrom> | Unless you also want to deny nij's problem about accessing databases. |
| 2021-03-29 22:33:11 | × | Yumasi quits (~guillaume@static-176-175-104-214.ftth.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 2021-03-29 22:33:59 | <sparsity> | i think the way your pushing the idea of DBs in a way thats "idiomatic in a functional language" (or functorial or whatever it was being said like) to mean something like lenses as in a "pure" db, conflaiting that with mutability, is somewhat, droll |
| 2021-03-29 22:34:03 | <sm[m]> | nij: I think your question has some db dependence though. For working purely in-memory, the answer will probably be "use mutable vectors" or some such. If you need to store frequently in a db, the answer is probably "use postgres and a db abstraction layer of choice". |
| 2021-03-29 22:34:34 | <sm[m]> | in between, there is acid-state, a db you can write any haskell data type to, but it's generally not recommended. |
| 2021-03-29 22:35:18 | × | solidus-river quits (~mike@174.127.249.180) (Remote host closed the connection) |
| 2021-03-29 22:35:46 | <sparsity> | yeah, it gets confused around record accessors and generics |
| 2021-03-29 22:36:24 | <sparsity> | i would question if the memory managment abstractions of higher order languages alone almost make redundant some of these "traditional databasing" concerns |
| 2021-03-29 22:36:51 | × | niklasb quits (~niklasb@unaffiliated/codeslay0r) (Ping timeout: 252 seconds) |
| 2021-03-29 22:37:26 | <sparsity> | i guess its a problem of cross language integration essentially, so more like an FFI to any particular standard |
| 2021-03-29 22:37:43 | × | borne quits (~fritjof@200116b864978000f7ed9fd86a2491f0.dip.versatel-1u1.de) (Ping timeout: 276 seconds) |
| 2021-03-29 22:37:48 | <sclv> | as far as i know any serious db writes effectively its own memory manager |
| 2021-03-29 22:37:58 | <sclv> | no matter what language its written in |
| 2021-03-29 22:38:27 | <sclv> | for lightweight datastores you can get away without this, but at a certain scale of data you need a manager suited precisely to your abstractions and representation forms |
| 2021-03-29 22:38:40 | × | nuncanada quits (~dude@179.235.160.168) (Read error: Connection reset by peer) |
| 2021-03-29 22:38:48 | <sm[m]> | nij: there is a range of db abstraction libs on hackage, from simple (postgresql-simple) to convenient (yesod) to powerful (beam, opaleye and a bunch of others) - maybe these will give ideas |
| 2021-03-29 22:38:57 | <sclv> | very serious dbs effectively implement their own file system too |
| 2021-03-29 22:39:22 | <sparsity> | and can offer pretty bizzare language interfaces as a consequence |
| 2021-03-29 22:39:23 | <sclv> | its the closest in application systems programming i know of to needing to write an entire "mini-os" |
| 2021-03-29 22:39:47 | <sparsity> | yeah but we have all that these things offer |
| 2021-03-29 22:40:12 | <sparsity> | maybe they are more like fledgling programing language runtimes like the JVM or something |
| 2021-03-29 22:40:42 | <sparsity> | ie, legacy crap |
| 2021-03-29 22:41:14 | <sclv> | i should mention regarding the above discussion btw the "a la carte" approach https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems.pdf |
| 2021-03-29 22:41:26 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-03-29 22:41:48 | <sparsity> | you might lose some folklore by totally replacing the entire notion of DBs with better languages, but i doubt it would be too bad |
| 2021-03-29 22:43:54 | <sparsity> | the thing is, all of this stuff, all the libraries you want your build systems to be built on, its all slowly aiming towards being canonical and prinicpled |
| 2021-03-29 22:44:06 | <sparsity> | is there a fixed point? |
| 2021-03-29 22:44:27 | <sparsity> | is there tangible strength in diversity of styles? |
| 2021-03-29 22:44:43 | <ph88^> | does anyone know a good library to simplify symbolic (boolean) expressions ? |
| 2021-03-29 22:45:49 | <sparsity> | i guess you elucidate the fundamental structures of mathematical programming along the way, and that these then naturally form those fundamental canonical abstractions |
| 2021-03-29 22:46:08 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:f159:ca44:c706:a1d8) |
| 2021-03-29 22:46:24 | <sclv> | ph88^: i did this one back in the day and it still builds: https://hackage.haskell.org/package/boolsimplifier |
| 2021-03-29 22:46:43 | <ph88^> | nice sclv |
| 2021-03-29 22:46:44 | <monochrom> | neato |
| 2021-03-29 22:46:49 | <sclv> | the strategy it takes was specifically made to reduce obvious redundancy from machine generated expressions |
| 2021-03-29 22:47:02 | → | zjp joins (~zjp@66-45-138-104-dynamic.midco.net) |
| 2021-03-29 22:47:07 | <sclv> | its not like full featured propositional logic manipulation, so its not necc what you want for all purposes |
| 2021-03-29 22:47:24 | <sclv> | and the types are Somewhat Fancy just because that's what my collaborator wanted to do as an exercise |
| 2021-03-29 22:47:26 | <sparsity> | you get something similar in the structure of group automorphisms |
| 2021-03-29 22:47:50 | <sparsity> | i mean, logic is good too though |
| 2021-03-29 22:48:17 | <ph88^> | sclv, do you know how this class of programs is called ? i would also like to search for alternatives. ... But yours looks pretty nice at first glance :) |
| 2021-03-29 22:48:19 | <sparsity> | probably have to splice the two together somehow |
| 2021-03-29 22:48:24 | → | irc_user joins (uid423822@gateway/web/irccloud.com/x-tjmapcziuxjtvokq) |
| 2021-03-29 22:48:38 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds) |
| 2021-03-29 22:48:56 | × | molehillish quits (~molehilli@2600:8800:8d06:1800:6438:fe04:a25d:577) (Remote host closed the connection) |
| 2021-03-29 22:49:36 | <sclv> | ph88^: probably you'd look for "first order logic" or "propositional logic" |
| 2021-03-29 22:49:47 | <sparsity> | there are dualities in maths for various cannonicalisations |
| 2021-03-29 22:50:07 | <sclv> | there are approaches that might also use binary decision diagrams as in https://hackage.haskell.org/package/obdd |
| 2021-03-29 22:50:11 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 2021-03-29 22:50:15 | <sparsity> | matrix factorisation making a model for hierarchical decomposition of matter etc. |
| 2021-03-29 22:50:20 | → | molehillish joins (~molehilli@2600:8800:8d06:1800:b177:1e40:d97b:578c) |
| 2021-03-29 22:50:25 | <sparsity> | i dont get how programming uses logic though |
| 2021-03-29 22:50:47 | <sparsity> | combinatorics? |
| 2021-03-29 22:50:56 | <sparsity> | is everything some fundamental result of counting? |
| 2021-03-29 22:51:56 | <monochrom> | sparsity: Are you done? |
| 2021-03-29 22:51:59 | <sparsity> | i was reading about the factorisation of finite automata and how that relates to a higher order functional paradigm |
| 2021-03-29 22:52:30 | <dibblego> | I could do with some sparsity |
| 2021-03-29 22:52:34 | <sparsity> | monochrom: im trying to ask about this counting diagrams idea, and about graph isomporphic programs that are being discussed |
| 2021-03-29 22:53:06 | ChanServ | sets mode +o monochrom |
| 2021-03-29 22:53:09 | <sparsity> | i like how logic seems to solve this, but cant see how that fits in with other approaches to cannonicalisation |
| 2021-03-29 22:53:12 | monochrom | sets mode +b *!*@gateway/web/cgi-irc/kiwiirc.com/ip.92.233.85.251 |
| 2021-03-29 22:53:12 | sparsity | is kicked by monochrom (sparsity) |
| 2021-03-29 22:53:15 | fen | is kicked by monochrom (fen) |
| 2021-03-29 22:53:20 | monochrom | sets mode -o monochrom |
| 2021-03-29 22:53:21 | <sclv> | ph88^: there's libs like eg https://hackage.haskell.org/package/boolean-normal-forms but note that putting expressions in unique normal forms can make them far bigger. general "smallest expression" is np hard. so the lib i worked on tried to find a pragmatic procedure that usually worked |
All times are in UTC.