[chuck-users] imports/includes

Curtis Ullerich curtullerich at gmail.com
Sun Aug 16 00:30:39 EDT 2020


Makes sense; thank you for the details. A more restricted sense of
importing than normal sporking might be good, like only allowing importing
of class and method definitions. Pre-constructor class code makes that a
little messier.

By the way, does anyone get notified when new pull requests are made on the
ChucK repo, or should I be tagging someone?

On Fri, Aug 14, 2020 at 9:01 AM Jack Atherton <lja at ccrma.stanford.edu>
wrote:

> I think this is an artifact of the type checker. It will run on a single
> file before any of the lines in the file are run. So, if you're trying to
> use a class that's only being imported with a Machine.add declaration, that
> declaration is not going to run before the type checker gets to the line
> where you use it. But, if a file has two Machine.add declarations, then the
> type isn't used in that file, so the type checker doesn't complain, then at
> runtime the first .add is run, followed by the second.
>
> I guess a Machine.import would need to compile and run the file during
> compile time, which might be non-trivial because I'm not sure that the
> compiler can be gracefully interrupted. Maybe the "import" keyword is the
> way to go. This might be straightforward to do by adding a few rules to the
> grammar and making import be a reserved word, and allow a number of import
> statements (only?) at the top of of a program.
>
> I have definitely faced the same issue when I was working on utility
> classes.
>
> ~Jack
>
> On Sat, Aug 8, 2020 at 11:46 AM Curtis Ullerich <curtullerich at gmail.com>
> wrote:
>
>> Thanks for confirming. I subscribed to the issue in case it gains
>> traction.
>>
>> I found it curious that Machine.add used in the header of control.ck
>> doesn't work, but it works if the libs and control.ck are Machine.added
>> in the same file. Why is that?
>>
>>
>> On Sat, Aug 8, 2020, 11:35 Michael Heuer <heuermh at gmail.com> wrote:
>>
>>> Hello Curtis,
>>>
>>> In LiCK there is one big import.ck file (your second method)
>>>
>>> https://github.com/heuermh/lick/blob/master/import.ck
>>>
>>> I typically use it with two terminal windows, in one
>>>
>>> $ chuck --loop
>>>
>>> and in the other
>>>
>>> $ chuck + import.ck
>>> $ chuck + other-stuff.ck
>>>
>>> See also
>>>
>>> Add namespaces and import statements
>>> https://github.com/ccrma/chuck/issues/109
>>>
>>> Cheers,
>>>
>>>    michael
>>>
>>>
>>> On Aug 8, 2020, at 12:56 PM, Curtis Ullerich <curtullerich at gmail.com>
>>> wrote:
>>>
>>> What's the state of the art for imports/includes?
>>>
>>> If I have files lib0.ck and lib1.ck that declare public classes both
>>> used in control.ck, I understand these to be the two options for
>>> running them:
>>>
>>> chuck lib0.ck lib1.ck control.ck
>>>
>>> or, make another file control-main.ck:
>>> Machine.add("lib0.ck");
>>> Machine.add("lib1.ck");
>>> Machine.add("control.ck");
>>>
>>> and run it as:
>>> chuck control-main.ck
>>>
>>> I thought it would work to use Machine.add("lib0.ck"); Machine.add("
>>> lib1.ck"); as the first line of control.ck and then just run chuck
>>> control.ck, but the included classes are not found.
>>>
>>> Are these the two options, or is there another way that can support
>>> transitive inclusion (not having to list each util file for every program
>>> that uses them)?
>>>
>>> Thanks,
>>> Curtis
>>> _______________________________________________
>>> chuck-users mailing list
>>> chuck-users at lists.cs.princeton.edu
>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>
>>>
>>> _______________________________________________
>>> chuck-users mailing list
>>> chuck-users at lists.cs.princeton.edu
>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200815/b0c69042/attachment.html>


More information about the chuck-users mailing list