Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→ 502,152 events total
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.