Fork me on GitHub

I don't know what a monoid is.


A burrito with an astronaut in


that I can understand and makes sense.


@danieleneal cljsrn question - what's your android-app cold-start time like ? i'm considering what the next step with our app is, and whether cljsrn (which would be a relatively straightforward evolution) would give us the <1s cold-start times that many apps on android seem to achieve


@mccraigmccraig we are evaluating cordova, any major complaints?


@mccraigmccraig hmm the android version of the app is actually not working at the moment 😬 I did something incompatible at some point and we've been focusing on launching the iOS version so I haven't had the time to dedicate to get the android version up and running again. From memory, cold start time didn't seem too bad but I don't think it was sub second , but then I do have a video that needs to load on the very first screen.


very happy with the re-frame/react-native development experience though


@dominicm it's ok - build is straightforward-ish, and it's easy enough to target ios+android+web - cold-start time is kinda slow and some things are niggly - scrolling is hard to deal with and css transitions can be a bit janky


if RN had been viable when i started yapster i would probably have gone with it - but it only had an ios target at the time - now it has ios,android,web and even windows targets


We are put off by having to manage an osx build server


you are always going to have to run osx for xcode to package an ios app aren't you ?


@dominicm if you use expo you can run a 'build' command which will build on their servers which is great for CI. And the projects only contain js, no iOS or Android so you don't need xcode/mac for development


@danieleneal every time we revisit an app we made with expo, it doesn't work anymore


I think microsoft has something too for building but I'm not sure


Oh really? That's interesting


that's pretty cool


Bore da pawb welsh_flag


morning morning


hey hey, do people think this is a crime?

(defn vectorize [rf]
    ([]            [(rf) (rf)])
    ([[x y]]       [(rf x) (rf y)])       
    ([[x y] [a b]] [(rf x a) (rf y b)])))

(transduce (comp (map (juxt inc dec)) vectorize) + [0 0] (range 5))
[15 5]
Vectorize modifies the types over which the reducing function works and the map juxt bit ensures the range is of the right type.


I’m uncomfortable with modifying the type signatures….is vectorize really a transducer?


@mattford to be a transducer the 0 and 1 arity should propagate correctly downstream (for potential other transducers to pick up). See here for more info


Sorry scratch that, it seems to be doing that correctly.


Don’t see problems with that, interesting idea


@mattford: Not sure what you’re trying to do but it seems a bit weird, possibly complected to me. When you see + as the reducing function you expect it to be working on types of number, but the starting value is not a number [0 0]… Then there’s a dependency in the xform on vectorize knowing how to apply the rf, so there’s a lot of coupling here. I’d be tempted to move that stuff into the reducing function itself… and possibly extract a vectorizing reducing function builder that takes +… This said I don’t know what you’re trying to do / abstract etc… so take with a pinch of salt.


Morning Everyone 🙂


@maleghast are you there for the conj?


I'll be there in about 11 hours!


Er, make that eight hours. I can't timezone. Well, seven now I guess. See you in the bar of the Marriott this evening @maleghast?


Hey @seancorfield - I am not staying at the Marriott, but I may pop by to see you 🙂


If not I'll zero in on you tomorrow a.m.


Cool. I'm delayed in SFO -- equipment problems -- still hoping to get in early enough for 🍻


I'm not envious in the least 😉 Enjoy it!


@seancorfield - Looking forward to saying Hi!


@rickmoynihan Hi. I was actually seeing if I could do the first example from the redux library in a transducer only fashion..

(transduce identity (facet + [dec inc]) (range 5))

;; => [5 15]


that seems much cleaner to my eyes


as xform and rf don’t depend on each other


I wonder how much donut a man can eat w/o dying


it is cleaner to me to, but I couldn't' help feel that we had all the machinery in transducers to not have to do it


@otfrom is that a question or the start of a quest?

😂 4

@mattford I’m no expert but I think some operations are mapping ops (one at time), and some are reducing ops (folding multiple values into one). It seems like you’re trying to make mapping ops more like reducing ops… which you can of course do (because mapping is just another reduction with transducers), but it seems to do so you’re losing the separation of concerns which transducers bring… and I’m not sure what the benefit you’re getting is.


The redux example is cleanly separated because you can have an arbitrary xform on the sequence of ints. With yours, as far as I understand it, you can’t.


I wrote this gist (which I don't stand behind) about it.


I think your feeling is right though… but I think the feeling is because mapping is reducing with transducers… so yes you certainly do have the machinery to move the reduction about.


I think I shall abandon this line of thought as an interesting experiment.


It is interesting… and yes you certainly can mess with the semantics in transducers; and have them still be valid as they’re allowed to do a lot of things.