Great! This will allow me to include the SJulia REPL in the SJulia package (IIUC), so that one doesn't need to build a fork of Julia. --John
El lunes, 20 de abril de 2015, 23:14:31 (UTC+2), Keno Fischer escribió: > > The REPL code was designed to have new modes added externally. See e.g. > the RunCxxREPL function here: > https://github.com/Keno/Cxx.jl/blob/master/src/CxxREPL/replpane.jl > > On Mon, Apr 20, 2015 at 5:04 PM, <[email protected] <javascript:>> > wrote: > >> I think it would be great to submit the REPL mod, but it is not >> acceptable as it is, although, for the most part, it is pretty solid. >> Currently, a period as the first character switches both in and out of >> SJulia mode. Some advice from the REPL authors would be useful. I was not >> able to implement switching out of SJulia with backspace, you have to type >> the period again. Also, the mod introduces a bug that causes Julia to crash >> when greek symbols are entered in a certain context, even in normal Julia >> mode. I am not able to get command line completion to work in a clean way >> in SJulia. As Marcus suggested, making a general facility for passing input >> through a macro seems like the way to go. It probably would not be too hard >> for someone who understands the REPL code. I might find time to do it, with >> some help. >> >> --John >> >> El lunes, 20 de abril de 2015, 20:08:17 (UTC+2), Viral Shah escribió: >>> >>> It would be great to have the REPL.jl fork submitted as a PR. Even if it >>> is not accepted, something good will certainly come out of it. >>> >>> -viral >>> >>> >>> >>> > On 20-Apr-2015, at 11:34 pm, Marcus Appelros <[email protected]> >>> wrote: >>> > >>> > Currently some modifications to REPL.jl are needed, there is a fork >>> > made which does exactly that. >>> > >>> > Am trying to test some of the examples in the SJulia readme, keep in >>> > mind that this is on a old sourcebuilt 0.4 master. >>> > >>> > ``` >>> > julia> m= @ex Expand((a+b)^10) >>> > Expand((a + b) ^ 10) >>> > >>> > julia> m[2] >>> > ERROR: BoundsError() >>> > in getindex at /home/quin/SJulia/src/mxpr_type.jl:267 >>> > ``` >>> > >>> > Apparently the only method found is: >>> > >>> > ``` >>> > julia> t= @ex (a+b)^10 >>> > (a + b) ^ 10 >>> > >>> > julia> typeof(t) >>> > Mxpr{Power} >>> > >>> > julia> tt=SJulia.mxpr(:Expand,t) >>> > Expand((a + b) ^ 10) >>> > >>> > julia> ttt=typeof(tt) >>> > Mxpr{Expand} >>> > >>> > julia> methods(SJulia.apprules,(ttt,)) >>> > 1-element Array{Any,1}: >>> > apprules(x) at /home/quin/SJulia/src/apprules.jl:9 >>> > ``` >>> > >>> > Which is set to equal x. Also there's this: >>> > >>> > ``` >>> > julia> function f(n);@ex Expand((a+b)^n);end >>> > f (generic function with 1 method) >>> > >>> > julia> f(3) >>> > Expand((a + b) ^ n) >>> > ``` >>> > >>> > The Fibbonacci example does work. >>> > >>> > On 20 April 2015 at 19:14, Viral Shah <[email protected]> wrote: >>> >> Would it be possible to install SJulia as a Julia package, and switch >>> >> between SJulia and Julia - kind of like how we have the help> and the >>> shell> >>> >> prompts, which can be activated with ? and ; >>> >> >>> >> -viral >>> >> >>> >> >>> >> On Monday, April 20, 2015 at 5:46:08 PM UTC+5:30, >>> [email protected] >>> >> wrote: >>> >>> >>> >>> Here is SJulia >>> >>> >>> >>> https://github.com/jlapeyre/SJulia >>> >>> >>> >>> sjulia> f = (x^y + y^z + z^x)^3 >>> >>> (x ^ y + y ^ z + z ^ x) ^ 3 >>> >>> >>> >>> sjulia> f = (x^y + y^z)^3 >>> >>> (x ^ y + y ^ z) ^ 3 >>> >>> >>> >>> sjulia> g = Expand(f) >>> >>> x ^ (3 * y) + 3 * (x ^ (2 * y)) * (y ^ z) + 3 * (x ^ y) * (y ^ (2 * >>> z)) + >>> >>> y ^ (3 * z) >>> >>> >>> >>> SJulia is very close in spirit to Mathematica (Wolfram). This is >>> more or >>> >>> less a language written in Julia, >>> >>> although it can be made to communicate well with Julia. From the >>> user's >>> >>> perspective, there are advantages and disadvantages to >>> >>> implementing symbolic capability as an extension to languages like >>> Julia >>> >>> or Python rather than as >>> >>> another language. I think it is possible to have a language that >>> supports >>> >>> both. >>> >>> >>> >>> Also, CAS can describe various software tools that are designed to >>> do very >>> >>> different things. For instance, a CAS may be intended to implement >>> more or >>> >>> less mathematical rigor. It may have a hierarchy of computer >>> language types >>> >>> meant to represent mathematical objects. Or >>> >>> it may (like Mathematica, Maple, and Maxima) be based on >>> 'expressions' >>> >>> that are essentially devoid of meaning. All of these distinctions, >>> >>> particularly the latter, regarding purpose, are typically confused >>> in >>> >>> discussions on internet fora. >>> >>> >>> >>> I think that Julia is a great language for symbolic computation. >>> Have fun! >>> >>> --John >>> >>> >>> >>> >>> >>> On Sunday, April 19, 2015 at 7:47:34 PM UTC+2, Marcus Appelros >>> wrote: >>> >>>> >>> >>>> Hi Kevin, thanks for the link! From the end of that thread: >>> >>>> >>> >>>> "Has anybody written pure Julia symbolic math for things like: >>> >>>> >>> >>>> f = (x**y + y**z + z**x)**100 >>> >>>> g = f.expand()" >>> >>>> >>> >>>> "As far as I know there is no Julia package which supports such >>> symbolic >>> >>>> expressions and manipulation." >>> >>>> >>> >>>> Now there is! >>> >>>> >>> >>>> Saw a more recent dev discussion calling for someone to write a >>> package >>> >>>> like this. Have looked through the package list many times and >>> never found >>> >>>> anything that appeared alike the vision of Equations, SymPy has >>> some common >>> >>>> functionality however certainly didn't start developing in Julia to >>> use >>> >>>> Python. >>> >>>> >>> >>>> Developing this code is indeed very enjoying and as more of the >>> planned >>> >>>> features become released a solid user base will be established, >>> have >>> >>>> expanded the todolist with an impelling to read the discussion in >>> your link >>> >>>> so as to hasten the construction of such a foundation, as per your >>> >>>> recommendation. >>> >>>> >>> >>>> With love. <3 >>> >>> >
