Mizipzor
Mizipzor

Reputation: 52311

Is there a programming language that uses characters other than those in the (non-extended) ascii table?

I cant see who would make such a decision but is there any such language?

The reason I ask this (or some trivia, if you like) is that I just finished making the eighth iteration of my "developer" version of dvorak (big emphasis on special characters). And four keys are currently not used!

Since I dont ever want to stumble upon a new language to try, only to find out that my layout lacks a crucial special character I decided to ask the community.


If there never is a need for any other characters besides the basic ones, what would be the best use (for a programmer of course, this is SO) of unused keys? Something from the extended ascii table? Or purposefully leave them unused and do something cool with with AutoHotKey?

Upvotes: 14

Views: 4801

Answers (9)

Gabi Purcaru
Gabi Purcaru

Reputation: 31524

Yes, there is (at least one): APL

Here is Conway's Game of Life written in APL:


(source: wikimedia.org)

It uses this keyboard mapping:

Upvotes: 20

ebneter
ebneter

Reputation: 21475

The scripting language for the old Macintosh Programmer's Workshop (MPW) used lots of non-ASCII characters to implement what was basically a version of the Unix shell. In fact, some of the documentation is still available. It used ∑ for redirection, for example.

Upvotes: 2

cnd
cnd

Reputation: 33714

My fork of F# : https://github.com/Heather/fsharp

let ° msg = System.Console.WriteLine( msg.ToString() )

let ◄ = 5
let ★ x = x + ◄
let (-★-) x y = x + y

let © = "© 2013"

let ► =
    fun x -> 2 + x

sprintf  "Heather %s" project version © |> °
► ◄ |> fun ▼ ->
    ★ <| (▼ -★- ▼) |> °

Upvotes: 1

ains
ains

Reputation: 1446

Would this count?

Chinese version of Python
http://www.chinesepython.org/doc/tut/tut/node3.html

Chinese:

>>> 甲 = 12
>>> 乙 = 3
>>> 甲 + 乙
15
>>> 甲 + 乙**乙
39
>>> 甲 = 0 #(可以重新指定值)
>>> 乙 = 甲 + 1
>>> 寫 乙
1

English:

>>> j = 12
>>> y = 3
>>> j + y
15
>>> j + y**y
39
>>> j = 0
>>> y = j + 1
>>> print y
1

Upvotes: 1

Mechanical snail
Mechanical snail

Reputation: 30647

The de-facto standard Haskell implementation, GHC, supports Unicode syntax if

{-# LANGUAGE UnicodeSyntax #-}

is specified at the top of a file. This lets you use for function types and lambdas, for type classes, for list comprehensions, etc..

More precisely, the supported syntax is:

 ASCII   Unicode alternative
 ::      ∷ U+2237 PROPORTION
 =>      ⇒ U+21D2 RIGHTWARDS DOUBLE ARROW
 forall  ∀ U+2200 FOR ALL
 ->      → U+2192 RIGHTWARDS ARROW
 <-      ← U+2190 LEFTWARDS ARROW
 -<      ↢ U+2919 LEFTWARDS ARROW-TAIL
 >-      ↣ U+291A RIGHTWARDS ARROW-TAIL
 -<<       U+291B LEFTWARDS DOUBLE ARROW-TAIL
 >>-       U+291C RIGHTWARDS DOUBLE ARROW-TAIL
 *       ★ U+2605 BLACK STAR

Further, various libraries provide Unicode operators (using Haskell's support for Unicode characters in operator names): http://www.haskell.org/haskellwiki/Unicode-symbols

Upvotes: 9

Cowan
Cowan

Reputation: 37533

Fortress, a mathematical/scientific programming language developed by (among others) Java's Guy L Steele when he was still at Sun, extensively uses Unicode mathematical operators etc.

Not only is there a defined ASCII representation of the language, there's also a defined way of converting the ASCII into a 'rendered' version using TeX. You can also (as I understand i) use Unicode operators directly in your source -- there's just an ASCII 'shortcut' for stuff that's hard to type (as I understand it -- I'l admit I'm not sure on this point).

The site has an example of the source and how it's rendered.

Upvotes: 5

supercat
supercat

Reputation: 81115

PL/I uses an upside-down-L character for the "not" operator; the VM360 I used once upon a time used "^" as the ASCII equivalent (I don't think EBCDIC had "^").

Upvotes: 1

Jim Mischel
Jim Mischel

Reputation: 133950

C# allows variables to contain Unicode characters. For example, the character ɢ (Latin Small Capital G, U+0262) is a perfectly valid character in a C# variable.

Upvotes: 3

Charles
Charles

Reputation: 51411

Perl 6 has optional Unicode operators, as well as the ability to add user-defined operators.

You probably shouldn't wait for it before remapping your keys. I don't know if Rakudo can work with Unicode operators yet.

Upvotes: 1

Related Questions