Good evening Ralf,

Thank you for your feedback and comments. I will give what you say some 
consideration as to whether or not the work I am doing will be useful to 
FriCAS itself. I may be the only one interested in what I am doing. 
However, when finished I will make it available for others to look at and 
use if they want.

regards and blessings to you and your family

Hill Strong

On Saturday, October 30, 2021 at 9:12:52 PM UTC+11 [email protected] wrote:

> Hi,
>
> > The current BOOT code is, for the most part, able to be rewritten in 
> > a language called Icon (or its descendant Unicon).
>
> Well, replacing one unfamiliar language by another isn't something we
> are currently looking for. Of course, since everything is open-source
> and you have time to spare, you can go in any direction you like and see
> how far you get. However, although I personally do not like programming
> in LISP or BOOT, I see the value (at least of LISP) and replacing it by
> a different language or even computing model would take quite a while
> and would probably not help much in attracting more people to FriCAS.
>
> > Icon and Unicon do not have Booleans anywhere in the language.
> > Booleans have been replaced with Success (provide a value) or Failure
> > (stop the computation).
>
> > If you are testing to see if a value is inside a range, you can do 
> > the following
> > 
> > if 5 < x < 100 then { do something } else { do something if it is
> > not }
>
> There is a sister-project to FriCAS (called Aldor) which aims at
> replacing the SPAD compiler by a non-lispy implementation. Rather than
> extending the SPAD language in many directions it rather reduced it so
> that quite a number of things can be done through library code instead
> of being language-defined.
>
> See https://github.com/aldorlang/aldor and
> http://www.aldor.org/docs/aldorug.pdf .
>
> Here is a little piece of code that I have found in the BasicMath
> library (unfortunately not commonly available) that *defines* the
> "a < x < b" syntax.
>
> BX ==> Cross(Boolean, X);
> +++ `BMOrderSyntaxPackage' provides the functions that enable
> +++ expressions like `1 < x < 10' (meaning `1 < x and x < 10')
> ++ to work correctly.
> OrderSyntaxPackage(X: OrderedSetCategory): with {
> <: (X, X) -> BX;
> <=: (X, X) -> BX;
>
> <: (BX, X) -> BX;
> <=: (BX, X) -> BX;
>
> <: (BX, X) -> Boolean;
> <=: (BX, X) -> Boolean;
>
> } == add {
> (x: X) < (y: X): BX == (x < y, y);
> (x: X) <= (y: X): BX == (x <= y, y);
> (bx: BX) < (y: X): BX == {(b,x):=bx; (b and x < y, y)}
> (bx: BX) <= (y: X): BX == {(b,x):=bx; (b and x <= y, y)}
> (bx: BX) < (y: X): Boolean == {(b,x):=bx; b and x < y}
> (bx: BX) <= (y: X): Boolean == {(b,x):=bx; b and x <= y}
> }
>
> With that in the library one can then use
>
> import from OrderSyntaxPackage(Integer);
> s: String := if 2 < x <= y <= 10 then "A" else "B"
>
> in order to assign either "A" or "B" to s depending on whether
> or not 2 < x <= y <= 10 holds.
>
> I would be much more happy to combine FriCAS with Aldor (and perhaps
> replace the Lisp and Boot part by what Aldor provides).
>
> However, also that is not soo easy, since it would mean to replace the
> FriCAS code that deals with an interactive session by a completely new
> system based on Aldor. Certainly doable, but obviously very
> time-consuming. And whether the result is something that is better than
> the current system based on LISP is yet to be proved.
>
> > There is much of the SPAD library files that can be directly 
> > translated in Icon.
>
> That is certainly not a goal. SPAD and even more Aldor (see Aldor User
> Guide) are lanugages that are developed with a mathematical/symbolic
> mindset.
>
> All the best
> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/ff5a70a8-2e0e-4060-848b-91373b73b65fn%40googlegroups.com.

Reply via email to