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.
