mcclurmc has quit [Remote host closed the connection]
sheijk_ has quit [Quit: .]
justdit has joined #ocaml
justdit has left #ocaml []
ollehar has quit [Ping timeout: 260 seconds]
bicgena has joined #ocaml
<bicgena>
I'm curious, Jane Street is said to be the biggest commercial user of OCaml, but does anyone know if most of their stuff is written in it?
ocp has joined #ocaml
ttamttam has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 245 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 240 seconds]
ttamttam has quit [Quit: ttamttam]
snyp has joined #ocaml
csakatok_ has joined #ocaml
nikki93 has quit [Remote host closed the connection]
csakatoku has quit [Ping timeout: 265 seconds]
frx has joined #ocaml
ocp has quit [Ping timeout: 245 seconds]
nikki93 has joined #ocaml
snyp has quit [Quit: Leaving]
Kakadu has joined #ocaml
mcclurmc has joined #ocaml
so has quit [Ping timeout: 250 seconds]
mcclurmc has quit [Ping timeout: 265 seconds]
ygrek_ has joined #ocaml
divyansr has joined #ocaml
demonimin has joined #ocaml
ericbmer1itt has quit [Ping timeout: 245 seconds]
diginux_ has quit [Ping timeout: 245 seconds]
tristan_1 has quit [Ping timeout: 245 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest42570
Guest42570 has quit [Remote host closed the connection]
boogie has quit [Remote host closed the connection]
boogie has joined #ocaml
ericbmerritt has joined #ocaml
so has joined #ocaml
yacks has quit [Read error: Operation timed out]
boogie has quit [Ping timeout: 248 seconds]
nikki93 has quit [Remote host closed the connection]
diginux_ has joined #ocaml
tristan__ has joined #ocaml
shinnya has quit [Ping timeout: 246 seconds]
csakatok_ has quit [Remote host closed the connection]
csakatoku has joined #ocaml
mcclurmc has joined #ocaml
csakatoku has quit [Read error: No route to host]
nikki93 has joined #ocaml
csakatoku has joined #ocaml
groovy2shoes has quit [Quit: groovy2shoes]
nikki93 has quit [Ping timeout: 260 seconds]
mcclurmc has quit [Ping timeout: 260 seconds]
rand000 has joined #ocaml
Arsenik has joined #ocaml
skchrko has quit [Quit: Leaving]
milosn has quit [Ping timeout: 252 seconds]
kyrylo has joined #ocaml
milosn has joined #ocaml
milosn has quit [Ping timeout: 241 seconds]
nikki93 has joined #ocaml
milosn has joined #ocaml
Simn has joined #ocaml
mcclurmc has joined #ocaml
nikki93 has quit [Ping timeout: 240 seconds]
mcclurmc has quit [Ping timeout: 264 seconds]
avsm has joined #ocaml
milosn has quit [Ping timeout: 252 seconds]
ygrek_ has quit [Ping timeout: 265 seconds]
milosn has joined #ocaml
avsm has quit [Quit: Leaving.]
troydm has quit [Quit: What is hope? That all of your wishes and all of your dreams come true? (C) Rau Le Creuset]
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
troydm has joined #ocaml
mort___ has joined #ocaml
csakatoku has quit [Ping timeout: 245 seconds]
ttamttam has joined #ocaml
Hoyl has joined #ocaml
dant3 has joined #ocaml
milosn has quit [Ping timeout: 240 seconds]
dant3_ has joined #ocaml
dant3 has quit [Ping timeout: 252 seconds]
milosn has joined #ocaml
mort___ has quit [Quit: Leaving.]
dant3_ has quit [Remote host closed the connection]
dant3 has joined #ocaml
nikki93 has joined #ocaml
mcclurmc has joined #ocaml
ulfdoz has joined #ocaml
nikki93 has quit [Ping timeout: 264 seconds]
mcclurmc has quit [Ping timeout: 264 seconds]
milosn has quit [Ping timeout: 265 seconds]
milosn has joined #ocaml
dant3 has quit [Remote host closed the connection]
dant3 has joined #ocaml
dant3 has quit [Ping timeout: 245 seconds]
BitPuffin has joined #ocaml
kyrylo has quit [Ping timeout: 252 seconds]
ttamttam has quit [Quit: ttamttam]
yacks has joined #ocaml
ollehar has joined #ocaml
ygrek has joined #ocaml
dant3 has joined #ocaml
dant3 has quit [Read error: No route to host]
dant3 has joined #ocaml
nikki93 has joined #ocaml
dant3 has quit [Ping timeout: 252 seconds]
mcclurmc has joined #ocaml
nikki93 has quit [Ping timeout: 241 seconds]
milosn has quit [Ping timeout: 264 seconds]
mcclurmc has quit [Ping timeout: 260 seconds]
milosn has joined #ocaml
ygrek has quit [Ping timeout: 248 seconds]
rand000 has quit [Ping timeout: 264 seconds]
ygrek has joined #ocaml
<Kakadu>
hi
<companion_cube>
ho
<Kakadu>
where can I read how opam uses `depexts` section of config file?
<Kakadu>
(except sources)
<companion_cube>
I don't know...
rand000 has joined #ocaml
michael_lee has joined #ocaml
michael_lee has quit [Max SendQ exceeded]
michael_lee has joined #ocaml
Hoyl has quit [Ping timeout: 264 seconds]
jbrown has quit [Ping timeout: 240 seconds]
jbrown has joined #ocaml
milosn has quit [Ping timeout: 240 seconds]
jbrown has quit [Ping timeout: 248 seconds]
ontologiae has joined #ocaml
ygrek has quit [Remote host closed the connection]
ygrek has joined #ocaml
dant3 has joined #ocaml
milosn has joined #ocaml
ttamttam has joined #ocaml
rand000 has quit [Ping timeout: 240 seconds]
mcclurmc has joined #ocaml
zpe has joined #ocaml
ygrek has quit [Ping timeout: 264 seconds]
TDJACR has quit [Ping timeout: 264 seconds]
TDJACR has joined #ocaml
Kakadu_ has quit [Quit: Connection closed for inactivity]
mcclurmc has quit [Ping timeout: 248 seconds]
tane has joined #ocaml
Kakadu has quit []
dant3 has quit [Ping timeout: 260 seconds]
shinnya has joined #ocaml
rand000 has joined #ocaml
ygrek has joined #ocaml
dant3 has joined #ocaml
milosn has quit [Ping timeout: 240 seconds]
tovarish has joined #ocaml
plugwash_ has joined #ocaml
milosn has joined #ocaml
plugwash_ has quit [Read error: Connection reset by peer]
frxx has joined #ocaml
darkf_ has joined #ocaml
plugwash_ has joined #ocaml
frx has quit [Ping timeout: 240 seconds]
dsheets has quit [Ping timeout: 264 seconds]
mfp_ has quit [Ping timeout: 260 seconds]
darkf has quit [Ping timeout: 240 seconds]
frxx has quit [Client Quit]
milosn has quit [Ping timeout: 240 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 265 seconds]
mfp has joined #ocaml
milosn has joined #ocaml
dant3 has quit [Ping timeout: 265 seconds]
darkf_ has quit [Quit: Leaving]
ttamttam has quit [Quit: ttamttam]
rand000 has quit [Ping timeout: 240 seconds]
pminten has joined #ocaml
Xenasis has joined #ocaml
rand000 has joined #ocaml
snyp has joined #ocaml
milosn has quit [Ping timeout: 264 seconds]
mcclurmc has joined #ocaml
rand000 has quit [Ping timeout: 265 seconds]
milosn has joined #ocaml
dant3 has joined #ocaml
olasd has quit [Quit: leaving]
mcclurmc has quit [Ping timeout: 240 seconds]
olasd has joined #ocaml
olasd has quit [Remote host closed the connection]
olasd has joined #ocaml
watermind has joined #ocaml
dant3 has quit [Ping timeout: 260 seconds]
mort___ has joined #ocaml
tovarish has quit [Quit: Leaving]
<watermind>
did anyone's opam upgrade of re2 failed? "ERROR while upgrading to re2.109.55.00"
dsheets has joined #ocaml
<watermind>
also I'm rather confused about my present opam status, because after it failed I reverted to the previous state with the suggested "opam switch import" command
nikki93 has joined #ocaml
<watermind>
so I'd expect that "opam update && opam upgrade" would now restart the upgrading process, but alas it says I'm up to date
<companion_cube>
I think it's something like opam switch import -f /the/file/that/stores/previous/state
<watermind>
yet something appeared to be wrong since I don't even have core_extended anymore
<watermind>
companion_cube: yes I did that, but I don't understand what that accomplished because after that I still have no re2, nor core_extended that depends upon it
<watermind>
it doesn't seem to have restored anything
<companion_cube>
oh
<companion_cube>
well then I don't know, see with thomasga ;)
<watermind>
ok thanks companion_cube
dsheets has quit [Ping timeout: 264 seconds]
<watermind>
I'm trying to install with --debug
rand000 has joined #ocaml
zpe has quit [Remote host closed the connection]
<watermind>
oh shit
<watermind>
I know what's up
<watermind>
nevermind
watermind has quit [Quit: Konversation terminated!]
nikki93 has quit [Ping timeout: 252 seconds]
dsheets has joined #ocaml
rand000 has quit [Read error: Operation timed out]
dsheets has quit [Ping timeout: 248 seconds]
dant3 has joined #ocaml
pminten has quit [Quit: Leaving]
milosn has quit [Ping timeout: 240 seconds]
dant3 has quit [Remote host closed the connection]
dant3 has joined #ocaml
ttamttam has joined #ocaml
Arsenik has quit [Read error: Operation timed out]
milosn has joined #ocaml
w0rm_x has joined #ocaml
w0rm_x has quit [Max SendQ exceeded]
w0rm_x has joined #ocaml
w0rm_x has quit [Max SendQ exceeded]
ttamttam has quit [Ping timeout: 260 seconds]
w0rm_x has joined #ocaml
Arsenik has joined #ocaml
w0rm_x has quit [Max SendQ exceeded]
w0rm_x has joined #ocaml
w0rm_x has quit [Max SendQ exceeded]
rand000 has joined #ocaml
plugwash_ has quit [Ping timeout: 260 seconds]
mcclurmc has joined #ocaml
ontologiae has quit [Ping timeout: 248 seconds]
rand000 has quit [Ping timeout: 252 seconds]
ontologiae has joined #ocaml
milosn has quit [Ping timeout: 240 seconds]
milosn has joined #ocaml
mcclurmc has quit [Ping timeout: 240 seconds]
nikki93 has joined #ocaml
zpe has joined #ocaml
zpe has quit [Ping timeout: 265 seconds]
milosn has quit [Ping timeout: 240 seconds]
snyp has quit [Quit: leaving]
nikki93 has quit [Remote host closed the connection]
rand000 has joined #ocaml
milosn has joined #ocaml
spacun has joined #ocaml
talzeus has quit [Read error: Connection reset by peer]
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
plugwash_ has joined #ocaml
rand000 has quit [Ping timeout: 264 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest55020
rand000 has joined #ocaml
Kakadu has joined #ocaml
Hoyl has joined #ocaml
dsheets has joined #ocaml
Guest55020 has quit [Remote host closed the connection]
mcclurmc has quit [Remote host closed the connection]
plugwash_ has quit [Ping timeout: 241 seconds]
milosn has quit [Ping timeout: 264 seconds]
shinnya has quit [Ping timeout: 240 seconds]
ttamttam has joined #ocaml
ttamttam has quit [Client Quit]
michael_lee has quit [Quit: Ex-Chat]
Neros has quit [Ping timeout: 260 seconds]
Hoyl` has joined #ocaml
milosn has joined #ocaml
dant3 has quit [Remote host closed the connection]
Hoyl has quit [Ping timeout: 248 seconds]
pacemkr has joined #ocaml
<pacemkr>
hey everybody, im new to ocaml and have been trying to link with a static C library to no avail =( i must be missing something, ive sunk many hours into this
<pacemkr>
i've been trying to do this using oasis, then tried to use ocamlbuild straight up, tried forcing a link with —linkall and —custom, just wont budge, i end up with am "empty" library
rand000 has quit [Ping timeout: 260 seconds]
<pacemkr>
basically i want to link a c library, a single ml file that uses Ctypes to wrap it, and id like to package it all into an opam package
<adrien>
avoid using ocamlbuild directly if you want to link to C
lopex_ has joined #ocaml
<adrien>
you need at least another layer
<adrien>
I would go for oasis
<adrien>
(I'm the one who gave that link but I have some very particular requirements)
osa1 has joined #ocaml
<pacemkr>
i appreciate the link, thank you. i now suspect i might be linking the original C lib wrong, ill have to look at that.
bobry_ has joined #ocaml
diginux__ has joined #ocaml
milosn_ has joined #ocaml
esden_ has joined #ocaml
companion_square has joined #ocaml
dkg_ has joined #ocaml
esden has quit [Ping timeout: 240 seconds]
lopex has quit [Ping timeout: 240 seconds]
esden_ is now known as esden
_5kg_ has joined #ocaml
diginux_ has quit [Ping timeout: 240 seconds]
bobry has quit [Ping timeout: 263 seconds]
gereedy has quit [Ping timeout: 263 seconds]
tristan_1 has joined #ocaml
<adrien>
the best way to check is to build with:
lopex_ is now known as lopex
bitbckt has quit [Ping timeout: 240 seconds]
milosn has quit [Ping timeout: 240 seconds]
ggole has quit [Ping timeout: 240 seconds]
stomp has quit [Ping timeout: 240 seconds]
<adrien>
ocaml setup.ml | cat
lopho has quit [Ping timeout: 240 seconds]
bobry_ is now known as bobry
tov has quit [Ping timeout: 240 seconds]
dkg has quit [Ping timeout: 240 seconds]
ollehar has quit [Ping timeout: 240 seconds]
ulfdoz has quit [Ping timeout: 240 seconds]
tristan__ has quit [Ping timeout: 240 seconds]
_5kg has quit [Ping timeout: 240 seconds]
osa1__ has quit [Ping timeout: 240 seconds]
companion_cube has quit [Ping timeout: 240 seconds]
tov_ has joined #ocaml
bjorkintosh has quit [Ping timeout: 240 seconds]
<adrien>
(if you're using oasis)
mort___ has quit [Quit: Leaving.]
stomp has joined #ocaml
ollehar has joined #ocaml
gereedy has joined #ocaml
ulfdoz has joined #ocaml
ggole has joined #ocaml
bitbckt has joined #ocaml
lopex is now known as Guest35084
mort___ has joined #ocaml
lopho has joined #ocaml
bjorkintosh has joined #ocaml
bitbckt has quit [Changing host]
bitbckt has joined #ocaml
<whitequark>
I have a question for the type system wizards
<pacemkr>
adrien: thank you, ill try that
<whitequark>
I want to be able to describe data flow between components. Each component could be a function, (a Stream.t * b Stream.t * ...) -> (c Stream.t * ...), where a, b, c are some concrete types specific for the component
<whitequark>
I want to describe it externally to the OCaml program, in, say, JSON.
Guest35084 is now known as lopex_
Hoyl``` has joined #ocaml
<whitequark>
is there a way of safely instantiating such components from such a description without packing all stream elements into one huge type t = A of a | B of b | ... and then dynamically checking it on the boundaries?
<whitequark>
that is, I want the instantiator to check type safety once, upon instantiation.
nikki93 has joined #ocaml
<dsheets>
whitequark, known at compile time? you might use gadts with polymorphic variant parameters
<whitequark>
dsheets: what must be known at compile time?
<whitequark>
instantiation happens at runtime, and the description is variable
<whitequark>
(user-provided)
rand000 has joined #ocaml
<dsheets>
does anyone have suggestions for checking which libraries used in production of a binary don't have debug symbols on? I get a Not_found in String called from Cmdliner -- not helpful
nikki93 has quit [Read error: No route to host]
<dsheets>
whitequark, so how are you having access to the type system?
nikki93 has joined #ocaml
Hoyl```` has joined #ocaml
Hoyl`` has quit [Ping timeout: 260 seconds]
<whitequark>
dsheets: that's the question :) I thought there could be some kind of a trick, like there is with phantom types: type 'a t;; type foo;; val foo : foo t
<whitequark>
if I did instantiation via OCaml, I won't even need GADTs
Rc43 has joined #ocaml
<Rc43>
Hello.
<Rc43>
Am I right that type constructors in ocaml can have only one tuple argument?
<dsheets>
whitequark, sure, you can describe well-typed pipelines with gadts and polymorphic variants :-P but this is at compile-time... you could use something like metaocaml to get code-generated at run-time...
<ggole>
Type constructors can have any arity.
Hoyl``` has quit [Ping timeout: 240 seconds]
<ggole>
Note that in a type expression ('a, 'b) t, the ('a, 'b) is *not* a tuple.
<whitequark>
dsheets: I don't really need code generation. I mean, I could solve my problem with Obj.magic
<ygrek>
dsheets, objdump -h | grep debug_info on the .a corresponding to .cmxa
Neros has joined #ocaml
<Rc43>
ggole, I see syntax in manual "type name = ... | Namek of tk * ...* tl ...;;"; this constructor takes n arguments in _single_ tuple; can I do other?
dant3 has joined #ocaml
<ggole>
Oh, those are just normal constructors, not type constructors.
<Rc43>
ggole, the difference is in currying..
<Rc43>
ggole, oh, ye, I mistaked
<dsheets>
Rc43, that is a value constructor. Namek of t_1 * t_2 * .. * t_k differs from Namek of (t_1 * t_2 * .. * t_k)
<ggole>
So, there's two things: constructor arguments are not actually tuples (an efficiency hack)
<ggole>
And you can have multiple tuples as constructor arguments easily if you want that: Foo of (a * b) * (c * d)
<dsheets>
whitequark, so you'll have your own dynamic type checker and then use something like Marshal perhaps
<Rc43>
dsheets, ggole, so "Namek of t_1 * t_2 * .. * t_k" means that Namek :: t_1 -> t_2 -> ... -> t_k, right?
<ggole>
No, constructors are not functions in OCaml
<whitequark>
dsheets: or just Obj.magic in that case, I guess. Marshal is essentiallly just that, in my case
<Rc43>
ggole, then I can apply constructor only to full list of its arguemnts? I can't apply it only to some of them like in haskell?
<ggole>
That's right: you'll need a (trivial) wrapper for the second case.
<Rc43>
ggole, ok, now its clear; thanks
<ggole>
Say, (fun x -> Foo (1, x, 3))
<Rc43>
I just write code generator from sort of ocaml and was surprised that ast of constructor has only one argument
rand000 has quit [Ping timeout: 240 seconds]
dkg_ is now known as dkg
<whitequark>
does anyone actually use revised syntax?
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
BitPuffin has quit [Read error: Connection reset by peer]
BitPuffi1 has joined #ocaml
<ggole>
camlp4 uses it internally iirc
ygrek has quit [Ping timeout: 260 seconds]
mort___ has left #ocaml []
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
watermind has joined #ocaml
<dsheets>
don't you have to use revised syntax inside of ocaml camlp4 quotations?
<dsheets>
(in addition to internal to camlp4)
<ggole>
Don't think so
<ggole>
(I'm prepared to be wrong on that one though.)
<gasche>
you can use either, but revised syntax tends to be preferred because it is less ambiguous
<gasche>
(camlp4of vs. camlp4orf)
<gasche>
*camlp4oof
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
<gasche>
whitequark: Gérard Huet's code base uses revised syntax
<whitequark>
interesting. I was considering whether I should use revised syntax for my code
pacemkr has quit [Read error: Connection reset by peer]
<whitequark>
it's somewhat nicer, if opinionated, but no one else seems to use it...
pacemkr has joined #ocaml
<gasche>
and regarding your previous question on "runtime stream-processor type information", yes, you can use GADTs, but you will probably have to have a global list of possible (a,b,c,etc.) types somewhere
<whitequark>
gasche: a global list of possible types is not a problem
<whitequark>
but how would I use GADTs here?
dsheets has quit [Ping timeout: 264 seconds]
<gasche>
revised syntax is better on some things (curried type and value constructor arguments, bracketed matches) and worse on other (cons syntax for example)
<gasche>
overall I think it's not worth the confusion caused to other programmers
* whitequark
nods
<gasche>
I don't know what you mean by "instantiating such components", could you present a concrete example?
dant3 has quit [Remote host closed the connection]
<whitequark>
lines 6-9 is what I want to be able to move to some external configuration file
<whitequark>
I want to be able to specify the functions by names, and generally connect any logical inputs to any logical outputs
groovy2shoes has joined #ocaml
groovy2shoes has quit [Changing host]
groovy2shoes has joined #ocaml
<whitequark>
ok, let me elaborate on that
Hoyl````` has joined #ocaml
<whitequark>
gasche: I've updated the gist and added a JSON description of the same configuration
pacemkr has joined #ocaml
<pacemkr>
im back to square one
<pacemkr>
how do i specify a c static library as a dependency using oasis
<whitequark>
gasche: F5 it once more, I've fixed a typo
Hoyl```` has quit [Ping timeout: 260 seconds]
<whitequark>
gasche: I'm thinking it could work like this: when an element (e.g. { "kind": "generate", "id": "a" }) is parsed, it could be represented in OCaml by a tuple of a function with some generic signature ('a -> 'b ?), accompanied by a "cookie", a value which conveys some statement about the types via its existence
<hnrgrgr>
whitequark: probably the right things. Together with another GADT for 'packing' the existential.
snyp has joined #ocaml
<hnrgrgr>
I mean: "val parse: json -> data" where "type data = Pack: ('a Stream.t-> 'b Stream.t) * ('a, 'b) cookie".
<hnrgrgr>
and where "('a, 'b) cookie" is a GADT describing the type of stream from 'a to 'b.
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
<whitequark>
hnrgrgr: I'm not sure how I would define `cookie'
<hnrgrgr>
I would do: type ('a, 'b) cookie = Int_to_int: (int Stream.t, int Stream.t) cookie | Int_to_IntInt: (int Stream.t, int Stream.t * int Stream.t) cookie
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
strobegen1 has joined #ocaml
<whitequark>
so, a cookie describes the type of the "element". I would then need to write a function which matches over source and destination elements of the connection (and indexes), and write out each possible case
strobegen has quit [Ping timeout: 250 seconds]
<whitequark>
that sounds like a lot of boilerplate, but I'll try it
pacemkr has quit [Read error: Connection reset by peer]
<whitequark>
I think I could represent argument tuples with type-level "lists", e.g. (a * (b * c)), to reduce the number of possible combinations
pacemkr has joined #ocaml
<whitequark>
hnrgrgr: thanks!
<pacemkr>
this is driving me nuts, it shouldnt be this difficult...
BitPuffi1 has quit [Read error: Connection reset by peer]
BitPuffin has joined #ocaml
<pacemkr>
why is it such an impossible task to specify an extra .a file to the linker
<hnrgrgr>
whitequark: you're welcome. I added an exemple on your gist.
<hnrgrgr>
"cookie" should be predefined in the compiler, but that's another story.
<whitequark>
hnrgrgr: wow, that was quick
<whitequark>
by "predefined in the compiler" you mean I should know all possible types in advance ?
Hoyl````` has quit [Read error: Operation timed out]
BiDOrD_ has joined #ocaml
mcclurmc has joined #ocaml
<hnrgrgr>
I mean, including into "cookie" all the type required by your program is not an attractive effort.
<whitequark>
actually I'm fine with that, I would need it anyway for other reasons
<whitequark>
(say, serialization.)
tristero has quit [Ping timeout: 250 seconds]
jpdeplaix has quit [Ping timeout: 250 seconds]
BiDOrD has quit [Ping timeout: 250 seconds]
trystero has joined #ocaml
jpdeplaix has joined #ocaml
nikki93 has quit [Remote host closed the connection]
pacemkr has quit [Read error: Connection reset by peer]
<pacemkr>
hnrgrgr: i did actually, and ive used Ctypes with a library that i installed using brew successfully
<pacemkr>
however, now i have my own small libmine.a and i cant figure out how to link with it
snyp has quit [Read error: Connection reset by peer]
<pacemkr>
ie. its literally that one file, not in a known location, i just want to include it in my project straight up
<pacemkr>
so i have a single ml file, ctypes as dependency, and a libmine.a file and im trying to link it into a "cmxa" (?) that i can use in another project
<gasche>
whitequark: I've been busy coding you an example, sorry for not answering your last messages
<gasche>
uploading it right now
<whitequark>
gasche: hnrgrgr already wrote one, sorry you had to do extra work
<gasche>
mine is better :-'
pacemkr has quit [Read error: Connection reset by peer]
<whitequark>
gasche: show it :)
<hnrgrgr>
:)
<gasche>
does have much of the same information though
pacemkr has joined #ocaml
<gasche>
whitequark, hnrgrgr: pushed to gist
pacemkr has quit [Read error: Connection reset by peer]
anno has joined #ocaml
pacemkr has joined #ocaml
<pacemkr>
(keep getting disconnected)
<whitequark>
gasche: thanks, reading!
<gasche>
in fact the solutions are essentially similar
lopex_ is now known as lopex
<whitequark>
yes, they are even structured very similarly
<whitequark>
the Let/Apply/Dyn stuff is interesting.
<gasche>
whitequark: it's really a type-checker and interpreter for a simply-typed language
<gasche>
people complain that GADTs are only ever used to write embedded type-checker for languages; but that's because most problems are about just that
<gasche>
hnrgrgr: note how compact the code becomes when ('a, 'b) eq only has one constructor for checking purposes
<hnrgrgr>
yes, I noted that :)
<gasche>
I started with a Eq/Diff type but couldn't resist the pleasure of let-matching
nikki93 has joined #ocaml
<whitequark>
if you're curious, I'm currently planning out a backend for a graphical dataflow-based programming utility
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
Hoyl````` has joined #ocaml
<gasche>
whitequark: there wasn't much suspense once you gave an example of "stream composition"
<gasche>
(I've heard a talk about Faust recently, which is just that, and I've looked at PureData before)
<whitequark>
oh, fascinating
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
boogie has joined #ocaml
Rc43 has quit [Quit: Page closed]
nikki93 has quit [Remote host closed the connection]
nikki93 has joined #ocaml
<def-lkb>
whitequark: I started working on a similar project recently, though I don't have anything working atm
Xenasis has quit [Remote host closed the connection]
milosn_ is now known as milosn
nikki93 has quit [Ping timeout: 252 seconds]
pacemkr has quit [Read error: Connection reset by peer]
ontologiae has quit [Ping timeout: 245 seconds]
pacemkr has joined #ocaml
mfp has left #ocaml []
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
mfp has joined #ocaml
WraithM has quit [Quit: leaving]
<whitequark>
def-lkb: what would you use it for?
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
<def-lkb>
whitequark: I started working on a lib to (de)serialize, introspect and modify React graphs
<def-lkb>
whitequark: the goal is to provide an easy way to work "data" interleaved with code often found in multimedia applications (games, etc)
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
<def-lkb>
whitequark: I don't know how to describe that in better terms, but what I have in mind is e.g, the path an item as to follow in the menu of a game
<def-lkb>
this can be seen as a "float -> float * float" function of time
<def-lkb>
the library would lift that kind of data as a "float signal -> (float * float) signal" and let the user edit the actual function without the programmer having to worry
<def-lkb>
(user ~ designer)
<whitequark>
def-lkb: that is really interesting
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
Xenasis has joined #ocaml
mcclurmc has joined #ocaml
<gasche>
I'm not sure how often this really is "data rather than code"
<gasche>
in your example, I would imagine it could be easier for a design to hack something in an embedded Javascript/Lua script than declaratively express the animation
<whitequark>
gasche: you've done something really strange with the type of `generate'
<whitequark>
why is let generate : _ typed = (Fun (Unit, Stream Int), generate) a subtype of val generate : unit -> int stream ?
<adrien>
def-lkb: you've looked at too much stuff from Brett Victor
<adrien>
gasche too :p
<def-lkb>
adrien: I am not sure I agree :)
<gasche>
whitequark: it's not a subtype, I shadowed the previous definition with one at a different type
<gasche>
sorry for this being "too clever" for its own good
<whitequark>
gasche: ohhh, I see
<gasche>
(unrelated) found in a LightTable blog post " we've become the 3rd most popular editor for Clojure, being beaten only by Emacs and VIM"
<def-lkb>
gasche: and it's just an example, if you generalize to a menu with dozen of items, different scene… you prefer a visual editor that hacking some javascript (another example would be a skeleton based animation)
spacun has quit [Ping timeout: 240 seconds]
<adrien>
def-lkb: that was actually a weird way to say that you might be one of the first (if not the first) to deliver something non-trivial which makes it possible to do what he shows
<gasche>
I agree this looks tempting/useful/interesting
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
<def-lkb>
adrien: I don't really like his speech… He is promising the moon, hiding the fact that the real work is done in the editor
<adrien>
def-lkb: same here
<adrien>
and most things need to be coupled _very_ tightly
<def-lkb>
adrien: but I would like to actually offer something not that far… I made a PoC that is much less coupled
<adrien>
but with something like react it doesn't sound impossible to do
<adrien>
with JS however, it was clearly not possible
<def-lkb>
The trick is to reduce the expressivity of the surface language, so that the library can introspect and save the state of the graph in an intuitive way
<whitequark>
def-lkb: but you still need some kind of 'escape hatch' for any practical work
chturne has joined #ocaml
<gasche>
I like dmbarbour's ramblings on Lambda-the-Ultimate
<def-lkb>
(actually, in a previous work I used http://cocosbuilder.com/ : a timeline, a scenegraph, javascript interpreter for rapid prototyping… but the shape of the tree is fixed by their object model: if you stick to it, it's highly efficient, but as soon as you have to work on a more consistent game, you have to map game's concept to their model, and it get's messy)
<def-lkb>
whitequark: yes… the 'escape hatch' relies on conventions: you declare unique names, and if your extension satisfies library contracts it's almost transparent (with some hack to work-around lack of open types :)
<def-lkb>
gasche: thank's, it looks interesting
ulfdoz has quit [Ping timeout: 264 seconds]
<chturne>
Hi everyone ~ I'm having trouble with an error message, please may someone take a look at this paste : http://codepad.org/sXDpShMX
<chturne>
>< -- sorry, just realised I made a typo
<chturne>
Argh
Kakadu_ has joined #ocaml
demonimin has quit [Ping timeout: 252 seconds]
nikki93 has joined #ocaml
Kakadu has quit [Ping timeout: 248 seconds]
mcclurmc has quit [Remote host closed the connection]
<chturne>
With reference to my previous paste, why isn't the tracing mechanism picking up the calls from print_sexp_with_parens to print_sexp_with_parens_rest, but it is picking them up vice versa?
<gasche>
chturne: mutually recursive definitions should be let rec foo x = ... and bar x = ...
<gasche>
your definition of print_sexp_with_parens_rest refers to an *older* definition of print_sexp_with_parens, not the one below (which is traced)
<gasche>
I would recommend that you develop from an editor rather than the toplevel directly, to avoid this kind of issues (a clean failure would have been reported by Merlin's type-checking)
<gasche>
( def-lkb : this is also where a better merlin-toplevel integration could help )
<chturne>
Oh jesus, I've been wondering what I did wrong my recursive definitions for hours now :/
<chturne>
Haha
<def-lkb>
(gasche: can you point me dmbarbour's ramblings?)
<chturne>
I was eval'ing stuff from my Emacs buffer into utop. Guess that's not recommended? Haven't heard of Merlin, will check it out.
mcclurmc has joined #ocaml
<def-lkb>
gasche: I didn't forget your feature request… But I don't have as much time to develop as I would like :), sry
<gasche>
oh, it was not meant as a "reproche"
<chturne>
Merlin looks great, thanks gasche, I think this will be a big help for me.
<gasche>
"reproach" doesn't feel like casual english (it does exist as a word), I think "reprimand" would be about right in this context
milosn has quit [Ping timeout: 264 seconds]
pacemkr has quit [Read error: Connection reset by peer]
pacemkr has joined #ocaml
Hoyl````` has quit [Ping timeout: 245 seconds]
milosn has joined #ocaml
<gasche>
adrien: I didn't know about this "L language" you and drup discussed a blog post from
pacemkr has quit [Read error: Connection reset by peer]
<gasche>
looks potentially interesting
pacemkr has joined #ocaml
pacemkr has quit [Client Quit]
wolfnn has joined #ocaml
ulfdoz has joined #ocaml
<adrien>
gasche: we mentionned it because of the way it links to C libraries
<whitequark>
L indeed looks quite interesting
<adrien>
haven't had much time to look at the language thoguh
<gasche>
(I learned recently that the reddit algorithm is skewed towards links that get enough upvote during the first couple of hours of their link-life)
<adrien>
rather that if you get downvotes early, you won't be seen
ollehar has quit [Ping timeout: 240 seconds]
ollehar has joined #ocaml
watermind has quit [Remote host closed the connection]
watermind has joined #ocaml
Kakadu_ has quit []
gnuvince has quit [Ping timeout: 240 seconds]
gnuvince has joined #ocaml
gnuvince has quit [Changing host]
gnuvince has joined #ocaml
ahill-89 has joined #ocaml
kyrylo has joined #ocaml
spacun has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mort___ has joined #ocaml
Arsenik has quit [Remote host closed the connection]
victoriakiarys_5 has joined #ocaml
xkb has quit [Quit: Connection closed for inactivity]
victoriakiarys_5 has quit [Remote host closed the connection]
Neros has quit [Read error: Connection reset by peer]
Xenasis has quit [Remote host closed the connection]
boogie has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
milosn has quit [Ping timeout: 240 seconds]
milosn has joined #ocaml
ollehar has quit [Ping timeout: 248 seconds]
darkf_ has joined #ocaml
darkf_ has quit [Changing host]
darkf_ has joined #ocaml
strobegen1 has quit [Quit: Leaving.]
trystero is now known as tristero
darkf_ is now known as darkf
darkf has quit [Read error: Connection reset by peer]
<chturne>
Variant types: why does this function ~ http://codepad.org/ygJUNHdx ~ have the [< `Int of int ] type? I read that you should read the "<" symbol as "these types or less", but surely this function must accept /exactly/ the `Int type, so why isn't the type [ `Int of int ] ?
mcclurmc has quit [Remote host closed the connection]
darkf has joined #ocaml
dant3 has quit [Remote host closed the connection]
watermind has quit [Quit: Konversation terminated!]
watermind has joined #ocaml
watermind has quit [Client Quit]
watermind has joined #ocaml
Simn has quit [Quit: Leaving]
mcclurmc has joined #ocaml
<gasche>
chturne: think of more than one constructor
<gasche>
if you pattern-match on `A or `B, you get [< `A | `B ] -> ...
<gasche>
which means that you can call it with an input with type [` A ], [ `B ] or [ `A | `B ]
<gasche>
(or something polymorphic that can instantiate to some of those, such as [> `A ])
<gasche>
you can also call it with an input of type [ ], as in your [< `Int of int ] case, but that's an empty type so not terribly useful
<gasche>
(which is why the two-constructor example is more informative)
plugwash_ has joined #ocaml
<chturne>
Thanks gasche.
Neros has joined #ocaml
dsheets has joined #ocaml
tane has quit [Quit: Verlassend]
spacun has quit [Ping timeout: 248 seconds]
mcclurmc has quit [Read error: Connection reset by peer]