<companion_cube>
I'm not sure I see the difference with FRP
<def`>
no events, no state
<flux>
based on a different whitepaper?-)
<companion_cube>
def`: you mean it's all signal?
<def`>
handwavy yes
octachron has quit [Ping timeout: 248 seconds]
<companion_cube>
oh ok, there are mutable variables... with discrete changes, like events :p
<def`>
these are only inputs to the graph
<companion_cube>
yes
<companion_cube>
do they handle cycles?
<def`>
'with discrete changes' like signals
<def`>
I don't think so.
<def`>
I am not sure
<flux>
I think it's DAG-based.. but you can do changes withing change functions?
<def`>
(they veing Incr.t, not Var.t)
zpe has joined #ocaml
<def`>
change? change functions?
<def`>
You have conditionals, binds... Yes you can change the shape of the graph
<flux>
so I mean you can have bind a (fun x -> Var.change z 42; return y) ?
<companion_cube>
I wonder whether the tree of computations is a GADT :)
destrius has joined #ocaml
<def`>
no, variables are outside of the computation
<ggole>
Reminds me a bit of a spreadsheet
<ggole>
Except not as automatic (and obviously, not arranged in a grid).
ygrek has quit [Ping timeout: 246 seconds]
ia0 has quit [Quit: leaving]
octachron has joined #ocaml
ia0 has joined #ocaml
yomimono has joined #ocaml
ia0 has quit [Client Quit]
sgnb`` is now known as sgnb
ia0 has joined #ocaml
ia0 has quit [Client Quit]
ia0 has joined #ocaml
troydm has joined #ocaml
matason has joined #ocaml
thomasga has joined #ocaml
manud has joined #ocaml
yomimono has quit [Ping timeout: 250 seconds]
manud has quit [Ping timeout: 264 seconds]
kdas_ has quit [Ping timeout: 252 seconds]
mcclurmc has joined #ocaml
jonludlam has joined #ocaml
mcclurmc has quit [Ping timeout: 244 seconds]
x47 has joined #ocaml
Fleurety has joined #ocaml
creichert has quit [Ping timeout: 240 seconds]
hay207 has joined #ocaml
bernardofpc has joined #ocaml
Kakadu has joined #ocaml
Bhavya has quit [Quit: Quit the channel]
rand000 has joined #ocaml
amnn has joined #ocaml
yomimono has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 255 seconds]
Submarine has joined #ocaml
magical-imouto is now known as pyon
pyon is now known as magical-imouto
amnn has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
thomasga has quit [Quit: Leaving.]
amnn has joined #ocaml
magical-imouto is now known as pyon
mort___ has quit [Ping timeout: 255 seconds]
mort___ has joined #ocaml
<yminsky>
The spreadsheet analogy is apt
<yminsky>
not sure why it's less "automatic". It's also more dynamic.
<yminsky>
In a spreadsheet, you have a fixed universe of cells, and data flows along a graph you establish between them.
<yminsky>
With Incremental (or really, any self-adjusting computation library), the structure of the graph can change in response to data flow, via bind.
<yminsky>
companion_cube: Yes, the whole thing is built using GADTs. The change to GADTs was a big win both in terms of making the code cleaner and improving performance.
octachron has quit [Quit: Leaving]
<yminsky>
flux: you can allocate new incremental nodes in the RHS of a bind, but you shouldn't really write to variables in a bind. (It doesn't make things blow up, but your writes aren't propagated until the next round of stabilization.)
<yminsky>
companion_cube: incremental detects when you try to create a cycle and throws an exception.
<yminsky>
(It doesn't do anything clever and try to find a fixed point for your cycle...)
<ggole>
yminsky: you make explicit calls to "stabilize", right? With a SS the values just appear.
<ggole>
Not that I think explicit calls are a bad idea.
<yminsky>
Indeed. Though actually you can turn this automatic bit off in Excel, and then you press F9 to stabilize.
valli has joined #ocaml
<yminsky>
And really, in a spreadsheet, it runs stabilize on a clock, not on every change, for batching reasons. So it's really very close.
<ggole>
Mostly a UI thing, I suppose.
<yminsky>
Indeed.
<ggole>
I'm also reminded of a common lisp library called 'cells'
<yminsky>
Notably, stabilize of an unchanged graph only takes a few nanos, so you can run stabilize all the time in a background loop without material cost.
<ggole>
(Which was named after the spreadsheet element.)
<yminsky>
Interesting. Does it have the bind-like dynamism that lets you mint-and-destroy cells as part of the data propagation?
<yminsky>
That's a big part of what makes SAC work.
<ggole>
Yeah.
<ggole>
I never programmed seriously with that library, though...
<yminsky>
The claim in the papers is that it's a big step up from traditional SAC, but I don't quite understand the differences. Incremental, which we think of as mostly just an implementation of SAC, has (I think) all the properties they say Adapton provides. I probably just don't understand the paper well enough yet.
milosn has joined #ocaml
* ggole
reads the slides
<ggole>
Right, seems there's a strong common thread
<dmbaturin>
Even without generators, we can always resort to naming projects after animals. Bonus points if the animal in question has negative connotations in one or more languages.
hay207 has quit [Ping timeout: 246 seconds]
<Drup>
dmbaturin: special bonus point if the animal in question has the same pronunciation has something (more or less) offensive in another language.
<companion_cube>
:)
Denommus has joined #ocaml
Denommus has quit [Max SendQ exceeded]
struktured has quit [Ping timeout: 256 seconds]
BitPuffin has quit [Read error: Connection reset by peer]
oscar_toro has quit [Ping timeout: 252 seconds]
BitPuffin has joined #ocaml
jtfmumm has joined #ocaml
tane has joined #ocaml
ollehar has quit [Ping timeout: 250 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 265 seconds]
rom1504 has quit [Ping timeout: 252 seconds]
pleiosaur has quit [Remote host closed the connection]
pleiosaur has joined #ocaml
kushal has quit [Read error: Connection reset by peer]
rom1504 has joined #ocaml
ygrek has joined #ocaml
walter|r has joined #ocaml
zpe has joined #ocaml
amnn has quit [Ping timeout: 276 seconds]
oscar_toro has joined #ocaml
amnn has joined #ocaml
ygrek has quit [Ping timeout: 246 seconds]
darkf has quit [Quit: Leaving]
jonludlam has quit [Ping timeout: 250 seconds]
zpe has quit [Ping timeout: 276 seconds]
kushal has joined #ocaml
amnn has quit [Remote host closed the connection]
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
kdas_ has joined #ocaml
kushal has quit [Ping timeout: 252 seconds]
creichert has joined #ocaml
x47 has quit [Ping timeout: 265 seconds]
maufred_ has joined #ocaml
maufred_ has quit [Client Quit]
oscar_toro has quit [Ping timeout: 252 seconds]
sepp2k has quit [Quit: Leaving.]
sepp2k has joined #ocaml
sepp2k has quit [Client Quit]
sepp2k has joined #ocaml
MrScout has joined #ocaml
mort___ has quit [Ping timeout: 246 seconds]
MrScout has quit [Read error: Connection reset by peer]
MrScout has joined #ocaml
kdas_ has quit [Ping timeout: 265 seconds]
shinnya has joined #ocaml
MrScout has quit [Remote host closed the connection]
Rebelion has joined #ocaml
MrScout has joined #ocaml
MrScout has quit [Remote host closed the connection]
MrScout has joined #ocaml
mcclurmc has joined #ocaml
walter|r_ has joined #ocaml
walter|r has quit [Ping timeout: 276 seconds]
mcclurmc has quit [Ping timeout: 256 seconds]
jtfmumm has joined #ocaml
kdas_ has joined #ocaml
jonludlam has joined #ocaml
struktured has joined #ocaml
ygrek has joined #ocaml
thomasga has quit [Quit: Leaving.]
mcclurmc has joined #ocaml
struktured has quit [Ping timeout: 264 seconds]
Kakadu has quit [Quit: Page closed]
Denommus has joined #ocaml
hay207 has joined #ocaml
Submarine_ has joined #ocaml
Submarine_ has joined #ocaml
MercurialAlchemi has joined #ocaml
psy_ has quit [Read error: Connection reset by peer]
psy_ has joined #ocaml
oscar_toro has joined #ocaml
whirm has quit [Quit: WeeChat 1.2]
Haudegen has quit [Ping timeout: 256 seconds]
obadz has quit [Ping timeout: 276 seconds]
obadz has joined #ocaml
BitPuffin has quit [Ping timeout: 240 seconds]
Submarine has quit [Quit: Leaving]
Haudegen has joined #ocaml
soultadu has joined #ocaml
gpeterson1 has quit [Ping timeout: 250 seconds]
Kakadu has joined #ocaml
soultadu has left #ocaml ["Quit"]
ggole has quit []
ollehar has joined #ocaml
gpeterson1 has joined #ocaml
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
thomasga has joined #ocaml
luzie has quit [Read error: Connection reset by peer]
luzie has joined #ocaml
Hannibal_Smith has joined #ocaml
jtfmumm has joined #ocaml
soultadu has joined #ocaml
soultadu has left #ocaml ["Quit"]
soultadu has joined #ocaml
jonludlam has quit [Ping timeout: 252 seconds]
monod has joined #ocaml
walter|r_ has quit [Remote host closed the connection]
lobo has joined #ocaml
matason has quit [Ping timeout: 255 seconds]
gpeterson1 has quit [Ping timeout: 246 seconds]
uris77 has joined #ocaml
Haudegen has quit [Ping timeout: 265 seconds]
jwatzman|work has joined #ocaml
Haudegen has joined #ocaml
monod has quit [Ping timeout: 256 seconds]
xificurC has quit [Read error: Connection reset by peer]
xificurC has joined #ocaml
sh0t has quit [Ping timeout: 256 seconds]
thomasga has quit [Ping timeout: 246 seconds]
ollehar has quit [Ping timeout: 255 seconds]
hay207 has quit [Ping timeout: 240 seconds]
moei has quit [Quit: Leaving...]
oscar_toro has quit [Ping timeout: 256 seconds]
wraithm has quit [Quit: leaving]
jonludlam has joined #ocaml
gpeterson1 has joined #ocaml
ollehar has joined #ocaml
monod has joined #ocaml
lolisa has joined #ocaml
QuanticPotato has joined #ocaml
kdas_ has quit [Ping timeout: 240 seconds]
mort___ has joined #ocaml
<flux>
looking at eliom's types some concept of a 'type parameter record' starts sounding nice..
martintrojer has quit [Read error: Connection reset by peer]
<def`>
object type :P
<flux>
I don't think it solves this
<flux>
who's going to remember what a ('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j) Eliom_service.service means?
<flux>
but I guess one doesn't really need to deal with that a lot :)
gpeterson1 has quit [Ping timeout: 264 seconds]
martintrojer has joined #ocaml
thomasga has joined #ocaml
thomasga has quit [Client Quit]
gpeterson1 has joined #ocaml
soultadu has quit [Ping timeout: 246 seconds]
Denommus` has joined #ocaml
Denommus` has quit [Max SendQ exceeded]
thomasga has joined #ocaml
Denommus` has joined #ocaml
Denommus` has quit [Max SendQ exceeded]
Denommus` has joined #ocaml
Denommus` has quit [Max SendQ exceeded]
Denommus` has joined #ocaml
Denommus` has quit [Max SendQ exceeded]
thomasga has quit [Client Quit]
Denommus` has joined #ocaml
Denommus` has quit [Max SendQ exceeded]
thomasga has joined #ocaml
Denommus` has joined #ocaml
thomasga1 has joined #ocaml
brunob has joined #ocaml
thomasga has quit [Read error: Connection reset by peer]
brunob has quit [Client Quit]
onurb has joined #ocaml
QuanticPotato has quit [Ping timeout: 264 seconds]
Haudegen has quit [Ping timeout: 252 seconds]
QuanticPotato has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Haudegen has joined #ocaml
jtfmumm has joined #ocaml
QuanticPotato has quit [Ping timeout: 248 seconds]
Denommus` has quit [Ping timeout: 244 seconds]
QuanticPotato has joined #ocaml
Denommus has quit [Ping timeout: 256 seconds]
Denommus has joined #ocaml
matason has joined #ocaml
gpeterson1 has quit [Quit: WeeChat 1.1.1]
walter|r has joined #ocaml
walter|r has quit [Ping timeout: 246 seconds]
QuanticPotato has quit [Ping timeout: 264 seconds]
QuanticPotato has joined #ocaml
matason has quit [Ping timeout: 252 seconds]
ollehar has quit [Ping timeout: 265 seconds]
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Submarine_ has quit [Remote host closed the connection]
blAckEn3d has joined #ocaml
_andre has quit [Quit: leaving]
blAckEn3d has quit [Client Quit]
jtfmumm has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 256 seconds]
ceryo has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tane has quit [Quit: Verlassend]
monod has quit [Remote host closed the connection]
sh0t has joined #ocaml
ygrek has quit [Ping timeout: 256 seconds]
struktured has quit [Ping timeout: 252 seconds]
emanuelz has joined #ocaml
sheijk has quit [Remote host closed the connection]
kclancy has joined #ocaml
ollehar has joined #ocaml
<kclancy>
I have a question about debugging using ocamldebug. I would like to be able to use the print command to view the value of any variable. However, variables with abstract types print out as <abstr>, which isn't very helpful.
<kclancy>
Is there a way to use install_printer to work around this?
<kclancy>
I saw a newsgroup post which suggested that this is the case. However, it says that install_printer can't be used to install functions which are part of the program being debugged.
<kclancy>
How would I go about setting up the debugger so that I can view the values of variables with abstract types? I am willing to add new printing functions to my project if necessary.
emanuelz has left #ocaml [#ocaml]
<ollehar>
anyone made a type-inferring compiler?
<ollehar>
well, except ocaml ^^
<ollehar>
is it hard?
<ollehar>
must be a lot of docs available by now :P
<Drup>
It's not very hard
<Drup>
start by reading up on the W algorithm
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<Drup>
It's probably the simplest
<Drup>
(assuming polymorphism, but a language isn't worth it without)
jtfmumm has joined #ocaml
<ollehar>
ok
<ollehar>
I'm thinking about making a subset of PHP type-inferred, using parts of the hacklang compiler. mostly as an experiment, I suppose.
<Drup>
Ah
<Drup>
then it's more complicated
<ollehar>
hm
<Drup>
start by creating a type system for it, then you can think of infering types ...
<jwatzman|work>
ollehar: the Hack typechecker already does type inference, what more do you want to make type inferred? Do you want to do it across function boundaries too? You have to be very careful since PHP has implicit subtyping (and uses it *everywhere*), which makes total type inference undecidable
<ollehar>
I would be OK with a stricter subset of PHP.
<jwatzman|work>
ollehar: you'd have to remove subyping :-P
<ollehar>
that can still run on php hosting, of course
<jwatzman|work>
ollehar: You are also much better off with a more principled language than PHP and a more principled type system than the Hack typechecker
<jwatzman|work>
for learning
<Drup>
yeah
<Drup>
(efficient) type inference is already complicated enough on ML
<ollehar>
well, would a _very_ small subset of php be ok?
<ollehar>
say, beginning with just variables, math op and string concat?
<jwatzman|work>
ollehar: at that point, it's hardly PHP; you should use something more principled
<jwatzman|work>
i'd start with a minimal subset of *ML* instead
tnguyen has joined #ocaml
accidus_benartiu has joined #ocaml
walter|r has joined #ocaml
<ollehar>
what's implicit subtyping in php, btw?
accidus has joined #ocaml
<jwatzman|work>
class C {} class D extends C {} function f(C $x) {}
<jwatzman|work>
you can pass a D to f()
<ollehar>
ok, but that's the same thing as explicit coersion in ocaml, no?
<jwatzman|work>
inferring what the type of f() is, in the presence of no annotations, is undecidable in the general case (think classes implementing multiple interfaces)
tmtwd has quit [Ping timeout: 265 seconds]
<jwatzman|work>
ollehar: I think ocaml's is all *explicit*, which makes it work? I'm not an expert on this
<jwatzman|work>
(Hack is also explicit, in that it requires type annotations on function inputs/outputs, which is how we get away with it)
<ollehar>
ok, good point, did not now about this.
<jwatzman|work>
total type inference becomes undecidable if you sneeze wrong at your type system, features you think wouldn't matter make it undecidable.
tnguyen has quit [Client Quit]
<Drup>
"total type inference becomes undecidable if you sneeze wrong at your type system" :]
<jwatzman|work>
SML/OCaml were very very carefully constructed to make it decidable (and I think SML at least got it wrong, pretty sure there's undediibility in an obscure edge case). This is also why Haskell has so many weird type system options; most of them make inference undecidable in the general case
<bitemyapp>
although a lot of things work surprisingly well, such as Rank-2 inference
<bitemyapp>
work has been done to make inference for GADTs work most of the time as well. Kinda like how SAT solvers are tractable most of the time.
<jwatzman|work>
bitemyapp: yeah, which is why most real Haskell programs start with a laundry list of options enabled, and it's just fine :)
<jwatzman|work>
(I don't like undecidable type systems purely as a religious thing. :-P)
<Drup>
well, they also annotates everything
<Drup>
It's idiomatic in haskell to give types to every functions. not doing it raises a warning by default ...
lolisa has quit [Ping timeout: 248 seconds]
<Drup>
jwatzman|work: be very careful, there is undecidable *inference* and undecidable *checking*
<Drup>
haskell can be both.
<jwatzman|work>
Drup: yeah, I realize I'm kind of conflating them
<jwatzman|work>
which i really really shouldn't
<Drup>
one is terrible, the other is apocalyptic
<Drup>
bitemyapp: have you seen jacque garrigue's last article ? It's very interesting on this aspect
oscar_toro has joined #ocaml
<Drup>
jwatzman|work: we can still laugh at the fact that Rust's traits are turing complete :3
jtfmumm has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<ollehar>
gotta sleep, thanks for input!
ollehar has quit [Quit: ollehar]
Haudegen has quit [Ping timeout: 246 seconds]
x47 has joined #ocaml
ygrek has joined #ocaml
ollehar has joined #ocaml
<bitemyapp>
jwatzman|work: not most, not at all.
sepp2k has quit [Quit: Leaving.]
QuanticPotato has quit [Ping timeout: 256 seconds]
<bitemyapp>
jwatzman|work: a lot of the Haskell files in my 9-5 work have zero extensions, often they just have boring ones like OverloadedStrings
<ollehar>
jwatzman|work: function f(C $x) {} <--- but this function has annotation? isn't `C $x` enough?
sepp2k has joined #ocaml
<ollehar>
for another completely different question, why haven't anyone added llvm bindings to hacklang?
<ollehar>
(maybe wrong place to ask :) )
QuanticPotato has joined #ocaml
<ollehar>
if I pass object of type D (that extends C) to f(), it will try to coerce it; if it fails, it will throw compiler error.
<ollehar>
coerce it to C.
lobo has quit [Quit: leaving]
Haudegen has joined #ocaml
hay207 has joined #ocaml
moei has joined #ocaml
<ollehar>
ach, have to sleep. again.
ollehar has quit [Quit: ollehar]
QuanticPotato has quit [Ping timeout: 252 seconds]
QuanticPotato has joined #ocaml
ollehar has joined #ocaml
uris77 has quit [Quit: leaving]
cdidd_ has quit [Ping timeout: 265 seconds]
ollehar has quit [Quit: ollehar]
QuanticPotato has quit [Ping timeout: 255 seconds]
manud has joined #ocaml
Simn has quit [Quit: Leaving]
cdidd_ has joined #ocaml
swgillespie has joined #ocaml
MrScout has quit [Ping timeout: 248 seconds]
MrScout has joined #ocaml
walter|r has quit [Remote host closed the connection]
robink_ has joined #ocaml
jwatzman|work has quit [Quit: jwatzman|work]
waneck has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
robink_ has quit [Ping timeout: 244 seconds]
madroach has joined #ocaml
accidus has quit [Ping timeout: 240 seconds]
sh0t has quit [Ping timeout: 255 seconds]
accidus_benartiu has quit [Ping timeout: 276 seconds]
ollehar has joined #ocaml
walter|r has joined #ocaml
walter|r has quit [Ping timeout: 246 seconds]
MrScout has quit [Remote host closed the connection]
robink_ has joined #ocaml
Kakadu has quit [Remote host closed the connection]