var arr1 = [4, 2, 3, 6]
sort arr1
# Doesn't work
let arr2 = [4, 2, 3, 6]
sort arr2
You'll get a warning about the latter from the compiler (and nimsuggest for editors).285 karma · joined January 14, 2017
var arr1 = [4, 2, 3, 6]
sort arr1
# Doesn't work
let arr2 = [4, 2, 3, 6]
sort arr2
You'll get a warning about the latter from the compiler (and nimsuggest for editors).This would be the case that I referred to in the second paragraph of my last comment. I would agree if we were talking about explicit type checks, but a portable Common Lisp program cannot consider implicit added by the compiler to be part of the programs semantics, because a compliant implementation is not required to add any type checks. SBCL just adds them as a debugging aid, but if you rely on type errors being signaled, you have to check them explicitly with `CHECK-TYPE` or something equivalent.
> Think of soundness as a guarantee that if the program type checks
This would be where our view is different. You consider soundness to be a guarantee given by the compiler, while I consider it a property of the program itself (which can sometimes be checked by the compiler, and sometimes by the programmer). Common Lisp does not give any guarantee of type safety. SBCL simply tries to be helpful and catch most real world type errors, but ultimately it is the programmer who must ensure the soundness of the program.
I suppose you could argue that someone might write a program that relies on being able to call a function with the wrong type of arguments and catch the resulting error. In this case removing the type checks obviously changes the behavior of the program. This however would not be portable across different CL implementations anyway, so you should really be using explicit type checks.
> But the difference is the frequency in which it is lost. In SBCL Lisp, if you want fast code, the answer is "almost all the time".
SBCL code is fast enough for the vast majority of a program even with full run time type checking, so you would only be using `(safety 0)` for very performance critical code, whose safety you have ensured yourself. The `(safety 0)` declaration also does not disable any compile time checking that SBCL does.
If you don't like key-chords then Emacs probably won't work for you, but just in case the video you watched wasn't clear about it, most of the markup is handled pretty much automatically by Emacs. Table creation and editing in particular works pretty much like in a graphical application. For example, if you want to create a table like
| foo | bar | quux | qwerty |
|-----+-----+------+--------|
| 10 | 20 | 30 | 40 |
| 50 | 60 | 70 | 80 |
All you need to do is insert the first row with the vertical bars to separate fields, |foo|bar|quux|qwerty
Then hit `C-c RET` and Emacs turns it into | foo | bar | quux | qwerty |
|-----+-----+------+--------|
| | | | |
with the cursor ready on the first cell under `foo`. Then you can just write the value and use tab to move to the next cell like in any spreadsheet program. Emacs will add new rows as needed and adjusts the table formatting automatically as you move to the next field (or when you hit `C-c C-c` if you don't want to move).There are typical table editing commands available like moving, deleting and inserting columns or rows with [shift+]alt+arrows.
For example, in Org you can add task management data, scheduling information and arbitrary properties to the outline,
#+COLUMNS: %ITEM %TODO %ASSIGNED_TO %SCHEDULED %PRIORITY
#+PROPERTY: ASSIGNED_TO_ALL juki some other people
* TODO [#A] Some task with priority A
SCHEDULED: <2019-04-20>
:PROPERTIES:
:ASSIGNED_TO: juki
:END:
Some description.
This defines a task with a custom property `ASSIGNED_TO` whose value can be one of ["juki", "some", "other", "people"], which can be viewed and edited in a column view. It could also be used by a custom export-backend or some other tool.For another example, you can add formulas to a table,
#+CAPTION: A table with formulas.
| foo | bar | Row sum |
|-----+-----+---------|
| 10 | 20 | 30 |
| 30 | 40 | 70 |
|-----+-----+---------|
| 40 | 60 | 100 |
#+TBLFM: $3=vsum($1..$2)::@4=vsum(@I..@II)
Here the 10, 20, 30, 40 are added manually and the other cells are calculated by the sum-formulas. Since the results are inserted into the table, other tools can just skip over the TBLFM-metadata if they don't support it.One could, in theory, create an extended Markdown flavor that allows similar metadata, but that wouldn't be compatible with any existing tools anyway, so there's not much point.
> Tesla will establish a new committee of independent directors and put in place additional controls and procedures to oversee Musk’s communications;
You can use `helm-M-x` from Helm[1] to do the same in Emacs.
> shall, except as provided in subsection (b), be fined under this title or imprisoned not more than 10 years, or both.
> On 8 April 2014, the Court of Justice of the European Union declared the Directive 2006/24/EC invalid for violating fundamental rights. The Council's Legal Services have been reported to have stated in closed session that paragraph 59 of the European Court of Justice's ruling "suggests that general and blanket data retention is no longer possible".[18] A legal opinion funded by the Greens/EFA Group in the European Parliament finds that the blanket retention data of unsuspicious persons generally violates the EU Charter of Fundamental Rights, both in regard to national telecommunications data retention laws and to similar EU data retention schemes (PNR, TFTP, TFTS, LEA access to EES, Eurodac, VIS).[19]
(setq scroll-conservatively 30)[1]: https://ec.europa.eu/info/law/law-topic/data-protection/data...
> The European Commission has so far recognised Andorra, Argentina, Canada (commercial organisations), Faroe Islands, Guernsey, Israel, Isle of Man, Jersey, New Zealand, Switzerland, Uruguay and the US (limited to the Privacy Shield framework) as providing adequate protection.
[2]: https://ec.europa.eu/info/law/law-topic/data-protection/data...
Those sites all work exactly the same as StackOverflow and you can login with a single account. Just the rules regarding content are different. See for example https://softwareengineering.stackexchange.com/
There is also the Area 51 site for proposals for new sites: https://area51.stackexchange.com/