ChanServ changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | http://www.ocaml.org | OCaml 4.01.0 announce at http://bit.ly/1851A3R | Logs at http://irclog.whitequark.org/ocaml
<BitPuffin> yeah I guess
<BitPuffin> it felt like a natural thing though since I have let const
Rizo_Isrof has left #ocaml [#ocaml]
tobiasBora has quit [Read error: Connection reset by peer]
tobiasBora has joined #ocaml
<vfoley> BitPuffin: thanks!
<BitPuffin> Drup: however then you also have arrays which are mutable for some reason
<BitPuffin> so the purity kind of falls apart
<BitPuffin> vfoley: no problem :)
tobiasBora has quit [Remote host closed the connection]
<Drup> BitPuffin: ocaml never claimed to be pure :p
tobiasBora has joined #ocaml
<BitPuffin> Drup: no I know
<BitPuffin> Drup: But I mean the "mutable only in one place" thing
<BitPuffin> since you could just as well implement refs with a one dimensional array
alexst_ has quit [Ping timeout: 240 seconds]
dapz has joined #ocaml
tobiasBora has quit [Remote host closed the connection]
tobiasBora has joined #ocaml
dapz has quit [Client Quit]
tobiasBora has quit [Remote host closed the connection]
tobiasBora has joined #ocaml
<BitPuffin> Drup: so, OCaml is used quite a lot to implement compilers, do you think idris is similarly good for compiler dev or is there anything about ocaml that makes it so popular for it
tobiasBora has quit [Remote host closed the connection]
tobiasBora has joined #ocaml
<Drup> idris a bit too young for that, I think
<BitPuffin> also is [1;] a hideous way to represent a list with one element in it? ; represents cons cells. So I guess [;] is an empty list. Although usually an empty list is just nil. However I think I want to reserve [] for array literals
<BitPuffin> not a huge fan of [|...|]
<BitPuffin> Drup: yeah probably, how come haskell isn't used more? laziness and other weirdness I guess
<Drup> purity is a huge pain in the ass, when you are writing a compiler
<BitPuffin> actually it would probably be [;1]
<Drup> because you're going to have state all over the place
<BitPuffin> I could imagine
<BitPuffin> could? can?
<BitPuffin> can
<BitPuffin> that said it probably makes for an easy to reason about compiler
<BitPuffin> :P
tobiasBora_ has joined #ocaml
tobiasBora has quit [Ping timeout: 252 seconds]
tobiasBora_ has quit [Remote host closed the connection]
hausdorff has quit [Remote host closed the connection]
dapz has joined #ocaml
Eyyub has quit [Quit: WeeChat 0.4.1]
hausdorff has joined #ocaml
waneck has quit [Read error: Connection reset by peer]
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
hhugo has joined #ocaml
hhugo has quit [Quit: Leaving.]
alexst has joined #ocaml
alexst has quit [Ping timeout: 252 seconds]
lordkryss has quit [Ping timeout: 272 seconds]
jao has quit [Ping timeout: 260 seconds]
oriba has quit [Quit: oriba]
struktured has quit [Ping timeout: 240 seconds]
q66 has quit [Quit: Leaving]
dapz has joined #ocaml
struktured has joined #ocaml
inhahe has left #ocaml [#ocaml]
studybo__ has quit [Ping timeout: 264 seconds]
alexst has joined #ocaml
studybot_ has joined #ocaml
alexst has quit [Ping timeout: 240 seconds]
penglingbo has joined #ocaml
Eyyub has joined #ocaml
ygrek has joined #ocaml
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexst has joined #ocaml
vfoley has quit [Ping timeout: 248 seconds]
alexst has quit [Ping timeout: 260 seconds]
shinnya has quit [Ping timeout: 255 seconds]
ustunozgur has joined #ocaml
ustunozgur has quit [Ping timeout: 255 seconds]
tnguyen has quit [Ping timeout: 248 seconds]
hausdorff has quit [Remote host closed the connection]
araujo has quit [Quit: Leaving]
alexst has joined #ocaml
alexst has quit [Ping timeout: 240 seconds]
axiles has joined #ocaml
alpounet has joined #ocaml
Eyyub has quit [Ping timeout: 240 seconds]
BitPuffin has quit [Ping timeout: 264 seconds]
studybot_ has quit [Remote host closed the connection]
studybot_ has joined #ocaml
Eyyub has joined #ocaml
alexst has joined #ocaml
alexst has quit [Ping timeout: 260 seconds]
Eyyub has quit [Ping timeout: 264 seconds]
BitPuffin has joined #ocaml
robink has quit [Ping timeout: 240 seconds]
robink has joined #ocaml
philtor has joined #ocaml
ygrek has quit [Ping timeout: 252 seconds]
alexst has joined #ocaml
alexst has quit [Ping timeout: 252 seconds]
Simn has joined #ocaml
philtor has quit [Ping timeout: 255 seconds]
dapz has joined #ocaml
_0xAX has joined #ocaml
hhugo has joined #ocaml
ygrek has joined #ocaml
maattdd has joined #ocaml
parcs has quit [Read error: Connection reset by peer]
parcs has joined #ocaml
gallais has quit [Remote host closed the connection]
ygrek has quit [Ping timeout: 248 seconds]
alexst has joined #ocaml
eikke__ has joined #ocaml
wwilly has joined #ocaml
alexst has quit [Ping timeout: 248 seconds]
wwilly has quit [Remote host closed the connection]
wwilly has joined #ocaml
maattdd has quit [Ping timeout: 255 seconds]
Kakadu has joined #ocaml
cago has joined #ocaml
ygrek has joined #ocaml
siddharthv_away is now known as siddharthv
siddharthv is now known as siddharthv_away
siddharthv_away is now known as siddharthv
sagotch has joined #ocaml
ustunozgur has joined #ocaml
jsvgoncalves has joined #ocaml
thomasga has joined #ocaml
AltGr has joined #ocaml
divyanshu has joined #ocaml
divyanshu has quit [Client Quit]
divyanshu has joined #ocaml
eikke__ has quit [Ping timeout: 272 seconds]
eikke__ has joined #ocaml
ggole has joined #ocaml
fraggle_ has quit [Read error: Connection reset by peer]
hhugo has quit [Quit: Leaving.]
hhugo has joined #ocaml
BitPuffin has quit [Ping timeout: 255 seconds]
fraggle_ has joined #ocaml
ontologiae has joined #ocaml
jludlam has joined #ocaml
hhugo has quit [Quit: Leaving.]
jludlam is now known as jonludlam
xexonixxexillion has quit [Remote host closed the connection]
fraggle_ has quit [Remote host closed the connection]
fraggle_ has joined #ocaml
BitPuffin has joined #ocaml
lordkryss has joined #ocaml
avsm has joined #ocaml
ontologiae has quit [Ping timeout: 248 seconds]
ustunozgur has quit [Remote host closed the connection]
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
ustunozgur has joined #ocaml
ollehar has joined #ocaml
avsm has quit [Quit: Leaving.]
Rizo_Isrof has joined #ocaml
Rizo_Isrof is now known as rizo
rizo has left #ocaml [#ocaml]
rizo has joined #ocaml
sagotch has quit [Quit: Page closed]
rizo has left #ocaml [#ocaml]
siddharthv is now known as siddharthv_away
agarwal1975 has quit [Quit: agarwal1975]
ontologiae has joined #ocaml
<mbac> hey is it relative cake to use Node.js from js_of_ocaml?
thomasga has quit [Quit: Leaving.]
<whitequark> it's no different from using browser APIs
<mbac> what i mean is can i do the hideously unsafe but convenient things i want to do in Node.js but with magic ocaml pixie dust sprinkled on them to make them safe
<mbac> i'm guessing this is the limit http://ocsigen.org/js_of_ocaml/manual/bindings
ustunozgur has quit [Remote host closed the connection]
ollehar has quit [Ping timeout: 255 seconds]
eikke__ has quit [Ping timeout: 255 seconds]
agarwal1975 has joined #ocaml
siddharthv_away is now known as siddharthv
Antoine59 has quit [Ping timeout: 264 seconds]
Antoine59 has joined #ocaml
hhugo has joined #ocaml
eikke__ has joined #ocaml
thomasga has joined #ocaml
pjdelport has joined #ocaml
Eyyub has joined #ocaml
_andre has joined #ocaml
Eyyub has quit [Ping timeout: 255 seconds]
ustunozgur has joined #ocaml
siddharthv is now known as siddharthv_away
ontologiae has quit [Ping timeout: 260 seconds]
ollehar has joined #ocaml
fraggle_laptop has quit [Remote host closed the connection]
ustunozgur has quit [Remote host closed the connection]
nicoo is now known as devient
devient is now known as nicoo
ustunozgur has joined #ocaml
ustunozgur has quit [Read error: No route to host]
ustunozgur has joined #ocaml
eikke__ has quit [Ping timeout: 252 seconds]
eikke__ has joined #ocaml
ollehar has quit [Ping timeout: 255 seconds]
isomorphismes has quit [Ping timeout: 245 seconds]
_whitelogger_ has joined #ocaml
lopex_ has joined #ocaml
hexo has joined #ocaml
_tca_ has quit [Changing host]
_tca_ has joined #ocaml
pjdelport has quit [Changing host]
pjdelport has joined #ocaml
lopex_ has quit [Changing host]
lopex_ has joined #ocaml
Armael has joined #ocaml
hexo is now known as shallow
jerith_ is now known as jerith
tizoc has joined #ocaml
amiller_ has joined #ocaml
ygrek has quit [Ping timeout: 248 seconds]
libertas has quit [Ping timeout: 248 seconds]
huza has joined #ocaml
cross_ is now known as cross
ggherdov has joined #ocaml
cago has quit [Quit: cago]
cago has joined #ocaml
ustunozgur has quit [Remote host closed the connection]
ustunozgur has joined #ocaml
lordkryss has quit [Read error: Connection reset by peer]
penglingbo has quit [Ping timeout: 248 seconds]
shinnya has joined #ocaml
tnguyen has joined #ocaml
ollehar has joined #ocaml
ygrek has joined #ocaml
<pjdelport> Newbie question: is there any way to show the type of an expression in the REPL, a la GHCi's :type in Haskell?
<adrien_oww> type it
<Armael> just type the expression
<pjdelport> Is the only way to do that for a functor to assign it, like module Foo = Map.Make(String);; ?
<Armael> in 4.02 there will be #show, but for the moment I think so
<Kakadu> in 4.01 you type `moduel L=List` and see signature. in 4.02 you need `#show_module List`
divyanshu has quit [Quit: Computer has gone to sleep.]
lopex_ is now known as lopex
<Drup> mbac: yes you can, look at how graphics is implemented in js_of_ocaml sources
<Drup> basically, just write the js crap and bind it with the link you gave :p
darkf 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]
avsm has joined #ocaml
troydm has joined #ocaml
vincentbalat has quit [Ping timeout: 252 seconds]
vincentbalat has joined #ocaml
cago has quit [Ping timeout: 264 seconds]
struktured has quit [Ping timeout: 240 seconds]
penglingbo has joined #ocaml
divyanshu has joined #ocaml
pgomes has joined #ocaml
cago has joined #ocaml
Hannibal_Smith has joined #ocaml
thomasga has quit [Quit: Leaving.]
divyanshu has quit [Quit: Computer has gone to sleep.]
thomasga has joined #ocaml
teiresias has quit [Quit: leaving]
teiresias has joined #ocaml
ontologiae has joined #ocaml
divyanshu has joined #ocaml
BitPuffin has quit [Ping timeout: 252 seconds]
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
<pjdelport> Another newbie question: is there some way of automatically lifting or deriving functional versions of constructors, short of explicit definitions like let cons x xs = Cons (x, xs) ?
<pjdelport> (I'm coming from a Haskell background, and i'm learning OCaml out of curiosity.)
huza has quit [Quit: WeeChat 0.3.8]
<companion_cube> there may be something from janestreet, based on camlp4
<rks`> indeed, variantslib
<rks`> but I wouldn't advise people to start using camlp4
_0xAX has quit [Remote host closed the connection]
<Drup> against*
<Drup> meh
divyanshu has quit [Quit: Computer has gone to sleep.]
WraithM has joined #ocaml
divyanshu has joined #ocaml
S11001001 has joined #ocaml
S11001001 has quit [Changing host]
S11001001 has joined #ocaml
<pjdelport> rks`: Cool. Is Camlp4 basically analogous to Template Haskell, or more general than that?
<pjdelport> I'm seeing it called both an OCaml macro system, and a framework for writing programming language parsers.
<Drup> camlp4 is just raw AST extension/modification
<Drup> you just write a parser for the new syntactic constructs and the ocaml code it's supposed to output.
<Drup> is template haskell type aware ? I never played with it ?
jao has quit [Ping timeout: 272 seconds]
<pjdelport> Drup: I haven't really used TH extensively, but it reifies Haskell syntax as a normal ADT, and gives you syntactic extensions for quasiquotation and splicing.
philtor_ has joined #ocaml
<Drup> only quasiquotation and splicing ? nothing else ?
tane has joined #ocaml
<Drup> (by that I mean : "no random syntax ?")
cago has quit [Quit: cago]
<pjdelport> A bunch of other things; like there's a quotation monad that automatically handles variable renaming, for namespace hygiene.
<Drup> (camlp4 also provide easy definition of quotations)
<Drup> I see
<pjdelport> Well, the call it the Q monad; i'm not sure if it actually stands for quotation.
<Drup> so yeah, camlp4 is a bit more powerful
<pjdelport> "they call", even
<ousado> I think TH has some notion of types
<pjdelport> Within the splicing operators, you can basically implement whatever syntax you like.
<Drup> pjdelport: within the quotation* you mean.
<pjdelport> So you can have [sq| ... ] inside your Haskell code, where sql is a TH function that parses the contents of the bracket as SQL into whatever you want.
<Drup> the camlp4 native syntax for that is <:sql< .. >>
<Drup> (you can modify it)
<pjdelport> Right, sorry. [foo| ... |] is the quotation syntax, $( ...) is the splicing syntax.
mcclurmc has joined #ocaml
divyanshu has quit [Ping timeout: 264 seconds]
slash^ has joined #ocaml
eikke__ has quit [Ping timeout: 252 seconds]
divyanshu has joined #ocaml
divyanshu has quit [Ping timeout: 255 seconds]
divyanshu has joined #ocaml
racycle has joined #ocaml
ollehar has quit [Ping timeout: 255 seconds]
tani has joined #ocaml
studybot_ has joined #ocaml
tane has quit [Ping timeout: 264 seconds]
isBEKaml has joined #ocaml
NoNNaN has joined #ocaml
ontologiae has quit [Ping timeout: 260 seconds]
BitPuffin has joined #ocaml
<def`> alexander: check
ontologiae has joined #ocaml
Anarchos1 has joined #ocaml
dapz has joined #ocaml
shinnya has quit [Ping timeout: 264 seconds]
Kakadu has quit [Quit: Page closed]
jwatzman|work has joined #ocaml
<orbitz> are linear tyeps something that is orthogonal enough to add to a langauge or does it infect a language?
<avsm> infects a language, destroys it, and throws it off a cliff for good measure
<Drup> avsm: you think Rust has been thrown of the cliff ? :p
<Drup> off*
<avsm> *something that is orthogonal enough to add to a langauge
<avsm> rust designed with them in mind
<Drup> right :p
<pjdelport> OCaml does not have an infix constructor syntax, right?
<Drup> I have the exact same opinion for dependent types =')
Anarchos1 has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
ontologiae has quit [Ping timeout: 260 seconds]
<Drup> pjdelport: not yet, maybe one day : https://github.com/ocaml/ocaml/pull/76
<whitequark> Drup: ooooh cool
olauzon has joined #ocaml
<pjdelport> Drup: I'm also trying to learn Idris on the side. :) Dependent types seem pretty awesome so far, but it's definitely mind-explosion territory.
<pjdelport> Drup: That's good to know, re. infix constructors!
ollehar has joined #ocaml
<Drup> (it's merely a proposal, nobody of the core team has given me any opinion about it, so ...)
Submarine has joined #ocaml
yomimono has joined #ocaml
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
q66 has joined #ocaml
dapz has joined #ocaml
divyanshu has quit [Ping timeout: 248 seconds]
fold has quit [Ping timeout: 264 seconds]
thomasga has quit [Quit: Leaving.]
Anarchos has joined #ocaml
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
AltGr has left #ocaml [#ocaml]
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
divyanshu has joined #ocaml
ollehar has quit [Ping timeout: 255 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
typedlambda has quit [Ping timeout: 252 seconds]
fold has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
divyanshu has quit [Ping timeout: 272 seconds]
philtor has joined #ocaml
divyanshu has joined #ocaml
Kakadu has joined #ocaml
typedlambda has joined #ocaml
hhugo has quit [Quit: Leaving.]
dapz has joined #ocaml
dapz has quit [Client Quit]
yastero_ is now known as yastero
<philtor_> anyone here familiar with Core.Async ?
ontologiae has joined #ocaml
shinnya has joined #ocaml
testcocoon has quit [Quit: Coyote finally caught me]
<asmanur_> philtor_: ask away
thomasga has joined #ocaml
ontologiae has quit [Ping timeout: 264 seconds]
testcocoon has joined #ocaml
jwatzman|work has joined #ocaml
penglingbo has quit [Ping timeout: 272 seconds]
ontologiae has joined #ocaml
robink has quit [Ping timeout: 240 seconds]
dapz has joined #ocaml
divyanshu has quit [Ping timeout: 240 seconds]
robink has joined #ocaml
<orbitz> philtor_: yep
alpounet has quit []
divyanshu has joined #ocaml
robink has quit [Ping timeout: 264 seconds]
robink has joined #ocaml
thomasga has quit [Quit: Leaving.]
hhugo has joined #ocaml
robink has quit [Ping timeout: 240 seconds]
ygrek has quit [Ping timeout: 255 seconds]
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
eikke__ has joined #ocaml
robink has joined #ocaml
thomasga has joined #ocaml
thomasga has quit [Client Quit]
divyanshu has quit [Ping timeout: 256 seconds]
hhugo has quit [Quit: Leaving.]
thomasga has joined #ocaml
avsm has quit [Quit: Leaving.]
divyanshu has joined #ocaml
manizzle has quit [Ping timeout: 260 seconds]
isBEKaml has quit [Quit: leaving]
philtor_ has quit [Ping timeout: 255 seconds]
dapz has joined #ocaml
seanmcl has joined #ocaml
arjunguha has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
ollehar has joined #ocaml
divyanshu has quit [Ping timeout: 264 seconds]
isBEKaml has joined #ocaml
rizo has joined #ocaml
manizzle has joined #ocaml
isBEKaml has quit [Quit: leaving]
seanmcl has quit [Read error: Connection reset by peer]
thomasga has quit [Quit: Leaving.]
philtor_ has joined #ocaml
alexst has joined #ocaml
Hannibal_Smith has quit [Ping timeout: 255 seconds]
axiles has quit [Remote host closed the connection]
thomasga has joined #ocaml
_andre has quit [Quit: leaving]
philtor_ has quit [Ping timeout: 256 seconds]
Mandus has quit [Ping timeout: 245 seconds]
Arthur_R` is now known as Arthur_Rainbow
cdidd has quit [Ping timeout: 264 seconds]
azynheira has joined #ocaml
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
cdidd has joined #ocaml
ollehar has quit [Ping timeout: 255 seconds]
avsm has joined #ocaml
araujo has joined #ocaml
araujo has quit [Changing host]
araujo has joined #ocaml
yomimono has quit [Ping timeout: 240 seconds]
azynheira has quit [Quit: Leaving]
Anarchos1 has joined #ocaml
ontologiae has quit [Ping timeout: 255 seconds]
manizzle has quit [Remote host closed the connection]
dapz has joined #ocaml
ollehar has joined #ocaml
rizo has quit [Quit: rizo]
ggole has quit []
ustunozgur has quit [Remote host closed the connection]
tani has quit [Quit: Verlassend]
ustunozgur has joined #ocaml
S11001001 has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
Anarchos1 has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
philtor_ has joined #ocaml
olauzon has quit [Ping timeout: 272 seconds]
Simn has quit [Quit: Leaving]
NoNNaN has quit [Remote host closed the connection]
eikke__ has quit [Ping timeout: 248 seconds]
NoNNaN has joined #ocaml
jao has quit [Ping timeout: 256 seconds]
Submarine has quit [Remote host closed the connection]
thomasga has quit [Ping timeout: 240 seconds]
ollehar has quit [Ping timeout: 255 seconds]
Anarchos1 has joined #ocaml
eikke__ has joined #ocaml
Anarchos1 has quit [Client Quit]
Thooms has joined #ocaml
eikke__ has quit [Ping timeout: 255 seconds]
philtor_ has quit [Ping timeout: 248 seconds]
arjunguha has quit [Quit: Textual IRC Client: www.textualapp.com]
shinnya has quit [Ping timeout: 255 seconds]
topher has joined #ocaml
topher has left #ocaml [#ocaml]
shinnya has joined #ocaml
tobiasBora has joined #ocaml
clog has quit [Ping timeout: 248 seconds]
tobiasBora has quit [Remote host closed the connection]
eikke__ has joined #ocaml
tobiasBora has joined #ocaml
Thooms has quit [Ping timeout: 256 seconds]
tobiasBora has quit [Client Quit]
tobiasBora_ has joined #ocaml
tobiasBora_ has quit [Ping timeout: 245 seconds]
tobiasBora__ has joined #ocaml
tobiasBora__ has quit [Client Quit]
agarwal1975 has quit [Quit: agarwal1975]
Kakadu has quit [Quit: Konversation terminated!]
avsm has quit [Quit: Leaving.]
philtor_ has joined #ocaml
dapz has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
maattdd has joined #ocaml
jwatzman|work has quit [Quit: jwatzman|work]
darkf has joined #ocaml
philtor_ has quit [Ping timeout: 240 seconds]
maattdd has quit [Ping timeout: 240 seconds]
jonludlam has quit [Remote host closed the connection]
azynheira has joined #ocaml
ustunozgur has quit [Remote host closed the connection]
dapz has joined #ocaml
madroach has quit [Ping timeout: 252 seconds]
madroach has joined #ocaml
philtor_ has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
jwatzman|work has joined #ocaml
eikke__ has quit [Ping timeout: 240 seconds]
<_habnabit> can merlin-mode be told about syntax extensions like lwt and bitstring?
<_habnabit> i can't seem to figure out how to make it not choke when i use syntax extensions
<Drup> it needs to be hardcoded
philtor_ has quit [Ping timeout: 248 seconds]
<_habnabit> hardcoded where?
<Drup> in merlin
<_habnabit> ah
<_habnabit> so, not really feasible then?
<Drup> so, for lwt, you can put "EXT lwt" in your .merlin
<Drup> for bitstring ... you can put a bug report asking nicely and eventually, it will be done
<_habnabit> ahh
<_habnabit> i see
<_habnabit> so you mean that merlin only knows about particular syntax extensions
<Drup> but it's not a per extension syntax bassis
<Drup> yes, exactly
<_habnabit> 'Merlin doesn't support (nor plan to support) Camlp4.' oh :(
<Drup> don't despair ! with enough cookies, we will convince def` to implement support for ppx
<_habnabit> haha
<_habnabit> def`, do iiiit :D