I'd be concerned about huge cores building up if someone's e.g. playing
around with molds, but something like this would definitely be nice

On Tuesday, 16 August 2016, Philip Monk <philip.m...@tlon.io> wrote:

> vii) Hoon at the dojo doesn't change the subject for future commands.  In
> general, hoon twigs can only change the subject for their own children.
> The `=<var> <twig>` prefix is a dojo feature to add variables to your
> subject, so you could get into the habit of prefixing your lines with `=it
> `.  I agree, however, that the dojo should do this for you.  It's probably
> not that hard of a change.
>
> On Mon, Aug 15, 2016 at 11:01 AM, Zach Gotsch <orbipe...@gmail.com
> <javascript:_e(%7B%7D,'cvml','orbipe...@gmail.com');>> wrote:
>
>> I started out with the Urbytes, which were great and super easy to
>> follow. After I read the three which are available I dived into the Hoon
>> guide (in order, freely disengaging if I didn't feel ready for stuff or
>> didn't see the point of things yet). It was much denser and more difficult.
>> I think I would have benefitted from some more depth in the examples at
>> http://urbit.org/docs/hoon/examples/.
>>
>> i) Cool, I'll check it out.
>>
>> ii) Heh, I am just one of those traditionalist type-lovers, but I kind of
>> expected `=` to be the sort of function which doesn't hold truck with
>> types. In Urbyte 0, it mentions that types are just unsigned integers of
>> arbitrary length. `=` shows that this isn't quite the whole story. In my
>> opinion (which probably isn't worth much yet, admittedly!) `=` checking
>> types will keep a lot of silly bugs from happening, and the pragmatic thing
>> to do is to keep an eye out for them.
>>
>> iii) Got it.
>>
>> iv) Filed, https://github.com/urbit/urbit/issues/769
>>
>> v) Yes, meant `@dr` thanks Anton. Brain wires got crossed, everything
>> makes sense again!
>>
>> vi) Ah yes, I see now after reading your answer and the documentation a
>> little more closely.
>>
>> vii) Is possible to do something like `=.(it <previous twig value> .)`
>> and make that the new subject? Disclaimer: this didn't work in my dojo and
>> I'm not sure why, so I'm guessing the answer is "no, and I'm not sure why
>> you would think that".
>>
>> viii) Ah, didn't realize that the type was its own thing. Makes more
>> sense now.
>>
>> Thanks for the great answers.
>>
>>
>>
>> On Mon, Aug 15, 2016 at 9:58 AM Curtis Yarvin <cur...@tlon.io
>> <javascript:_e(%7B%7D,'cvml','cur...@tlon.io');>> wrote:
>>
>>> No, it's just a gnarly little bug.  To be useful, it would have to be
>>> consistent.
>>>
>>> On Mon, Aug 15, 2016 at 12:38 PM, Raymond Pasco <r...@the.ug
>>> <javascript:_e(%7B%7D,'cvml','r...@the.ug');>> wrote:
>>> > Are you sure @n and @f being pseudo-invalid pseudo-odors isn’t
>>> deliberate? It’s a useful measure of type-safety that you can’t have `@n`3.
>>> >> On Aug 15, 2016, at 11:20 AM, Anton Dyudin <an...@tlon.io
>>> <javascript:_e(%7B%7D,'cvml','an...@tlon.io');>> wrote:
>>> >>
>>> >> iv) One of my "way too fancy to be practical rn" ideas is
>>> abbreviation of printed nouns via replacing sections with .^(... %gx
>>> /=dojo=/n), which could work on arbitrarily large nouns incl cores and
>>> such. Not much you can do if you have to render the whole noun in one go
>>> thought, yeah.
>>> >>
>>> >> v) I think you mean @dr, which would in fact be 2^-16 seconds. @t is
>>> text though, was the core error %bad-utf8?
>>> >>
>>> >> On Monday, 15 August 2016, Curtis Yarvin <cur...@tlon.io
>>> <javascript:_e(%7B%7D,'cvml','cur...@tlon.io');>> wrote:
>>> >> Not at all, Zach, great questions.  I have only one question in
>>> >> response (Customer Feedback Survey #42): which docs did you read in
>>> >> which order, and which helped the most?
>>> >>
>>> >> i) The pretty-printing of floats (and everything) is not in :dojo, but
>>> >> in hoon.hoon (++co) (specifically in r-co).  Note that I didn't write
>>> >> the floating-point code -- it's a contributor's work (Max Greer).
>>> >>
>>> >> ii) In older versions of Hoon there was no constraint on equality
>>> >> testing, because you can test any two nouns for equality.  This was
>>> >> only one of many things in Hoon that horrified people with a
>>> >> traditional typed FP background.  In this case I decided that the
>>> >> traditionalists were right, because I have seen this check turn up
>>> >> bugs.  On the other hand, most other people who know Hoon are a little
>>> >> horrified by most of my recent changes, so it could be that I'm just
>>> >> losing my mojo.  In any case, equality testing requires one side of
>>> >> the test to be a subtype of the other (nest within it).
>>> >>
>>> >> iii) A core contains compiled Hoon code in Nock form.  An invertible
>>> >> printer would have to decompile it, or something -- basically
>>> >> impossible.  You've lost informatoion.
>>> >>
>>> >> iv) Ha!  This is a bug (if a small one).  Do you want to file it?
>>> >> You'll get valuable Bug Points which may in future be exchangeable for
>>> >> exciting action figures.
>>> >>
>>> >> v) This is because (a) we can't statically verify auras (for obvious
>>> >> reasons, since Hoon is not Coq), and (b) we don't in practice check
>>> >> them adequately before feeding them to the console, resulting in wacky
>>> >> formatting for invalid strings (another small bug).
>>> >>
>>> >> vi) One, Hoon can't actually validate that a mold is idempotent
>>> >> (because not Coq).  Two, ;; doesn't normalize; if (mold a) doesn't
>>> >> equal a, it crashes.  There are cases where normalization is good
>>> >> practice, but they tend to be the exception, even though defining
>>> >> molds as normalizers is a good design.  For instance, in networking,
>>> >> Urbit has definitely moved away from Postel's law, which seems to be a
>>> >> lot less relevant when you have, like, types and stuff.
>>> >>
>>> >> vii) There isn't but that's a great idea (thanks ghci).  There is
>>> >> history with a kill buffer, though, so ^P^A^K^N^Y will do the same
>>> >> thing.  I'd have to think about how to fit this into the dojo, though,
>>> >> it's non-obvious.
>>> >>
>>> >> viii) The "type" output in the prettyprinter is its own thing -- it is
>>> >> not either a mold or a span, just a thing derived from inspecting the
>>> >> span.  See under "not invertible."  In this case, we see that your
>>> >> structure is a repeating structure of the form {i/item t/tail}, which
>>> >> happens to be what ++list makes, so we're basically saying it's a
>>> >> list.  If you make this same span with any other mold, though, you'll
>>> >> get the same results -- all typing in Hoon is structural.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On Mon, Aug 15, 2016 at 6:13 AM, Zach Gotsch <orbipe...@gmail.com
>>> <javascript:_e(%7B%7D,'cvml','orbipe...@gmail.com');>> wrote:
>>> >> > Hey I was looking at some of the Hoon resources this weekend and I
>>> had a few
>>> >> > questions and things I didn't understand. I hope this is an
>>> appropriate
>>> >> > place for my questions.
>>> >> >
>>> >> > i)
>>> >> > There seems to be some sort of output formatting for floats, since
>>> >> >
>>> >> >> (add:rs .0.1 .0.2)
>>> >> > .3e-1
>>> >> >
>>> >> > but
>>> >> >
>>> >> >> (add:rd .~0.1 .~0.2)
>>> >> > .~3.0000000000000004e-1
>>> >> >
>>> >> > Where can I see how the pretty-printing in dojo is happening (if
>>> that's even
>>> >> > what this is...)?
>>> >> >
>>> >> > ii)
>>> >> > I don't think I understand how constant nouns (rocks?) are
>>> represented.
>>> >> > %a has aura (mold? not sure of the difference here either) $a, but
>>> the raw
>>> >> > value 97
>>> >> > %97 also has raw value 97, but aura $97
>>> >> >
>>> >> > I would expect =(%a %97) to be .y, since I don't expect the types
>>> to have
>>> >> > any bearing on equality testing. Instead it is an error. I guess my
>>> main
>>> >> > question here is "When do types (er, auras?) matter?" Something
>>> like (add
>>> >> > %97 1) doesn't cause an error, and produces 98, which I expect if
>>> add
>>> >> > doesn't care about types. Side note, casting the rocks seems to
>>> prevent the
>>> >> > error and I get the behavior I expect:
>>> >> >
>>> >> >> =(`@ud`%a `@ud`%97)
>>> >> >
>>> >> > %.y
>>> >> >
>>> >> >
>>> >> > iii)
>>> >> > From the docs: "When we print b, or any core, we see that typed noun
>>> >> > printing can't be an invertible function in Hoon". I don't
>>> understand why
>>> >> > it's not invertable. Is it because the battery is Nock, and you
>>> can't enter
>>> >> > nock code in Hoon?
>>> >> >
>>> >> > iv)
>>> >> > @n seems to be a thing but I can't use it at the prompt without
>>> causing an
>>> >> > error. Is this like undefined/bottom in haskell?
>>> >> >
>>> >> > v)
>>> >> > I was messing around with auras and I was wondering if `@tr`1 was
>>> something
>>> >> > like ~s1 (or milliseconds or microseconds). When I typed it into
>>> dojo, it
>>> >> > printed all sorts of stuff and overwrote the prompt. What is the
>>> stuff that
>>> >> > it prints and why does this happen? (After typing this out, I
>>> realized that
>>> >> > it's a runtime error of some kind. Where can I learn how to
>>> interpret the
>>> >> > printed stuff?)
>>> >> >
>>> >> > vi)
>>> >> > In the documentation, it says ;; applies a mold, asserting fixed
>>> point. All
>>> >> > molds should have fixed points for all inputs because they are
>>> idempotent,
>>> >> > right? So is this just a function application of the mold and an
>>> assertion
>>> >> > that it is, in fact idempotent?
>>> >> >
>>> >> > vii)
>>> >> > Is there a way to refer to the last twig in the dojo prompt (like
>>> `it` in
>>> >> > ghci)?
>>> >> >
>>> >> > viii)
>>> >> > When I do:
>>> >> >
>>> >> >> ? (gulf `@u`0 `@u`5)
>>> >> >   it(@)
>>> >> > ~[0 1 2 3 4 5]
>>> >> >
>>> >> > I don't understand the type of gulf's output, it isn't a cell, and
>>> I haven't
>>> >> > seen `it(@)`. Does `it` mean "iterated". Is `@` a type parameter
>>> here?
>>> >> >
>>> >> >
>>> >> > I hope this wasn't too much for the mailing list but since the
>>> network is
>>> >> > down I haven't been able to bother people on :talk
>>> >> >
>>> >> > Zach
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > You received this message because you are subscribed to the Google
>>> Groups
>>> >> > "urbit" group.
>>> >> > To unsubscribe from this group and stop receiving emails from it,
>>> send an
>>> >> > email to urbit-dev+unsubscr...@googlegroups.com
>>> <javascript:_e(%7B%7D,'cvml','urbit-dev%2bunsubscr...@googlegroups.com');>
>>> .
>>> >> > To post to this group, send email to urbit-dev@googlegroups.com
>>> <javascript:_e(%7B%7D,'cvml','urbit-dev@googlegroups.com');>.
>>> >> > For more options, visit https://groups.google.com/d/optout.
>>> >>
>>> >> --
>>> >> You received this message because you are subscribed to the Google
>>> Groups "urbit" group.
>>> >> To unsubscribe from this group and stop receiving emails from it,
>>> send an email to urbit-dev+unsubscr...@googlegroups.com
>>> <javascript:_e(%7B%7D,'cvml','urbit-dev%2bunsubscr...@googlegroups.com');>
>>> .
>>> >> To post to this group, send email to urbit-dev@googlegroups.com
>>> <javascript:_e(%7B%7D,'cvml','urbit-dev@googlegroups.com');>.
>>> >> For more options, visit https://groups.google.com/d/optout.
>>> >>
>>> >> --
>>> >> You received this message because you are subscribed to the Google
>>> Groups "urbit" group.
>>> >> To unsubscribe from this group and stop receiving emails from it,
>>> send an email to urbit-dev+unsubscr...@googlegroups.com
>>> <javascript:_e(%7B%7D,'cvml','urbit-dev%2bunsubscr...@googlegroups.com');>
>>> .
>>> >> To post to this group, send email to urbit-dev@googlegroups.com
>>> <javascript:_e(%7B%7D,'cvml','urbit-dev@googlegroups.com');>.
>>> >> For more options, visit https://groups.google.com/d/optout.
>>> >
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "urbit" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to urbit-dev+unsubscr...@googlegroups.com
>> <javascript:_e(%7B%7D,'cvml','urbit-dev%2bunsubscr...@googlegroups.com');>
>> .
>> To post to this group, send email to urbit-dev@googlegroups.com
>> <javascript:_e(%7B%7D,'cvml','urbit-dev@googlegroups.com');>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"urbit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to urbit-dev+unsubscr...@googlegroups.com.
To post to this group, send email to urbit-dev@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to