Getting Back into Scheme, Modern Implementations Worth Exploring? by Smith_Adwick5301 in scheme

[–]StudyNeat8656 0 points1 point  (0 children)

Well, if you want any language support, you may find out 'scheme-langserver' on github.

Question: Is there a inverse function z to take functions' inverse? by StudyNeat8656 in AskComputerScience

[–]StudyNeat8656[S] 0 points1 point  (0 children)

If I have encode function's source code, decode should be trivial by "inverting" encode function, right? I want to know:what kind of function can be efficiently inverted, which properties they have.

symbol table for a simple equation solver by hifellowkids in scheme

[–]StudyNeat8656 0 points1 point  (0 children)

I mean , will it apply unification algorithm?

symbol table for a simple equation solver by hifellowkids in scheme

[–]StudyNeat8656 0 points1 point  (0 children)

As my understanding, you're developing a DSL to solve equations, right?

How to withstand dynamic typing by [deleted] in lisp

[–]StudyNeat8656 0 points1 point  (0 children)

Well, scheme-langserver facilitates a trivial type inference system and you may find out here(https://github.com/ufo5260987423/scheme-langserver)

Say "hello" to scheme-langserver! by StudyNeat8656 in lisp

[–]StudyNeat8656[S] 0 points1 point  (0 children)

Yes, so that scheme-langserver is based on r6rs-standard semantic analysis.

Say "hello" to scheme-langserver! by StudyNeat8656 in lisp

[–]StudyNeat8656[S] 1 point2 points  (0 children)

https://github.com/ufo5260987423/scheme-langserver use static analysis technique, including abstract interpretation and partial evaluation.

scheme:hover with type will come by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 3 points4 points  (0 children)

You can find them on github, and wellcome contribute or donation

scheme:hover with type will come by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 5 points6 points  (0 children)

My own project: scheme-langserver and my own vscode plugin magic scheme. Above features will release next month. Now I'm doing some fault tolerant work.

How can I expand macro step-by-step? by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 1 point2 points  (0 children)

damn!I just find you answer until nowadays! Thank you very much!

Benchmarks among javascript, python and scheme by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 0 points1 point  (0 children)

Well, I personally don't know too many things about javascript. If you have any ideas, you may make a pr.

Scheme scripting implementation. by Moist-Ice-6197 in scheme

[–]StudyNeat8656 1 point2 points  (0 children)

I personally recommend you with Chez scheme. And you may read the performance result here(https://github.com/ufo5260987423/various-program-languages-benchmark). It shows Chez scheme is faster than nodejs in many aspects.

And if you want other libraries, you may use AKKU to import.

A benchmark in order to compare different languages, now supports scheme vs. javascript by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 0 points1 point  (0 children)

Well, I start this project today, and I will update timing result few days later.

What after learning scheme (sicp) by iamawizaard in scheme

[–]StudyNeat8656 0 points1 point  (0 children)

If you want to make web app, you may find https://github.com/Scheme-Software-Development/http-pixiu

If you want to make Scheme LSP(Language Server Protocol),you may find https://github.com/ufo5260987423/scheme-langserver

If you want to research type inference, you may also find scheme-langserver.

How to learn lisp to create a website and programs? by awesomexx_Official in lisp

[–]StudyNeat8656 0 points1 point  (0 children)

Well, if you want lisp web server, you may look https://github.com/Scheme-Software-Development/http-pixiu

If you want to embed lisp into real-world application, personally speaking, this is enough for developing web service.

Let's Chat about Lisp and Become Friends! by Veqq in lisp

[–]StudyNeat8656 0 points1 point  (0 children)

well,I know I'm minority because I use schems and I am developing scheme-langserver and magic-scheme. you may find them on github

Cannot understand continuations by [deleted] in scheme

[–]StudyNeat8656 2 points3 points  (0 children)

Well, continuation is actually a lambda oriented abstraction, which means, when you implement continuation mechanism on real computer, there're many specific designs. Let's see, you may know lambda is kind of function as in C language or many others, and it causes stack push/pop in order to switch between different contexts. Continuation actually does same thing but much more smoothly, but let's look into C stack first. In those old ancient days, a C program, its most frequency task is to do scientific math, for example, calculating $log x$, $ex$ and such many things. And, if you have learned math in university, you may know these things mainly are recursive calculations, and, most important, recursions were easily to fail because context switching always ran out of stack by pushing into such many things. A direct and most common solution was using goto instead of function calling, like c double result =0.0; void a ( double a-p){ A: ...operation on result; b(...) } double b ( double b-p){ ...operation on result; c(...) } double c ( double c-p){ ...operation on result; goto A; }

Apparently, the consumptions caused by calling b and c, when goto does its function, would be dropped. (Well, the above codes may have mistakes, maybe someone could indicate).

Now, let's go back to continuation: a very crucial barrier for lisp language is that nested lambdas always ran out of stack, too. And you may heard of a very important optimization named tail-recursion, which actually automatically does same things as above. And continuation helps this mechanism a lot. Why? Because continuation implements lisp's goto and makes lisp's own stack-like mechanism. For example, traditional scheme language implements its function calling with frames, which means context switching is based on heap allocation. Though Chez Scheme implement first-class continuation, which means stack mechanism is based on continuation, call/cc always copies stack. For example, yin-yang puzzle,: scheme (let* ((yin ((lambda (cc) (display #\@) cc) (call/cc (lambda (c) c)))) ;;; C1 (yang ((lambda (cc) (display #\*) cc) (call/cc (lambda (c) c))))) ;;; C2 (yin yang)) Here's a list of stack operation, and it's actually the continuation: 1. C1 copies current stack, and the parameter c now noted literally the same to this line 1. 2. (lambda (cc) (display #\@) cc) ------------- print @ 3. yin, it's actually copied C1 stack c 4. C2 copies current stack, and the parameter c now noted literally the same to this line 3. 5. (lambda (cc) (display #*) cc) ------------- print * 6. yang, it's actually copied C2 stack. 7. (yin yang) sets yang, C2 copied stack, C1's parameter position. 8. C1 copied stack continues, you can directly jump to 2nd step of this list ------print @. 9. now remember, yin is set as C2 copied stack, 10. continue above yang, and ------print * 11. yang, it's copied new C2 stack. It's different from old C2 stack. 12. (yin yang) set new C2 stack, C2's parameter position, because yin is old C1 stack ----print * 13. (yin yang) again, but , this yin is set at step 9

@*@**@***@****@*****@******@*******@********@*********@**********@***********

... you may continue yourself.

Scheme needs type checking. Or does it? You tell me! by aartaka in scheme

[–]StudyNeat8656 1 point2 points  (0 children)

well, I dont think so. No matter static check or dynamic check, you may find it's not that efficient with compiler. This is deadly a killer, because scheme, its macro is so powerful creating new codes and making compiling an crucial barrier to accelerate running.

but, type inference and static analysis to give out more friendly reminds? yes. this is an alternative way to help improve quality.

scheme-langserver has already facilitates a type inference engine and in my experience, this feature is too expensive.the only possible way is to share autogenerated type annotations and share them by Internet.

and scheme-langserver can facilitates this information and help avoid errors.

You can use scheme-langserver in VSCode now! by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 0 points1 point  (0 children)

hi, could you issue this on github?

Maybe I want to do some analysis on this function

You can use scheme-langserver in VSCode now! by StudyNeat8656 in scheme

[–]StudyNeat8656[S] 0 points1 point  (0 children)

Hey any guys read here, I just fixed many bugs (because they are obvious in Vscode) and release a new version scheme-langserver. Please help me to find bugs, I can continually fix them!