flux changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | OCaml 4.01.0 http://bit.ly/1851A3R | http://www.ocaml.org | Public logs at http://tunes.org/~nef/logs/ocaml/
w0rm_x has quit [Client Quit]
w0rm_x has joined #ocaml
w0rm_x has left #ocaml []
tane has quit [Quit: Verlassend]
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 246 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
amirmc has joined #ocaml
<whitequark> jpdeplaix: it's done when it is needed...
amirmc has quit [Ping timeout: 272 seconds]
nikki93 has joined #ocaml
michael_lee has joined #ocaml
milosn_ has joined #ocaml
milosn has quit [Ping timeout: 246 seconds]
tntnt has quit [Ping timeout: 245 seconds]
tntnt has joined #ocaml
ollehar has quit [Ping timeout: 245 seconds]
amirmc has joined #ocaml
kyrylo has quit [Ping timeout: 245 seconds]
amirmc has quit [Ping timeout: 245 seconds]
tntnt_ has joined #ocaml
tntnt has quit [Ping timeout: 252 seconds]
tntnt_ is now known as tntnt
nikki93 has quit [Remote host closed the connection]
pango has quit [Ping timeout: 245 seconds]
nikki93 has joined #ocaml
nikki93 has quit [Remote host closed the connection]
nikki93 has joined #ocaml
nikki93 has quit [Remote host closed the connection]
nikki93 has joined #ocaml
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 272 seconds]
pango has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
tntnt_ has joined #ocaml
mcclurmc has joined #ocaml
tntnt has quit [Ping timeout: 246 seconds]
tntnt_ is now known as tntnt
Xenasis has quit [Remote host closed the connection]
mcclurmc has quit [Read error: Connection reset by peer]
mcclurmc has joined #ocaml
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 272 seconds]
nikki93 has quit [Remote host closed the connection]
Neros has quit [Ping timeout: 272 seconds]
nikki93 has joined #ocaml
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 260 seconds]
mcclurmc has quit [Remote host closed the connection]
tntnt has quit [Quit: tntnt]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 272 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 265 seconds]
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 272 seconds]
bjorkintosh has quit [Ping timeout: 248 seconds]
nikki93 has quit [Remote host closed the connection]
w0rm_x has joined #ocaml
w0rm_x has quit [Ping timeout: 246 seconds]
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 246 seconds]
ygrek has quit [Ping timeout: 265 seconds]
strobegen has joined #ocaml
amirmc has joined #ocaml
manud_ has joined #ocaml
amirmc has quit [Ping timeout: 245 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 264 seconds]
thelema has joined #ocaml
amirmc has joined #ocaml
aggelos has quit [Ping timeout: 252 seconds]
osa1 has quit [Quit: Konversation terminated!]
manud_ has quit [Ping timeout: 265 seconds]
amirmc has quit [Ping timeout: 252 seconds]
thelema has quit [Ping timeout: 264 seconds]
ygrek has joined #ocaml
manud_ has joined #ocaml
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 245 seconds]
shinnya has joined #ocaml
thelema has joined #ocaml
ggole has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
Yoric has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
thelema has quit [Remote host closed the connection]
thelema has joined #ocaml
thelema has quit [Ping timeout: 260 seconds]
thelema has joined #ocaml
Kakadu has joined #ocaml
wormphlegm has quit [Ping timeout: 260 seconds]
thelema has quit [Ping timeout: 245 seconds]
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 246 seconds]
aggelos has joined #ocaml
Yoric has quit [Ping timeout: 252 seconds]
wormphlegm has joined #ocaml
nikki93 has joined #ocaml
nikki93 has quit [Remote host closed the connection]
nikki93 has joined #ocaml
wormphlegm has quit [Ping timeout: 272 seconds]
amirmc has joined #ocaml
Yoric has joined #ocaml
amirmc has quit [Ping timeout: 245 seconds]
Simn has joined #ocaml
zxqdms has joined #ocaml
AltGr has joined #ocaml
amirmc has joined #ocaml
<whitequark> I've just realized that using first-class modules very much remind me using C++'s templates.
amirmc has quit [Ping timeout: 265 seconds]
<adrien> first-class modules? why?
<whitequark> well, it's a very common pattern to have a module with type t and a bunch of functions using it... this is equivalent to a nonvirtual class. and if you add modules to the mix... functor(M) -> ~ template<class M>
yacks has quit [Read error: Operation timed out]
yacks has joined #ocaml
amirmc has joined #ocaml
amirmc has quit [Ping timeout: 246 seconds]
kyrylo has joined #ocaml
thelema has joined #ocaml
ygrek has quit [Ping timeout: 272 seconds]
BitPuffin has joined #ocaml
wormphlegm has joined #ocaml
wormphlegm has quit [Ping timeout: 245 seconds]
mfp has quit [Ping timeout: 252 seconds]
mystica555-work has joined #ocaml
<mystica555-work> i know nothing about this wonderful language; and am attempting to figure out why this happens:
<mystica555-work> 02:01:50 [dynamic.loader:2] Could not load plugin file /usr/local/lib/liquidsoap/scm/plugins/fdkaac_loader.cmxs: error loading shared library: /usr/local/lib/liquidsoap/scm/plugins/fdkaac_loader.cmxs: undefined symbol: camlFdkaac_dynlink.
<mystica555-work> so its looking for the symbol "where"
<mystica555-work> i don't understand how this links (as much as I do for example, with ld.so and linking C stuff at runtime) so i don't really know where i need to look for symbol names appearing or not appearing
<mystica555-work> as in, where in which files on disk
mfp has joined #ocaml
<mystica555-work> (not some api call i could do, or anything abstracted, i simply need to know what i can run 'strings' on to find a symbol name)
root_empire has joined #ocaml
<whitequark> mystica555-work: .cmxs files are loaded more or less like dynamic libraries in C programs; think .so files
<whitequark> symbols in them are resolved from the image of the process which loads it
<whitequark> (again, there's the analogue of RTLD_LOCAL of dlopen)
<whitequark> oh, nevermind the last remark, the symbol which is not found is a native symbol
michael_lee has quit [Ping timeout: 264 seconds]
<whitequark> you can look at loaded objects in /proc/$PID/maps
nikki93 has quit [Remote host closed the connection]
jzelinskie_ has joined #ocaml
jzelinskie is now known as Jimi`
jzelinskie_ is now known as jzelinskie
<whitequark> how can I use 'with type' construct with polymorphic types?
yacks has quit [Ping timeout: 246 seconds]
<whitequark> "with type foo = 'a bar" barfs at "Unbound type parameter 'a"
Yoric has quit [Ping timeout: 240 seconds]
<jpdeplaix> whitequark: AFAIK, you can't. But you can wrap the 'a with « type tmp = {bar : 'a. 'a bar} » and then « with type foo = tmp »
<adrien> GAH
<adrien> CAMLprim value unix_link(value path1, value path2)
<adrien> if (! pCreateHardLink(String_val(path2), String_val(path1), NULL)) {
<jpdeplaix> But I don't know if it feels your need
<jpdeplaix> fills*
<adrien> that's some of the things I hate with windows support
<whitequark> jpdeplaix: that's an interesting construct
<whitequark> 'a. 'a bar <- is 'a existential here?
<jpdeplaix> yep, I think
<def-lkb> it's universal
amirmc has joined #ocaml
<def-lkb> you can use GADT to introduce existential, eg type foo = Foo : 'a bar -> foo
jbrown has quit [Ping timeout: 252 seconds]
<whitequark> hm
jbrown has joined #ocaml
<whitequark> this is such a pain :/
<def-lkb> what are you trying to do ?
amirmc has quit [Ping timeout: 260 seconds]
<whitequark> I have a module which performs data storage, well, it's like Hashtbl
<def-lkb> (the other ways to get existentials is encoding with universal and negations, this is pain, and packed modules)
<whitequark> and I have a parametric type with phantom parameters
<whitequark> and I'm trying to save the latter into the former
<whitequark> think using 'a thisisint as keys in Hashtbl.
<def-lkb> wrapping them is a GADT seems to be a rather lightweight encoding.
<def-lkb> in*
<whitequark> I don't even need to access 'a in any way inside
<whitequark> is there no way to avoid additional indirection?
<rks`> Obj.
<whitequark> sigh
thomasga has joined #ocaml
<def-lkb> if those are phantom types you control, you can manage to have your own top type to cast to
<whitequark> but, that would break safety provided by phantom types, pretty much making them useless
<def-lkb> you just said that you don't even need to access them, so they provide no safety in this part of your code.
<whitequark> what I basically want is to enrich the signature of the returned storage module with those phantom types
<whitequark> _inside_ it, they don't matter. outside, I want them to be checked
<whitequark> does this make sense?
<def-lkb> I think :).
<whitequark> I'm currently trying to do it with another functor
<def-lkb> Can't you drop the phantom parameter _inside_ ?
<whitequark> how would I do that?
<def-lkb> Can you show some part of your code ?
manud_ has quit [Ping timeout: 260 seconds]
<whitequark> I'll try to write a self-contained example
<def-lkb> (One way to do that is to keep enough knowledge on your types in the implementation, so that you can recover the fact that ('a,'b,…) t is an alias to int, but only expose t as an abstract type in the signature)
wormphlegm has joined #ocaml
Yoric has joined #ocaml
* def-lkb brb
manud_ has joined #ocaml
ousado has joined #ocaml
Jimi` has quit [Quit: WeeChat 0.4.2-dev]
Yoric has quit [Ping timeout: 252 seconds]
wormphlegm has quit [Ping timeout: 272 seconds]
<whitequark> this should be self-explaining and contained
manud_ has quit [Ping timeout: 260 seconds]
thelema has quit [Ping timeout: 260 seconds]
wolfnn has joined #ocaml
avsm has joined #ocaml
<whitequark> jpdeplaix: also how do I even use your 'a. 'a foo trick
<whitequark> # type a = { f : 'a. 'a list };;
<whitequark> utop # { f = [1;2] };;
<whitequark> Error: This field value has type int list which is less general than 'a. 'a list
tane has joined #ocaml
thomasga1 has joined #ocaml
thomasga has quit [Read error: Connection reset by peer]
nikki93 has joined #ocaml
<whitequark> ok, I've sorta did it with another functor
<whitequark> but this is truly horrible
* whitequark tosses Obj.magic cherry on the top
<whitequark> also I'm now 100% confident first class modules are just like templates: you never know if you can do what you want, and if you can, too often you wish you couldn't
<ggole> The best kind of language feature.
<whitequark> now I wonder if I can (ab)use modules as values to regain the flexibility I lost when I added another functor and flattened apples...
rand000 has joined #ocaml
<whitequark> Error: This expression has type Box.Data.t but an expression was expected of type Box.Data.t The type constructor Box.Data.t would escape its scope
<whitequark> what?
<ggole> If you are creating a first class module, the type constructors have to remain hidden within the scope
<ggole> Ie, given let foo x = let module Foo = type t ... in x, you can't have a Foo.t in the expression x
<whitequark> my brain hurts.
<ggole> Basically Foo is supposed to be "new" each time through the function
<whitequark> hm, I added more information, but it still fails
<whitequark> Error: This expression has type AppleKind.t Apple.apples = int but an expression was expected of type AppleKind.t Apple.apples = int The type constructor AppleKind.t would escape its scope
thelema has joined #ocaml
<whitequark> I guess if they both = int anyway then it shouldn't matter?
<ggole> Hmm
tane has quit [Quit: Verlassend]
<Drup> whitequark: why is Box a functor ?
<Drup> oh, you don't want to mix green and red apples ?
mcclurmc has joined #ocaml
nikki93 has quit [Ping timeout: 264 seconds]
<whitequark> Drup: yep
<whitequark> maybe I should've named them apples and oranges :]
<Drup> I am not completly sure you are clear about what you want to do yourself :p
wormphlegm has joined #ocaml
<whitequark> I am. there are red apples and green apples, and a set of apple operations
<whitequark> it's fine to add red and red apples, and green and green apples, but not red and gree.
<whitequark> module Storage represents generic serialization of a particular type
<ggole> Is this to work around the type constructor arity thing? Where you decorate a type with a phantom 'a and then can't do something like module AppleSet = Set.Make(Apple) with t = 'a apple?
<whitequark> in this case, since red/green apple types are phantom, serialization algorithm does not depend on the kind of apple
<whitequark> ggole: exactly.
<ggole> Yeah, I ran into that. Very annoying.
<whitequark> how did you solve it?
<ggole> Removed the phantom types.
<Drup> whitequark: why do you need phantom types instead of simply different types ?
<whitequark> Drup: because no apple operations are dependent on their color, it's simply there to disallow mixing them
<whitequark> think of measurement units
<Drup> phantom types are usually used if you need to actually compute some stuff inside the type
<Drup> you are using a functor over apples anyway ...
<whitequark> I don't want to, see the original gist: https://gist.github.com/whitequark/a1f0addfde2bef9430d7
mcclurmc has quit [Ping timeout: 272 seconds]
<whitequark> a functor over apples is how I'm trying to solve this.
avsm has quit [Quit: Leaving.]
wormphlegm has quit [Ping timeout: 260 seconds]
<Drup> if you use a functor, you're better of getting rid of the phantom type anyway, since the solution is the same
<ggole> So you have RedApple.t and GreenApple.t?
<whitequark> ggole: yes, that is another way to look at it
<whitequark> I think I'll just cast the phantom type away with Obj.magic.
<Drup> whitequark: you're really better of using different types and a functor over those....
<ggole> So you'll have module AppleSet = Set.Make(Apple) with t = any apple, and then diddle the elements into, say, green apple on the way out?
<ggole> I considered that solution, but didn't care for the cast :/
<whitequark> ggole: yes, that's what I'm thinking about
<ggole> I tried polymorphic variants, too. Didn't work out.
<ggole> Because if you do something like module AppleSet = Set.Make(Apple) with t = [< `Foo | `Bar] apple, the variant needs an (implicit) type variable and the arity is wrong again.
AltGr has left #ocaml []
<Drup> ggole: just close the type
Neros has joined #ocaml
<whitequark> oh wait, this could work for me
<ggole> I don't think that works either
<Drup> do you really need the variance annotation in this case ?
<ggole> I think so: let me look at the original code in which I tried it
<whitequark> yeah, without variance annotation it's similarly useless
<ggole> Because then you can't use the set with a [`Foo] apple
<ggole> Yeah, this is the issue I ran into
<Drup> you can cast explicitely but it became a pain very quick
amirmc has joined #ocaml
<mrvn> Do you want to be able to put both green and red apples into the set?
<Drup> whitequark: what prevents you to have "'a t" in your storage module ?
<ggole> And I had ~6 different phantom types and didn't want 6 different set modules, and 6 different map modules, and etc etc
<whitequark> Drup: this is what I'm currently thinking about
<Drup> whitequark: this is really a simple solution, I don't see why you didn't do it in the first place
<Drup> (I just wake up, sorry for the startup time of the brain :x )
<whitequark> but I still couldn't replace 'a t with ('a, 'b) u ?
<Drup> but you could with 'a * 'b
<whitequark> hmmm
<Drup> not strictily equivalent, but may be enough
pango has quit [Remote host closed the connection]
hyperboreean has joined #ocaml
<Drup> whitequark: if you want some beautiful phantom type spagetti, and see how everything is managed, look at macaque or tyxml
<Drup> first one for objets, second one for poly variants
amirmc has quit [Ping timeout: 246 seconds]
<Drup> (in the case of tyxml, there is actually functors, but for other reasons)
<whitequark> um, how do I use 'a * 'b in that context?
<whitequark> type ('a * 'b) = ('a, 'b) apples fails
<whitequark> type ('a * 'b) t = ('a, 'b) apples
<Drup> the other way around
<whitequark> eh?
<Drup> you want to have t with only one parameter and apple with two ?
<whitequark> yes
<Drup> just use a t with the same arity as what it's actually going to be
<whitequark> well, the whole problem is that arity could be different
<Drup> huh.
<whitequark> yeah.
<Drup> you are actually trying to complicate your own life, aren't you ? ;)
<whitequark> no, I'm trying to represent measurement units in type system
<Drup> in which case do the arity change for that ?
<whitequark> because the data storage module can be used for various structures
<whitequark> structures containing 1, 2, 3, ... fields with units on them
<Drup> there is an ugly solution
<whitequark> oh?
<Drup> just wrap the storage structure to expand the arity
<Drup> so you have "Storage" module with zero arity
<Drup> and some Storage1, 2, 3 on top of it, with bigger arity
<ggole> This *is* a lot like templates...
<Drup> yeah ...
<Drup> I did tell it was going to be ugly.
pango has joined #ocaml
<whitequark> sigh
<mrvn> it sucks that you can't have flexible arity
<Drup> flexible arity is a nightmare to typecheck
q66 has quit [Quit: Leaving]
<whitequark> why can't you just replace t with 'a apples
<whitequark> ?
<ousado> this is clearly a case for metaprogramming
<mrvn> whitequark: because then 'a is unbound
q66 has joined #ocaml
<whitequark> mrvn: but, I can manually replace it and it would work
<Drup> whitequark: if you could replace by 'a t, you could replace with ('a,'b) t, and so one, and "flexible arity is a nightmare to typecheck"
<ggole> Because the type in the module gets another argument, which can bind the 'a
q66_ has joined #ocaml
<ggole> Instead of (say) Set.S with type elt = foo, its Set.S with type 'a elt = 'a foo
q66 has quit [Read error: Connection reset by peer]
<whitequark> could also destructively replace. just type 'a elt
<whitequark> ok, so I decided to wrap the data storage structures into one big functor instead
<whitequark> I think that may work
q66_ has quit [Quit: Leaving]
q66 has joined #ocaml
<whitequark> oh, hm, that would also require to parameterize all algorithms over that functor
<whitequark> grrr
<ggole> Sigh, tracking down unexpected exceptions is such a chore in OCaml
<nicoo> ggole: Isn't the backtrace helpful enough ?
<ggole> Producing one and then following it is not exactly convenient.
<nicoo> If you want failure to be represented in the type system, do not use exceptions :]
<ggole> Well, it's array indexing.
darkf has quit [Quit: Leaving]
thelema has quit [Remote host closed the connection]
* ggole would cheerfully kill for something like slime's debugger in the toplevel
thelema has joined #ocaml
<whitequark> write it!
<Drup> unfortunately, the ocaml debugger is not very userfriendly although quite powerful
<ggole> Stepping backwards is always fun
<ggole> TBH a backtrace would probably be enough.
<Drup> -g + OCAMLRUNPARAM=b ?
<ggole> Does that work in the toplevel now?
nikki93 has joined #ocaml
<Drup> no idea, but you can just put in a file anyway
<ggole> That works - it's what I do at the moment if I can't figure out the source - but it is not exactly convenient
yacks has joined #ocaml
thelema has quit [Ping timeout: 245 seconds]
wormphlegm has joined #ocaml
wormphlegm has quit [Ping timeout: 246 seconds]
ollehar has joined #ocaml
mcclurmc has joined #ocaml
thomasga1 has quit [Quit: Leaving.]
thelema has joined #ocaml
Xenasis has joined #ocaml
mcclurmc has quit [Ping timeout: 246 seconds]
thomasga has joined #ocaml
<def-lkb> whitequark: type 'c t = ('a, 'b) apples constraint 'c = 'a * 'b
<whitequark> def-lkb: tried that
<def-lkb> and?
<whitequark> constraint makes the types incompatible
<def-lkb> which types ?
<Drup> def-lkb: can't unify your version of 'a t with the abstract one
<whitequark> ^
<def-lkb> oh, ok.
dr_df0 has quit [Ping timeout: 246 seconds]
nikki93 has quit [Ping timeout: 272 seconds]
<mrvn> does the abstract one have the same constraint?
<Drup> mrvn: of course not, it's abstract, it's not even related to apples
<mrvn> then how should ocaml now that the abstracts `a needs to be `a*`b?
<mrvn> # type 'c t constraint 'c = 'a * 'b;;
<mrvn> type 'c t constraint 'c = 'a * 'b
<Drup> mrvn: not helping, look at the exemple please.
<whitequark> # struct type 'c t constraint 'c = 'a * 'b end : sig type 'a t end
thomasga has quit [Quit: Leaving.]
<whitequark> ok, # module A : sig type 'a t end = struct type 'c t constraint 'c = 'a * 'b end;;
<whitequark> that works :]
kyrylo has quit [Quit: WeeChat 0.4.2]
<mrvn> whitequark: WTF?
<whitequark> mrvn: hm?
<whitequark> "works" as in "results in the type error I said about"
<whitequark> the previous fragment was syntactically invalid
<Drup> whitequark: that's a pretty specific definition of "works" :D
thelema has quit [Ping timeout: 272 seconds]
kyrylo has joined #ocaml
<whitequark> 'for some values of "works"' :]
<mrvn> module A : sig type 'c t constraint 'c = 'a * 'b end = struct type 'c t = ('a, 'b) apples constraint 'c = 'a * 'b end;;
<mrvn> I was thinking of that
<whitequark> mrvn: well, that would be useless for my purpose
<Drup> mrvn: and then you can't change the arity
<Drup> which is the point
<whitequark> I could as well make it type ('a, 'b) t in the signature
<mrvn> The constraint in the signature needs to be the same as in the module or the types don't unify.
wormphlegm has joined #ocaml
<ggole> Hrmm, I've never realised how flaky some of the toplevel is
<mrvn> ggole: keep restarting it so you have a clean slate
<ggole> It's running fine: by flaky I'm referring to the design (of some bits)
<whitequark> ggole: which ones?
<ggole> Printing exceptions
<ggole> If the exception is within a module, the toplevel doesn't know the type of the arguments
<ggole> So it will just guess by looking at the bits
<whitequark> doesn't the runtime do the same?
avsm has joined #ocaml
<Drup> whitequark: it does
<ggole> For instance, type foo = Foo | Bar exception Zot of foo let test () = raise (Zot Foo)
<ggole> Will print as Zot 0!
troydm has quit [Quit: What is hope? That all of your wishes and all of your dreams come true? (C) Rau Le Creuset]
<whitequark> ggole: Printexc.register_printer
<whitequark> hm
<whitequark> this is both top and utop
<ggole> Needs to be abstract: module Foo : sig val test: unit -> unit end = struct type foo = Zot | Bam exception Foo of foo let test () = raise (Foo Zot) end
<ggole> (Because the toplevel knows about the visible parts of module signatures, I think.)
ontologiae_ has joined #ocaml
thizanne has quit [Ping timeout: 246 seconds]
talzeus_ has quit [Read error: Connection reset by peer]
talzeus has joined #ocaml
thizanne has joined #ocaml
ttamttam has joined #ocaml
talzeus_ has joined #ocaml
ontologiae_ has quit [Ping timeout: 265 seconds]
talzeus has quit [Ping timeout: 246 seconds]
thelema has joined #ocaml
troydm has joined #ocaml
<whitequark> this may be relevant to your case
demonimin has joined #ocaml
<ggole> Hmm
<ggole> I didn't think about variance
thelema has quit [Ping timeout: 264 seconds]
* ttamttam slaps ttamttam around a bit with a large trout
* ttamttam slaps ttamttam around a bit with a large trout
thelema has joined #ocaml
thelema has quit [Ping timeout: 246 seconds]
demonimin has quit [Ping timeout: 264 seconds]
* adrien helps ttamttam a bit
<ttamttam> adrien: tu es trop bon :-)
nikki93 has joined #ocaml
thelema has joined #ocaml
thelema has quit [Ping timeout: 260 seconds]
nikki93 has quit [Ping timeout: 245 seconds]
thelema has joined #ocaml
ttamttam has left #ocaml []
ttamttam has joined #ocaml
ttamttam has left #ocaml []
ygrek has joined #ocaml
w0rm_x has joined #ocaml
w0rm_x has quit [Client Quit]
mcclurmc has joined #ocaml
w0rm_x has joined #ocaml
mcclurmc has quit [Ping timeout: 246 seconds]
w0rm_x has quit [Client Quit]
hellome has joined #ocaml
thomasga has joined #ocaml
thelema has quit [Ping timeout: 272 seconds]
thomasga has quit [Quit: Leaving.]
avsm has quit [Quit: Leaving.]
nikki93 has joined #ocaml
w0rm_x has joined #ocaml
Neros has quit [Ping timeout: 272 seconds]
w0rm_x has quit [Client Quit]
CissWit has joined #ocaml
mfp has quit [Ping timeout: 252 seconds]
ulfdoz has joined #ocaml
Neros has joined #ocaml
thomasga has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
nikki93 has quit [Ping timeout: 260 seconds]
arj1 has joined #ocaml
snyp has joined #ocaml
mfp has joined #ocaml
yacks has quit [Quit: Leaving]
mcclurmc has joined #ocaml
tane has joined #ocaml
thomasga1 has joined #ocaml
thomasga has quit [Quit: Leaving.]
Yoric has joined #ocaml
manud has quit [Read error: Connection reset by peer]
nikki93 has joined #ocaml
Neros has quit [Ping timeout: 245 seconds]
kyrylo has quit [Quit: WeeChat 0.4.2]
mcclurmc has quit [Remote host closed the connection]
thelema has joined #ocaml
mcclurmc has joined #ocaml
ygrek has quit [Ping timeout: 265 seconds]
thelema has quit [Ping timeout: 260 seconds]
mcclurmc has quit [Ping timeout: 252 seconds]
mcclurmc has joined #ocaml
shinnya has quit [Ping timeout: 272 seconds]
nikki93 has quit [Ping timeout: 246 seconds]
Neros has joined #ocaml
Yoric has quit [Ping timeout: 245 seconds]
root_empire has quit [Ping timeout: 265 seconds]
kyrylo has joined #ocaml
cdidd has quit [Ping timeout: 245 seconds]
Xenasis has quit [Remote host closed the connection]
Xenasis has joined #ocaml
KoRnshell is now known as Zoltrov
w0rm_x has joined #ocaml
w0rm_x has quit [Client Quit]
zpe has joined #ocaml
mcclurmc has quit [Ping timeout: 240 seconds]
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
zpe has quit [Remote host closed the connection]
snyp has quit [Quit: leaving]
cdidd has joined #ocaml
Arzaga has quit [Quit: Computer has gone to sleep.]
Ptival has quit [Read error: Connection reset by peer]
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
Yoric has joined #ocaml
ggole has quit []
thomasga1 has quit [Quit: Leaving.]
thomasga has joined #ocaml
thomasga has quit [Quit: Leaving.]
thelema has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 260 seconds]
Kakadu has quit []
zpe has joined #ocaml
zpe has quit [Ping timeout: 246 seconds]
thomasga has joined #ocaml
thomasga has quit [Quit: Leaving.]
Yoric has quit [Ping timeout: 252 seconds]
manud has joined #ocaml
yacks has joined #ocaml
ollehar has quit [Ping timeout: 245 seconds]
Yoric has joined #ocaml
arj1 has quit [Quit: Leaving.]
Arzaga has joined #ocaml
ulfdoz has quit [Ping timeout: 246 seconds]
Xenasis has quit [Remote host closed the connection]
Yoric has quit [Ping timeout: 264 seconds]
darkf has joined #ocaml
Xenasis has joined #ocaml
Arzaga has quit [Quit: Computer has gone to sleep.]
w0rm_x has joined #ocaml
cesar has joined #ocaml
cesar is now known as Guest98028
w0rm_x has left #ocaml []
ollehar has joined #ocaml
strobegen has quit [Quit: Leaving.]
zpe has joined #ocaml
Arzaga has joined #ocaml
Arzaga has quit [Client Quit]
Guest98028 has quit [Remote host closed the connection]
thelema has quit [Ping timeout: 240 seconds]
Yoric has joined #ocaml
zpe has quit [Remote host closed the connection]
Xenasis has quit [Remote host closed the connection]
no0y has joined #ocaml
no0y has quit [Remote host closed the connection]
Xenasis has joined #ocaml
zpe has joined #ocaml
tobiasBora has joined #ocaml
<tobiasBora> Hello,
tane has quit [Quit: Verlassend]
<tobiasBora> I'd like to know if there is a way to use Ocaml in order to communicate with the GPIO ports of a Raspberry pi
Patchou has joined #ocaml
Tamae has quit [Ping timeout: 264 seconds]
<mrvn> tobiasBora: sure. just open the files in sys and write to them
<tobiasBora> mrvn: What ?!? And how could I open a GPIO as a simple file ?
<mrvn> tobiasBora: the GPIO driver creates files in sys where you can read and modify the current config for the pins.
<tobiasBora> How really ? Something like /dev/input/event* ?
<tobiasBora> (but in both directions)
<mrvn> something like /sys/block/md0/md/sync_speed_max
<mrvn> try a find /sys -name "*gpio*"
rand000 has quit [Quit: leaving]
<mrvn> or check for examples how to access gpio from shell.
<tobiasBora> This is the result but it seems that every pin hasn't a special file... Do you know which one is the good one ?
<tobiasBora> mrvn: I've installed a program to access gpio from shell (wiringPi) but I find it's disgusting to do "Sys.exec(gpio ...)
<tobiasBora> "
Yoric has quit [Ping timeout: 252 seconds]
madroach has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
<mrvn> then read the source and reimplement it in ocaml
cthuluh has quit [Ping timeout: 252 seconds]
cthuluh has joined #ocaml
mcclurmc has joined #ocaml
<ddosia> Hi folks, is there any way to see manual for particular module (say List) from console? (like in erlang I do `erl -man lists`)
zpe has quit [Remote host closed the connection]