In terms of defining any kind of variable, the language and its associated
semantics should have a [bottom] value. Interestingly, FriCAS does have
such a value defined. However, what is not clear is whether this [bottom]
can serve for all domains.

There are a couple of alternatives here. One is that every domain has its
own [bottom] value seperate from all other domains. Another is that all
domains inherit the same [bottom] value.

I am in the process of looking at the FriCAS language to see where the
semantic definition is either problematic or not defined. There appears to
be quite a number of such things to fix. Reading the various threads shows
that some serious language definitions are required.

Regards to all of you


On Tue, 7 Nov 2023, 11:28 pm Ralf Hemmecke, <r...@hemmecke.org> wrote:

> On 11/7/23 02:29, Waldek Hebisch wrote:
> >> Yes, exactly that is the point. qnew claims to return an object of type
> %,
> >> but, in fact, it doesn't.
> >
> > Well, result of 'qnew' is uninitialized, but this does not differ
> > much from (note no initialization)
> >
> > a : T
>
> Maybe technically (i.e. how it is implemented in the compiler) it gives
> similar things, but conceptually, I would say that "a:T" is different.
> It is a declaration and thus just a hint to the compiler/interpreter
> that when this identifier is used it is to be considered as something of
> type T. However, I would expect the compiler to yell at me when I write
> code like
>
> =======================
> )abbrev package FOO Foo
> Foo: E == I where
>    E ==> with
>      foo: () -> Integer
>    I ==> add
>      foo(): Integer ==
>        a: Integer
>        b: Integer := a
> =======================
>
> Unfortunately, it doesn't. :-(
>
> > Would you say that a does not have type T?
>
> It has type T, but after a declaration a:T, there is not yet reservation
> of memory on my computer, so in fact, I do not yet have a variable, just
> a hint to the compiler that the identifier "a" has type T when it comes
> to type checking.
>
> >>> We could add the followowing to description of 'qnew':
> >>>
> >>> Use only when you know what you are doing.
> >>
> >> That is one thing, but does not give enough information. How should a
> user
> >> know what he is doing? Where would he get this information from?
> >
> > One of fundamental commandments of programming is:
> >
> > "Thou shall not attempt to read uninitialized variables"
>
> Of course. But putting a big warning sign is much better than just
> mystically saying "Use only when you know what you are doing." and not
> telling where to get information about it. It is like saying "Do not use
> this function, because we are not telling you what it does."
>
> I do not quite get your rejection of more informative documentation.
> Put whatever you want into the ++ docstring.
> I just wanted to say that I am more on the side of having documentation
> that does not require uses to look at the code in order to understand
> what a function does.
>
> > This is general programming knowledge, to get such knowledge
> > Dijkstra "Discipline of programming" may be good start.
>
> Are you saying that people how haven't read this, should not use FriCAS?
> I fear that then many mathematicians are excluded from or shy away from
> FriCAS.
>
> > But there is more to this: people may think that someting like
> >
> > a := qnew(4, 4)$Matrix(Float)
> > b := a(1,1) - a(1, 1)
>
> Why? a(1,1) is clearly the same as elt(a,1,1), i.e. use of a in a
> function. Forbidden by my ++ suggestion.
>
> > Do you want to add a warning in FriCAS book in section describing
> > declarations that one should initialize variables before use?
>
> Yes, why not. We all know that there is a difference between a FriCAS
> (programming) variable and a variable (i.e. something that evaluates to
> itself). In traditional CAS that's not totally easy to understand for a
> first time user.
>
> Ralf
>
> --
> You received this message because you are subscribed to the Google Groups
> "FriCAS - computer algebra system" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to fricas-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/fricas-devel/1afe4a05-d804-42ca-802f-6f813f6501eb%40hemmecke.org
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/CAEnaMTFcE4k5BsCx-%2BhDsV4%3DsoF2u%3Dhx4ckV1vaGdZvXpNZXPQ%40mail.gmail.com.

Reply via email to