Submarine has quit [Remote host closed the connection]
<Necrosporus>
Seems like OCaml does not support UTF-8. Is it going to stat to?
<Necrosporus>
For example "unicode string".[index] returns incorrect results
<whitequark>
short answer: no
<whitequark>
opam install uutf uucd
<MercurialAlchemi>
does the Opam server store the actual sources anywhere?
<MercurialAlchemi>
(sources of its packages, that is)
<whitequark>
I think it mirrors the package sources somehow
<MercurialAlchemi>
good
oscar_toro has joined #ocaml
<MercurialAlchemi>
not that I'm likely to put anything OCaml in production anytime soon, but the idea of having a deployment work only as long as a bunch of random people's servers are up would be scary
Necrosporus has quit [Quit: Leaving]
<whitequark>
I think there is some planned way to enable offline installs, which can also be used for deployment
<MercurialAlchemi>
whitequark: you mean cache sources on the disk?
<MercurialAlchemi>
sounds like a good idea
<whitequark>
well, more like export all sources on request
<whitequark>
and import them on another machine
<MercurialAlchemi>
mm
<MercurialAlchemi>
I suppose that's something already
<whitequark>
er, I phrased that badly
<whitequark>
all sources required for a particular "opam install", I mean
<whitequark>
you can mirror repositories trivially right now
<flux>
is there a way to mirror all of opam trivially?
<whitequark>
clone opam-repository; opam admin make
chambart has quit [Ping timeout: 264 seconds]
pierpa` has quit [Ping timeout: 240 seconds]
pierpa has quit [Ping timeout: 240 seconds]
<MercurialAlchemi>
ah, I think my opam version is a bit old and doesn't do 'opam admin'
<flux>
whitequark, great! can I somehow tell opam to use that as a mirror/fallback?
<flux>
and updating us just a matter of doing git pull and opam admin make again?
<whitequark>
flux: fallback, I don't think os
<whitequark>
*so
<whitequark>
you can update it via a cronjob or something
* MercurialAlchemi
mutters darkly about Windows in general and .Net projects where 'dependency management' consists of vendored binary blobs probably downloaded from p0wnd.com
ocp has joined #ocaml
<whitequark>
nuget?
<MercurialAlchemi>
you wish
<MercurialAlchemi>
but no, vendored binary blobs it is
<whitequark>
"binary blobs"
<MercurialAlchemi>
at the same time, when the way to make a fresh version of the database is "extract the schema from the dev database", I guess you shouldn't be too surprised
<whitequark>
it's like "objective ocaml"
<MercurialAlchemi>
true
<MercurialAlchemi>
that said, it almost wasn't, I started writing 'binary blogs'
<flux>
and apparently I can modify .opam/repo/default/config to point to my mirror
<flux>
so apparently the repos have priorities. I can just have mine be the top priority one and if it's not found there, opam.ocaml.org would be used?
<flux>
but it doesn't yet try to retrieve from other repos if one fails to serve it?
<whitequark>
I don't think it ever will, this is not the reason for priorities to exist
<whitequark>
rather it is to allow you to override packages with your own versions
rand000 has joined #ocaml
vogler has quit [Quit: WeeChat 1.0.1]
ikaros has joined #ocaml
avsm has joined #ocaml
Simn has joined #ocaml
ygu has quit [Ping timeout: 255 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest39624
munga has joined #ocaml
chambart has quit [Ping timeout: 244 seconds]
<Unhammer>
how do I get eliom to "support a user service parameter on client side"?
samuel02 has quit [Read error: Connection reset by peer]
samuel02 has joined #ocaml
samuel02 has quit [Read error: Connection reset by peer]
thomasga has quit [Client Quit]
larhat has joined #ocaml
seanmcl has joined #ocaml
ygrek has quit [Ping timeout: 264 seconds]
govg has quit [Ping timeout: 250 seconds]
seanmcl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
rks`_ has quit [Quit: leaving]
govg has joined #ocaml
barth has joined #ocaml
avsm has joined #ocaml
<barth>
Hello ! I've one question. In an expression containing several user defined infix operators and without parenthesing, the order of their evaluation is it specified ? For exemple in "a op1 b op2 c".
<whitequark>
I believe it is not, given they have the same precedence
<whitequark>
and e.g. +. and +* will have the same one
samuel02 has joined #ocaml
<barth>
Ok. So, for operators with same precedence their is no rules as "left to right", like for division : a / b / c = (a / b) / c ?
<whitequark>
no
<whitequark>
order is undefined
<barth>
Ok thanks.
choeger_tu has joined #ocaml
<choeger_tu>
hey there. does anyone know how to use a ppx extension (in particular ppx_deriving) from inside utop?
seanmcl has joined #ocaml
<choeger_tu>
I only get syntax errors:
<choeger_tu>
type t =
<choeger_tu>
| Leaf of int
<choeger_tu>
| Node of t list
<choeger_tu>
[@@deriving show]
<choeger_tu>
Error: Parse error: ";;" expected after [str_item] (in [top_phrase])
cesar_ has joined #ocaml
<whitequark>
choeger_tu: you need to disable camlp4
cesar_ is now known as Guest19443
<whitequark>
in particular sexplib and core require camlp4; you cannot use ppx_deriving together with those
<choeger_tu>
so, since utop requires core, I cannot use utop with ppx_deriving?
<whitequark>
utop does not!
<choeger_tu>
oh, you are right. I supposed so, because it was featured in "Real world ocaml"
seanmcl has quit [Ping timeout: 265 seconds]
<choeger_tu>
so how do I disable camlp4?
samrat has quit [Quit: Computer has gone to sleep.]
bezirg has quit [Ping timeout: 244 seconds]
<whitequark>
don't enable it :]
<whitequark>
you probably have something that pulls it in in ~/.ocamlinit
<whitequark>
like #require "core";; or #camlp4o;;
dsheets has joined #ocaml
<choeger_tu>
indeed
<choeger_tu>
thanks
Guest19443 has quit [Ping timeout: 245 seconds]
siddharthv is now known as siddharthv_away
ebzzry_ has joined #ocaml
ebzzry has quit [Read error: Connection reset by peer]
<flux>
barth, whitequark, hmm, I think you were talking about different issues. whitequark probably meant that the order in which the expressions are evaluated is not defined (ie. if they have side effects, it is undefined in which order the side effects are performed), but the order in which the operators are applied is defined here: http://caml.inria.fr/pub/docs/manual-ocaml/expr.html
<flux>
so 1 / 2 / 3 = (1 / 2) / 3 in ocaml always, because / is left-associative
<whitequark>
oh, that is true
<Drup>
hey barth :)
<Drup>
actively working on Coq now ? :)
chambart has quit [Ping timeout: 265 seconds]
hugomg has joined #ocaml
<barth>
I've just seen that associativity is defined by the first operator's letter. But the manual don't speak about '$' ...
<flux>
it does
<flux>
it's in the =... <... >... |... &... $... != list
BitPuffin has joined #ocaml
rand000 has quit [Quit: leaving]
<barth>
Yes, sorry, not where i've looked first.
<choeger_tu>
whitequark: how do I specify a custom equality function for a type that appears on the rhs of an algebraic datatype?
<flux>
choeger_tu, you cannot define custom equality operator for values that are not defined in C
<choeger_tu>
talking about ppx_deriving
<flux>
oh ;-)
<flux>
was wondering why you were writing specifically to whitequark ;)
<Drup>
iirc, you need to attach the extension to the Constructor's name
<Drup>
Named [@equal fun e1 e2 -> equal_expression e1 e2]
<Drup>
whitequark: can you confirm ?
BitPuffin has joined #ocaml
<choeger_tu>
hmm okay, but this does not seem to override the generated equal_foo functions
<choeger_tu>
my use case is, I have three recursive ADTs, expr, model_expr and model_field
<choeger_tu>
expr contains Parsetree.expression
<choeger_tu>
and I want to derive eq for model_expr while using a custom equality for expr
govg has quit [Ping timeout: 255 seconds]
govg has joined #ocaml
nojb has quit [Quit: nojb]
govg has quit [Quit: leaving]
govg has joined #ocaml
BitPuffin has quit [Ping timeout: 245 seconds]
chambart has joined #ocaml
govg has quit [Quit: leaving]
samuel02 has quit [Read error: Connection reset by peer]
samuel02 has joined #ocaml
BitPuffin has joined #ocaml
arj1 has joined #ocaml
arj has quit [Ping timeout: 240 seconds]
ollehar has joined #ocaml
hugomg has quit [Remote host closed the connection]
ollehar has quit [Quit: ollehar]
ollehar has joined #ocaml
govg has joined #ocaml
thomasga has joined #ocaml
demonimin has quit [Ping timeout: 265 seconds]
demonimin has joined #ocaml
hugomg has joined #ocaml
AltGr has left #ocaml [#ocaml]
<Leonidas>
barth: what '$'?
<Leonidas>
($);;
<Leonidas>
Error: Unbound value $
demonimin has quit [Ping timeout: 264 seconds]
govg has quit [Quit: leaving]
w0rp has quit [Remote host closed the connection]
demonimin has joined #ocaml
<flux>
let ($) a b = a b
nojb has joined #ocaml
w0rp has joined #ocaml
<companion_cube>
the standard is now (@@), as defined in Pervasives
<flux>
an interesting point comes to mind: using $ was looked down because it was used for campl4 for anti?quotations
<flux>
but as campl4 is now on its way out, perhaps $ could find actual uses? alternatively, maybe ppx stuff could find nice use for it.
<flux>
iirc @@ has nicer predecence properties than $, though, so better to use that, and as companion_cube said, it's the standard
samuel02 has quit [Remote host closed the connection]
bezirg has joined #ocaml
<MercurialAlchemi>
flux: I can always find use for a few $
cesar_ has joined #ocaml
cesar_ is now known as Guest11623
samrat has joined #ocaml
jbalnit has quit [Remote host closed the connection]
Guest11623 has quit [Ping timeout: 255 seconds]
jbalnit has joined #ocaml
<Leonidas>
flux: my point was that the manual does not specify any precedence of operators starting with $ is because the compiler does not ship with any such operators.
<flux>
leonidas, but the manual -does- specify the precedence of such operators, because you cannot define them in program code..
<flux>
you cannot define the precedence that is
<flux>
you can define $, and for them to work in a predictable manner, a precedence must be defined
slash^ has joined #ocaml
zwer_v has joined #ocaml
<Leonidas>
flux: oh, you are right. I compretely missed thr $… part.
<Leonidas>
*completely
seanmcl has joined #ocaml
zwer has quit [Ping timeout: 250 seconds]
Sim_n has joined #ocaml
choeger_tu has quit [Ping timeout: 272 seconds]
Simn has quit [Ping timeout: 272 seconds]
Haudegen has quit [Remote host closed the connection]
Haudegen has joined #ocaml
Haudegen is now known as Guest49092
esden has quit [Ping timeout: 272 seconds]
Thooms has joined #ocaml
emmanueloga has quit [Ping timeout: 272 seconds]
mort___ has quit [Ping timeout: 272 seconds]
manud has quit [Ping timeout: 272 seconds]
mort___ has joined #ocaml
mrpantou1le has quit [Ping timeout: 272 seconds]
mrpantoufle has joined #ocaml
emmanueloga_ has joined #ocaml
travisbrady has joined #ocaml
esden has joined #ocaml
manud has joined #ocaml
pyon has joined #ocaml
Guest49092 is now known as Haudegen
zwer_v_r has joined #ocaml
zwer_v has quit [Remote host closed the connection]
yomimono has joined #ocaml
ygrek has joined #ocaml
Hannibal_Smith has joined #ocaml
samuel02 has joined #ocaml
shinnya has joined #ocaml
oscar_toro has quit [Ping timeout: 244 seconds]
<Leonidas>
ok, merlin *is* pretty amazing to get into an existing ocaml codebase
zwer_v_r has quit [Remote host closed the connection]
tani has joined #ocaml
zwer_v_r_h has joined #ocaml
samuel02 has quit [Ping timeout: 264 seconds]
chambart has quit [Ping timeout: 240 seconds]
chambart has joined #ocaml
mcclurmc has joined #ocaml
badkins has joined #ocaml
bytbox has joined #ocaml
darkf has quit [Quit: Leaving]
lordkryss has joined #ocaml
ollehar has quit [Ping timeout: 256 seconds]
jbalnit has quit [Quit: Leaving.]
samuel02 has joined #ocaml
ikaros has quit [Quit: Ex-Chat]
travisbrady has quit [Quit: travisbrady]
travisbrady has joined #ocaml
jbalnit has joined #ocaml
barth has quit [Ping timeout: 246 seconds]
cesar has joined #ocaml
cesar is now known as Guest76423
Guest76423 has quit [Ping timeout: 245 seconds]
travisbrady has quit [Quit: travisbrady]
travisbrady has joined #ocaml
ygrek has quit [Ping timeout: 245 seconds]
struk has quit [Ping timeout: 258 seconds]
ocp has quit [Ping timeout: 245 seconds]
Hannibal_Smith has quit [Ping timeout: 265 seconds]
mort___ has quit [Remote host closed the connection]
MercurialAlchemi has quit [Remote host closed the connection]
demonimin has quit [Remote host closed the connection]
demonimin has joined #ocaml
zwer_v_r_h is now known as zwer
MercurialAlchemi has joined #ocaml
ygrek has joined #ocaml
ollehar has joined #ocaml
Sim_n is now known as Simn
Thooms has quit [Quit: WeeChat 1.0.1]
oscar_toro has joined #ocaml
avsm has quit [Quit: Leaving.]
kakadu has joined #ocaml
octachron has quit [Quit: Leaving]
travisbrady has quit [Quit: travisbrady]
nojb has quit [Ping timeout: 264 seconds]
travisbrady has joined #ocaml
WraithM has quit [Quit: Lost terminal]
WraithM has joined #ocaml
badkins has quit [Remote host closed the connection]
samuel02 has quit [Remote host closed the connection]
<dmbaturin>
"This draft may be used until the time the book appears in print". Did it ever appear in print? If it's not to be redistributed why it's on a public server? :)
kdef has joined #ocaml
samuel02 has quit [Ping timeout: 240 seconds]
MrScout_ is now known as MrScout
<Necrosporus>
I have no idea, but the book is mentioned in ocaml.org
mcclurmc_ has quit [Ping timeout: 264 seconds]
<dmbaturin>
Well, it's a question for everyone who may know, not just for you. :)
hugomg has joined #ocaml
ben_ has joined #ocaml
benself has joined #ocaml
<benself>
Having trouble building ocaml - ./configure worked fine, but when I did "make world" I get the error "Makefile:869: .depend: No such file or directory make: *** No rule to make target `.depend'. Stop."
mcclurmc has joined #ocaml
<benself>
any help would be appreciated. Tried googling the error and didn't find much
bytbox has quit [Remote host closed the connection]
<struktured>
benself: do you have to build it manually?
<benself>
Not necessarily. I just figured that was the best way to go
<benself>
Okay, I'll give that a shot. Thanks very much
travisbrady has joined #ocaml
arj has quit [Ping timeout: 265 seconds]
Muzer has quit [Excess Flood]
badon has quit [Ping timeout: 250 seconds]
Muzer has joined #ocaml
<dmbaturin>
For OS X there's a binary package/
<struktured>
any lwt-async maintainers here? got a few questions
arj has joined #ocaml
<whitequark>
no
<whitequark>
it' just diml
<struktured>
whitequark: trying to figure out how big the divide between latest lwt (with ppx) and lwt-async. Pretty sures it fairly outdated.
arj has quit [Ping timeout: 245 seconds]
chambart has joined #ocaml
jwatzman|work has joined #ocaml
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
<whitequark>
yes
<struktured>
also, I imagine this is difficult, but would be nice if lwt-async and lwt depended on some shared lib
<whitequark>
probably not going to happen
arj has joined #ocaml
psy_ has quit [Quit: Leaving]
tani has quit [Quit: Verlassend]
psy_ has joined #ocaml
octachron has joined #ocaml
<struktured>
whitequark: because it's too dificult or no one cares enough, or both?
arj has quit [Ping timeout: 245 seconds]
<flux>
I'm going with b
<flux>
well, I suppose it would be a big job to do
<flux>
for not that much benefit.
cesar_ has joined #ocaml
cesar_ is now known as Guest30724
<whitequark>
yea
Necrosporus has quit [Quit: Leaving]
<struktured>
I really feel kinda dead in the water If I ever wanted to run an ocaml process with both lwt and async. sigh
manizzle has joined #ocaml
<flux>
two threads and.. :)
<struktured>
the .. is the scary part :)
Guest30724 has quit [Ping timeout: 255 seconds]
<flux>
but I think they should, if they haven't, make it possible to integrate with other runloops
<struktured>
flux: yeah that would be adequate for a while
<flux>
like how nice it was to integrate curl to work with glib
<flux>
but what does lwt-async do? I haven't looked.
tane has joined #ocaml
<struktured>
flux: its just a fork of lwt using the async scheduler, afaik. Got it compile to today with 4.02.1+ but the code base is definitely about a year beyind
hugomg has quit [Ping timeout: 264 seconds]
dsheets has quit [Ping timeout: 256 seconds]
typedlambda has quit [Ping timeout: 250 seconds]
bytbox has joined #ocaml
benself has quit [Ping timeout: 246 seconds]
hugomg has joined #ocaml
WraithM has quit [Quit: leaving]
arj has joined #ocaml
typedlambda has joined #ocaml
jao has quit [Ping timeout: 264 seconds]
arj has quit [Ping timeout: 240 seconds]
avsm has joined #ocaml
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
avsm has quit [Client Quit]
lordkryss has quit [Quit: Connection closed for inactivity]
thomasga has quit [Quit: Leaving.]
thomasga has joined #ocaml
thomasga has quit [Client Quit]
_andre has quit [Quit: leaving]
bezirg has quit [Ping timeout: 265 seconds]
arj has joined #ocaml
samuel02 has joined #ocaml
badon has joined #ocaml
arj has quit [Ping timeout: 240 seconds]
bytbox has quit [Remote host closed the connection]
samrat has quit [Quit: Computer has gone to sleep.]
bytbox has joined #ocaml
mcclurmc_ has joined #ocaml
atondwal has joined #ocaml
mcclurmc has quit [Ping timeout: 244 seconds]
badkins_ has joined #ocaml
abbe is now known as thijk
thijk is now known as abbe
badkins has quit [Ping timeout: 245 seconds]
atondwal has left #ocaml [#ocaml]
samuel02 has quit [Remote host closed the connection]
lordkryss has joined #ocaml
samuel02 has joined #ocaml
ggole has quit []
Submarine has joined #ocaml
Submarine has joined #ocaml
octachron has quit [Quit: Leaving]
bytbox has quit [Remote host closed the connection]
arj has joined #ocaml
jao has quit [Ping timeout: 255 seconds]
badkins_ is now known as badkins
Hannibal_Smith has quit [Quit: Sto andando via]
arj has quit [Ping timeout: 255 seconds]
* whitequark
has decamlp4ified ocplib-endian
<struktured>
the ppx ministry of truth strikes again
<whitequark>
the beatings will continue until morale improves, I mean, camlp4 is deprecated for good
<flux>
if only decamlp4ifying was as easy as violence :(
mcclurmc has joined #ocaml
mcclurmc_ has quit [Ping timeout: 272 seconds]
arj has joined #ocaml
nojb has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
arj has quit [Ping timeout: 256 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest64280
mcclurmc has joined #ocaml
<jbalnit>
i notice the map comes last in Map.add, etc. is there a reason for this convention?
Guest64280 has quit [Ping timeout: 272 seconds]
<nojb>
currying : Map.add x (Map.add y m) etc
<jbalnit>
is this a widespread convention?
<nojb>
it varies
<jbalnit>
i'm noticing the need for it in some of my functions ;)
<mrvn>
argument order are somewhat random, tending towards what the compiler could use best
<jbalnit>
I have an "apply_substitution substitution term" function and this seems like the intuitive order of params but reversing them would help with e.g. List.map to apply a list of substitutions
<jbalnit>
which means ease of writing code?
<struktured>
jbalnit: also, jane street's core map has the map first...so its not that standardized apparently
<jbalnit>
ok, I'll keep it in mind to get a sense for it
<jbalnit>
thx
<mrvn>
jbalnit: how so? let map = List.fold_left (fun sub map -> Map.add sub map) map substituions
<jbalnit>
avoids the lambda to reverse the args
<jbalnit>
could go either way, now realizing it depends on my requirements
<mrvn>
Since you never add the same thing to the same map twice I don't see how the order matters .... and then you tell me why :)
<jbalnit>
the way I have it now is easier to apply one substitution to a list of terms
<jbalnit>
mrvn: the substitutions have to be applied in order if that's what you're referring to
<mrvn>
jbalnit: I was refering to the order in Map.add
<mrvn>
The compiler probably had to apply one substitution to a list of terms so they implemented it that way around.
martintrojer has quit [Ping timeout: 256 seconds]
<jbalnit>
ok
martintrojer has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
arj has joined #ocaml
arj has quit [Ping timeout: 240 seconds]
Anarchos has joined #ocaml
arj has joined #ocaml
mcclurmc_ has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
mcclurmc has quit [Ping timeout: 255 seconds]
arj has joined #ocaml
travisbrady has quit [Quit: travisbrady]
arj has quit [Ping timeout: 265 seconds]
badon has quit [Remote host closed the connection]
badon has joined #ocaml
tane has quit [Quit: Verlassend]
mcclurmc has joined #ocaml
WraithM has joined #ocaml
mcclurmc_ has quit [Ping timeout: 250 seconds]
Submarine has quit [Ping timeout: 240 seconds]
arj has joined #ocaml
samuel02 has quit [Remote host closed the connection]
arj has quit [Ping timeout: 240 seconds]
kakadu has quit [Quit: Konversation terminated!]
badkins has quit [Remote host closed the connection]
<hugomg>
Hi, is there a way to have an mli for defining a signature without a corresponding concrete module?
<hugomg>
For example, to have a Functor.mli declaring a functor interface that I use in other places?
arj has joined #ocaml
<whitequark>
yes
<whitequark>
try it
<hugomg>
hmm, it didn't work when I tried. "Unbound module type Functor" :/
<hugomg>
I guess it must be somethingr really stupid
<whitequark>
Functor is a module signature, not a module type
<whitequark>
you could use e.g. "module type of Functor"
cesar_ has joined #ocaml
<hugomg>
thats it! thanks whitequark! :)
cesar_ is now known as Guest8731
govg has joined #ocaml
arj has quit [Ping timeout: 240 seconds]
seanmcl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<whitequark>
I'm sort of not really sold on the reason module signatures and module functors are different things
<whitequark>
er, module types
Guest8731 has quit [Ping timeout: 255 seconds]
govg has quit [Ping timeout: 240 seconds]
kdef has quit [Remote host closed the connection]
<struktured>
hugomg: I had same issue about two weeks. easy to forget!
<struktured>
hugomg: *two weeks ago
<Drup>
whitequark: what do you call "module signatures" that is not a module type ?
<Drup>
ah, you mean a .mli without .ml ?
<Drup>
(19:03:07) whitequark: Drup: gr, he quit <-- mmh ?
<whitequark>
no, I mean that module signature and module type are the same thing
arj has joined #ocaml
<Drup>
then I don't understand your sentence about them being different. =')
<whitequark>
eh, nevermind
keen___________6 has joined #ocaml
keen___________5 has quit [Ping timeout: 250 seconds]
arj has quit [Ping timeout: 240 seconds]
samuel02 has joined #ocaml
mcclurmc_ has joined #ocaml
oscar_toro has quit [Ping timeout: 265 seconds]
mcclurmc has quit [Ping timeout: 255 seconds]
vanila has joined #ocaml
<cojy>
I've read if a language is pure it's possible to get by with reference counting since you can't create cycles but then I also see claims of allowing high order functions at all allows you to create cycles does anyone know about this?
<cojy>
i haven't been able to come up with any examples of it myself
<whitequark>
think of the Y combinator
<Drup>
cojy: total ? typed ?
<cojy>
neither
<vanila>
if lazy then I think you can make cyclic data using Y combinator, but if the language is strict isn't it impossible?
<Drup>
whitequark: no garbage to collect with the Y combinator, you don't end, but you don't have any garbage :D
sivoais has quit [Ping timeout: 264 seconds]
<hugomg>
cojy: if you allow "let rec" then you can build cyclic structures by tying the knot:
<hugomg>
let rec ones = 1 :: ones
<hugomg>
Or "let ones = 1 : ones" in haskell
<cojy>
yea that one is obvious, same with laziness
<Drup>
this can be considered non pure in a strict language.
<Drup>
(under the hood, you implement that with mutation)
<Drup>
you can tie the know manually, but you still need a recursive function afaict
<Drup>
knot*
arj has joined #ocaml
nojb has quit [Quit: nojb]
arj has quit [Ping timeout: 245 seconds]
<hugomg>
I have another question: I heard its impossible to pass a type w/ two parameters to a functor that expects a type w/ one parameter. Is that true? http://lpaste.net/114743
<whitequark>
yes
<whitequark>
it's annoying, too.
<Drup>
hugomg: well, if you are ok with existential quantification, you can do taht
<Drup>
it's not a general solution, though
<hugomg>
how do you existentially qualify (and why is it not general)?
<hugomg>
I tried using gadts because thats the only section of the manual w/ "existential in it"
<Drup>
type 'a t = My_type : ('b, 'a) my_type -> 'a t
<Drup>
the usual way
<Drup>
you can try
<hugomg>
weird, I got a "The parameter cannot be eliminated in the result type." error whenI tried that
<Drup>
but you'll see it's not very nice
arj has joined #ocaml
<hugomg>
nvm, I think it was just a typo
<hugomg>
yeah, I imagine needing to wrap and unwrap the GADT a lot might be apain but I guess horrible is less worse than impossible :)