Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
junke
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
59 ms
·
541.
▲
by
junke
10y ago
A type checker for Python can say: "pass" , "reject" or "I don't know" . Statically typed languages (1) introduce limitations so that type checking is decidable (no incertitude), or (2) or treat &quo
542.
▲
by
junke
10y ago
"And they know what NB means" ;-)
543.
▲
by
junke
10y ago
It is pretty funny if you read it as a satire.
544.
▲
by
junke
10y ago
I like tkdiff and I am wondering why Eskil is not a series of patch on top of tkdiff instead of a different program. In fact, http://wiki.tcl.tk/3773 says: See also eskil for an extended version of tkdiff. Eskil
545.
▲
by
junke
10y ago
I don't object using fully qualified symbols to distinguish packages for the benefits of human readers. I care about human readers as much as you, don't worry about that. I am not talking about different symbols which happen to sh
546.
▲
by
junke
10y ago
> Readability matters. That's what I am telling you: in CL, your example does not make sense except in a package "FOO" where FOO:LIST is a function/macro, simply because there is absolutely no ambiguity between a fu
547.
▲
by
junke
10y ago
> I'd argue that you should do this anyway to clarify what you mean by "list" when you shadow a common name like that. Absolutely not, don't encourage people to do this in CL. Clojure is Clojure, you have to do this
548.
▲
by
junke
10y ago
As an example on non-list, literal data structure (atom), see: CL-USER> (ql:quickload :local-time) CL-USER> (in-package :local-time) LOCAL-TIME> (now) => @2016-08-05T17:41:54.492977+02:00 LOCAL-TIME> (
549.
▲
by
junke
10y ago
Are there people saying that you can't implement Common Lisp in OCaml/Haskell, with heterogeneous structures, dynamically typed and so on? You certainly can, but that's not an easy task. If your language does not support nati
550.
▲
by
junke
10y ago
> Is that the type of FOO or the return type of FOO? It is the type of FOO, it reads as: a function which takes one argument of any type (T) and returns exactly one value, which is either 42 or a string of length 9 . Another example:
551.
▲
by
junke
10y ago
That would start a flamewar. Don't forget marshmallows.
552.
▲
by
junke
10y ago
And so the compiler, who has no way to make informed decisions, is there to tell you which stylistic issues is more likely to introduce bugs or not, while being needlessly stubborn. A sufficiently bureaucratic compiler.
553.
▲
by
junke
10y ago
The type of FOO in SBCL is: (FUNCTION (T) (VALUES (OR (INTEGER 42 42) (SIMPLE-ARRAY CHARACTER (9))) &OPTIONAL)) SBCL is based on Kaplan & Ullman flow-graph analysis (inherited from CMUCL), n
554.
▲
by
junke
10y ago
The symbolic form is frankly unreadable and the kernel people don't need them because they probably already dream of octal permissions when asleep. For an alternative symbolic approach, here is how it is done in Lisp, thanks to SETF (a
555.
▲
by
junke
10y ago
What about different needs among the users of a same language?
556.
▲
by
junke
10y ago
My reaction to "differing use cases lend to different tools" was that tools and especially languages often accommodate multiple, sometimes contradictory use cases. I am not writing code that thousands of other engineers are going
557.
▲
by
junke
10y ago
That's why unused variables should be reported. What people are arguing about is errors vs. warnings. > things that can really cause bugs "can" means that they don't always cause bugs: other compilers treat such uncer
558.
▲
by
junke
10y ago
The "masochism" aspect makes Go part of Bondage and Discipline languages: http://c2.com/cgi/wiki?BondageAndDisciplineLanguage
559.
▲
by
junke
10y ago
I guess I don't write the same kind of tools as you, I never need word sized integers. Generally, I define the types according to the problem domain and don't require a specific bit layout. A different case arises when you excha
560.
▲
by
junke
10y ago
> Lisp is functional Not really, multi-paradigm. > and at least Go has reflection. Go is introspective. Lisp has both introspection (e.g. find-class allows to look at existing classes) and intercession (e.g. ensure-class creates/
561.
▲
by
junke
10y ago
I am really curious about the kind of tasks that are easily done in Go but for which Lisp doesn't quite fit.
562.
▲
by
junke
10y ago
You don't want to memmove an array which content is shared by another array, which is what slices are about.
563.
▲
by
junke
10y ago
User laumars was apparently misinterpreting part of a comment by saying that "unused" errors (not warnings, but errors) would in fact save the hypothetical "someone" that was claimed to be not disciplined enough to remov
564.
▲
by
junke
10y ago
> Except it does though, since that's the very behaviour you're complaining about. No, the meaning was: if someone cannot handle unused things, that someone is screwed. Go will not save him in other aspects which require a litt
565.
▲
by
junke
10y ago
Ada is probably the most real-software-engineers-dont-hack language ever designed, and yet compilers have flags to control checks and warnings.
566.
▲
by
junke
10y ago
Define unused imports/variables as warnings but produce an executable that first prints "This program is for debugging purposes only, it built with 133 warnings." and beeps loudly.
567.
▲
by
junke
10y ago
People are ok with compilers telling them what is wrong, they complain that Go wants to control when you fix the problem: "fix that import NOW, bad developer" is not opinionated, it is stupid. > Differing use cases lend cau
568.
▲
by
junke
10y ago
If you try this at home, don't forget to clean your environment afterward: (mkunbound '*p1*)
569.
▲
by
junke
10y ago
You did a great job and I am sorry that the discussion is mostly about the example. I saw the Scheme version and found it quite verbose, like some other people on this thread. That's what made me want to implement a CL one. Maybe if yo
570.
▲
by
junke
10y ago
For those saying that the code is too verbose, here is another version in Common Lisp: (defun jim (arg &optional path) (etypecase arg (string (format t "import ~{~(~A~).~}~A;~%" (reverse path) arg
More ›