I use Mathematica, which under the covers is very Lisp like, though with names 
outside the brackets, comma separators, and square brackets. EG `a + b` is 
really:

    Add[a, b]

The editor however supports all sorts of input formats including the above two 
and renders in full mathematical glory, e.g.:

    Integrate[a Sin[:theta:], {:theta:, 0, :pi:}]

The above displays, could be entered with, and can be edited with full integral 
sign with limits, Greek, etc. Note how space (between a and Sin) is a shortcut 
for * in Mathematica. Also you don’t enter spaces (other than multiply) or 
layout text, the editor does those (though you can override) in a word 
processor style dynamic layout. Different fonts are extensively used and 
comments contain rich text and images and diagrams (like playgrounds). 

Food for thought about what might be possible for a Swift editor. 

-- Howard.

> On 1 Sep 2017, at 11:27 am, John McCall via swift-evolution 
> <[email protected]> wrote:
> 
>>> On Aug 31, 2017, at 8:51 PM, André “Zephyz” Videla via swift-evolution 
>>> <[email protected]> wrote:
>>> these versions of the math operators don't quite work the same way as the 
>>> standard ones (e.g. `+` can throw), but they still carry math semantics 
>> 
>> 
>> That is exactly what I argue should be avoided. When you see `+` you don’t 
>> expect it to throw. What’s more they don’t carry “math” semantics at all 
>> because for example
>> 
>> Func * (Double, Measurement) -> Measurement is not even associative.
> 
> It's not a group operation, but it is consistent with the concept of scalar 
> multiplication in a vector space.  People sometimes forget that mathematical 
> notations are in fact human languages, which is it say that they're heavily 
> ambiguous and contextual; there are plenty of texts where you see things like 
> S_ij and it's simply understood that i and j are in fact independent indices 
> into the family S.  You could undoubtedly design a parser that understood 
> that sort of rule, but would it ultimately parse a reasonable programming 
> language?  I don't think so.
> 
> I would argue that there is a much broader philosophical truth here.  
> Programming is not, and never can be, a pure exercise in mathematics, and the 
> concepts necessary for understanding programming are related to but 
> ultimately different from the concepts necessary for understanding 
> mathematics.  That is, Dave Sweeris's mathematicians and physicists are 
> almost certainly misunderstanding their confusion: saying that the syntax is 
> wrong implies that there could be a syntax that could be right, i.e. a syntax 
> that would allow them to simply program in pure mathematics.  That is a 
> misapprehension just as deep as the belief that there could be a programming 
> language that would allow one to simply program in conversational English or 
> Korean.  Even the ability to extract code from a proof assistant like Coq or 
> Agda — and writing a proof in Coq or Agda is pretty far from the daily grind 
> of most mathematicians — doesn't belie this, because ultimately the exact 
> code extracted matters to a programmer in a way that the exact form of a 
> known-valid proof does not matter to a mathematician.
> 
> John.
> 
>> I agree that operators for this kind of functions should exist and are the 
>> right syntactic tool. But I disagree with the current implementation. My 
>> proposition for the example of `*` is as follow:
>> 
>> This signature happens quite often `(Number, T) -> T`. It would seem quite 
>> intuitive to have a dedicated operator for all “Scalar multiplication” which 
>> would be visually distinct from `*` (for example **, or Unicode ⊗) and 
>> consistent across codebases. 
>> 
>> For a + operator that throws, I would imagine a “TryAddable” protocol with a 
>> `+!` operator which can throw. I agree that it is visual noise, but I argue 
>> that it has tremendous value: consistant operator semantics.
>> 
>>> (Also, I really doubt changing concatenation to `++` is going to fly. Swift 
>>> is not Haskell.)
>> I doubt those remarks are very constructive. The point still stands: I find 
>> value in having different operators for different semantics.
>> 
>>> On 1 Sep 2017, at 01:54, Brent Royal-Gordon <[email protected]> wrote:
>>> 
>>>> On Aug 31, 2017, at 3:40 PM, André Videla via swift-evolution 
>>>> <[email protected]> wrote:
>>>> 
>>>> Something I could imagine is deprecate operator overloading and constrain 
>>>> them to a single Type. For example, the operator `+` could be constrained 
>>>> to the protocol `Addable` and has the signature `infix func + (Self, Self) 
>>>> -> Self` and is commutative. Similarly, we could have a protocol 
>>>> `Concatenable` which has its own operator (e.g.: ++ ) and is not 
>>>> commutative.
>>> 
>>> 
>>> These are basically "bag of syntax protocols" which aren't really usable 
>>> generically, so we don't want this design. And if you tied this to the 
>>> numeric protocols, then you couldn't use `+` for things that are 
>>> numeric-ish but don't quite fit the protocols. For instance, I have a 
>>> library that adds `+` and `*` operators to `Foundation.Measurement`; these 
>>> versions of the math operators don't quite work the same way as the 
>>> standard ones (e.g. `+` can throw), but they still carry math semantics and 
>>> so `+` is the right operator for them. If `+` was exclusively tied to a 
>>> particular protocol with a particular signature, I wouldn't be able to do 
>>> that.
>>> 
>>> (Also, I really doubt changing concatenation to `++` is going to fly. Swift 
>>> is not Haskell.)
>>> 
>>> -- 
>>> Brent Royal-Gordon
>>> Architechies
>>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to