[ / / / / / / / / / / / / / ] [ dir / ausneets / cafechan / caos / had / leftpol / sissy / sw / thestorm ][Options][ watchlist ]

/tech/ - Technology

You can now write text to your AI-generated image at https://aiproto.com It is currently free to use for Proto members.
Name
Email
Subject
Comment *
File
Select/drop/paste files here
* = required field[▶ Show post options & limits]
Confused? See the FAQ.
Expand all images

File (hide): 3b2d6fdf91e0d98⋯.png (283.53 KB, 1268x665, 1268:665, Screenshot from 2018-01-08….png) (h) (u)

[–]

 No.849881>>849931 >>850186 >>851581 [Watch Thread][Show All Posts]

https://www.youtube.com/watch?v=eLl6_k_fZn4

Lisp thread. Do you use Lisp? What dialect?

Have you written a shitposting bot in it yet?

I personally feel attracted to Common Lisp, but how realistically can I expect encounter it professionally if I'm not the one pushing it? And how about Clojure?

 No.849884>>849887

hoon :^)


 No.849887>>849895


 No.849895

>>849887

Just a shitpost, it's Urbits main language.

I dabble in racket, the whole batteries included thing makes it easy to learn, I've been reading H2DPe.


 No.849900

What dialect?

CAML


 No.849914>>849916 >>849952 >>850228

What's the actual difference between scheme and Common Lisp? I've been planning on learning CP, but I started reading SICP which uses Scheme, so I'm thinking that I might as well just learn that instead.


 No.849916>>850210

File (hide): 917503a000b15a0⋯.png (756.28 KB, 1276x715, 116:65, Screenshot from 2018-01-08….png) (h) (u)

I really wanted to get into Clojure, but pic related makes me so mad. Webdev shit is shitting up everything good in this world.

>>849914

Well, I'm no expert, but I think Scheme has a much more concise standard. On the flip side, it is much more fractured. There is only one CL. And CL has a very big standard library.

I think in the end it doesn't matter which one you learn, since they're dialects of the same thing. Once you have a better idea of what you will be doing with the language, you can focus on one or the other.


 No.849920>>849921 >>849931 >>849942

File (hide): a6267382d406ff4⋯.png (108.64 KB, 497x372, 497:372, guile.png) (h) (u)

Use Guile: The Scheme dialect made by the GNU project.

It can be used as either a programming language of its own or an extension language to other GNU software.

https://www.gnu.org/software/guile/


 No.849921>>849925 >>849926 >>849938

>>849920

Too bad it's made by an insane leftist.


 No.849925

>>849921

>>leftist

>not anarcho-fascist

are you even trying to not appear as a brainlet?


 No.849926

>>849921

Who fucking cares? Is the code voting on your behalf?


 No.849931

>>849881 (OP)

just the racket i learned in school but im getting better every day

>>849920

>(((parentheses)))

>names like 'guile', 'scheme', and 'racket


 No.849938

>>849921

So? It's developed under GNUs wing and while there is one main developer there appear to be 5 regular committers.

The project should be safe in case of a "Leah" event.


 No.849942>>850129

>>849920

>The Scheme dialect made by the GNU project.

There are at least two others - MIT Scheme and SCM. Maybe more since the last time I checked.


 No.849952

>>849914

Scheme is simply a more modern dialect of Lisp.


 No.850129>>850181

>>849942

MIT Scheme is GNU Scheme. The implementation of Scheme at MIT is a GNU project.


 No.850181

>>850129

That's my point. Guile, MIT Scheme and SCM are all Scheme dialects made by the GNU project.


 No.850186

>>849881 (OP)

When I first started poking around with it I got the Symbolics LM emulator working on Linux and ran Genera, now I use emacs+slime and it's not as good. Clozure CL is nice though.


 No.850208

>(((lisp)))


 No.850210

>>849916

Clojure will do more for less than whatever npm webpack monstrosity you will eventually create.


 No.850228>>851642 >>851668

>>849914

Scheme and Common Lisp are both members of the Lisp family of programming languages, but they are different languages.

After the original Lisp was created different people and corporations started making their own dialects of Lisp and all those dialects were in some way incompatible with each other. They all died out eventually as new languages began adopting features of Lisp and the Lisp machine companies went out of business. Common Lisp was created as a sort of common ground so that one could write portable Lisp programs.

CL is a huge language that includes everything and the kitchen sink and is ugly as fuck due to having bits and pieces from everywhere. On the other hand it gives you a lot of what you need to write real-world applications. However, there is still a lot left up to the implementation, so no real-world program will ever be 100% portable (no 100% portable way of opening a file). The best thing you can do is wrap up the unportable parts behind an interface so that the unportable code can be nicely isolated. Or use a library. Or just pick one implementation and roll with it.

Scheme is its own Lisp and as such it doesn't suffer from the uglyness of Common Lisp. Scheme is also a scam created by (((Sussman))) where MIT students pay tuition and end up learning a language that is completely useless outside the classroom. It's a really nice language though, so the various implementations have added their own stuff to actually make it useful in the real world. The problem is that everyone adds their own flavour of extensions.

How bad is it? Well, until the R6RS standard there was not even a module system, so only if you wrote all your code in one file was it actually portable. What it effectively means that each implementation is its own language. R6RS tried to address this issue and create a language that is actually usable, but many found it to be too bloated, so barely any implementation is standard-compliant. R7RS tried to appease both camps by splitting the languages into two languages: R7RS small is a small language that adds some sorely-needed features (module system, record types), while R7RS is meant to be a huge real-world language (possibly even larger than Common Lisp). R7RS small is complete and Chibi Scheme is its reference implementation:

http://synthcode.com/scheme/chibi/

R7RS large will still take years to be finished. Some implementations like Guile or Racket have essentially given up by this point and barely even pretend to be Schemes. They support some of R6RS, but in practice they are doing their own thing now in order to implement an actually useful language.

> TL;DR

Common Lisp are two different languages with common ancestry. Techniques that work in one work in the other, so pick whichever one either looks better to you or has the libraries you want to use.


 No.851459>>851467 >>851482 >>851497

There are no good lisp implementations. Common lisp is insane and basically removes the whole point of lisp by separating the function and variable scopes (among others) and not having hygienic macros which devolves into C #define forest garbage. Meanwhile there is no well-performing scheme implementation. In either case there is no gc-less or provable-latency lisps, and none that offer competent (this is the keyword) static type annotation (for example cl implementations do runtime checks and warnings instead of erroring out on mismatches and doing compile-time checks, while scheme implementations such as racket's (>) are broken and can't express many types used in the standard lib).


 No.851467

>>851459

>trying to shoehorn static typing into scheme and lisp

this is not what the languages were designed for. CL has them so the compiler can optimize your shitcode better, not to be a haskell clone.


 No.851482

>>851459

>muh types


 No.851497>>851556

>>851459

>no good lisp implementations

SBCL is OK.

ccl is OK.

>whole point of lisp

>function and variable scopes

ya whatevr yu jst lk speling variabls lik 'lst', 'ary', &c. fugging leetspeakr.

>hygienic macros

voodoo bullshit.

read Let Over Lambda

>C #define forest garbage

what. CL's version of '#define forest garbage' is a whole lot better than the actual thing.

>no well-performing scheme

Chicken is OK.

>no gc-less or provable-latency lisps

well that's true


 No.851556

>>851497

> ya whatevr yu jst lk speling variabls lik 'lst', 'ary', &c. fugging leetspeakr.

You wouldn't have that problem if there was a static type system that lets you specify the types of objects. In math you always specify the "type" of a variable and then you can get away with single-letter variable names. I don't think computer programs should use single-letter names, but names like "list"/"lst", "array"/ary" and such are indicative that the reader is not certain which type goes where. Instead of

(define (map lst proc) (...))

the signature should be something like

(define (map [items : (Listof T)] [f : (-> T T)]) (...))

Now I instantly know what goes where. Static type systems also protect me from mistakes like when a return type might be a value or some sort of null. When I switched one of my libraries from Racket to Typed Racket I was appaled by often I did not check for EOF.


 No.851581

>>849881 (OP)

> What dialect?

Racket; the elegance of scheme with batteries included.


 No.851642>>851668

>>850228

<Scheme is also a scam [sic] created by (((Sussman))) where MIT students pay tuition and end up learning a language that is completely useless outside the classroom.

First point: MIT taught Scheme to learn to think as a programmer, they never made any pretenses about Scheme being something you stamp on your CV, then you get a 6 figure salary with your own office and a really hawt secretary. Second point: While MIT hasn't (as far as I am concerned) completely dropped Scheme, they did switch to teaching Python to undergraduates in CS[1].

<It's a really nice language though, so the various implementations have added their own stuff to actually make it useful in the real world.

I actually think that Scheme is one of the most elegant languages out there, and Scheme is actually used in practical software such as Guix(SD) (package manager) and Haunt (static web site generator).

<The problem is that everyone adds their own flavour of extensions.

Maybe we should call it the Scheme language family instead of the Scheme programming language.

[1]: https://cemerick.com/2009/03/24/why-mit-now-uses-python-instead-of-scheme-for-its-undergraduate-cs-program/


 No.851668>>852294

>>850228

>>851642

The only well maintained Scheme variant is PLT (Racket).


 No.852294

>>851668

>what is guile

>what is chicken




[Return][Go to top][Catalog][Screencap][Nerve Center][Cancer][Update] ( Scroll to new posts) ( Auto) 5
29 replies | 2 images | Page ?
[Post a Reply]
[ / / / / / / / / / / / / / ] [ dir / ausneets / cafechan / caos / had / leftpol / sissy / sw / thestorm ][ watchlist ]