Down 16.07.2006 11:08 - oppdatert 708 dager siden av Terje Pedersen Minky

Minky er et nytt prototype, funksjonelt, stakkbasert programmeringsspråk. Foreløpig er det ikke laget noen interpreter for det.

Jeg ser aldri helt ut til å bli fornøyd med noen som helst programmeringsspråk, så det spørs om jeg blir fornøyd med mitt eget ;P Men i hvert fall synes det er veldig gøy å leke meg syntaks, hvordan gjøre ting kanskje litt lettere enn i dag og slikt. Tenke litt anerledes uten å være så helt forskjellig fra annet som finnes.

e-postliste bugtrack

Status: Kan begynne på interpreteren nå.

PS! Skal ikke så bort fra det er noen småfeil her i eksempelkoden som ikke har blitt rettet underveis

Noen små eksempel forhåpentligvis oppdaterte ;P

Fibonacci

  1. fib : {n, cond (n < 2, 1, fib (n - 2), fib (n incr (-1)))}
  2. fib (args at (0) asnumber) println

Harmonic

  1. n : cond (args length > 0, args at (0) asnumber, 1000000)
  2. partialsum : 0.0
  3. 1 to (n) each (i, partialsum : partialSum + (1.0 / i)) }
  4. partialsum println

Struct

  1. adress : (
  2. name : "Terje"
  3. age : 30
  4. )
  5. adress name println

Enum

  1. (mon, tue, wed, thu, fri, sat, sun) : 0 to (6)

Interpolation

  1. "The time is {now}" println

OO

  1. Senikk : Object with(
  2. a : 2
  3. m : {a, b, a + b}
  4. t : {a : "Test", a}
  5. r : {a, (1, 2 , 3, a)}
  6. say : {s, s println}
  7. )
  8. Senikk a println # prints 2
  9. Senikk m (1, 2) println # prints 3
  10. Senikk t println # prints "Test"

Mandelbrot

  1. Mandelbrot : Object with (
  2. (height, width) : cond (args length > 0, width : args at (0) asnumber, 100)
  3. (bits, bitnum) : 0
  4. (Zr, Zi) : 0.0
  5. limit2 : 4.0
  6. isOverLimit : false
  7. m : 50
  8. "P4" println
  9. "{width} {height}" println
  10. loop (y, 0, height,
  11. loop (x, 0, width,
  12. (Zr, Zi) : 0.0
  13. Cr : 2.0 * x / width - 1.5
  14. Ci : 2.0 * y / height - 1.0
  15. i : 0
  16. loop (true, i incr < m and isOverLimit not,
  17. Tr : (Zr * Zr) - (Zi * Zi) + Cr
  18. Ti : 2.0 * Zr * Zi + Ci
  19. (Zr, Zi) : (Tr, Ti)
  20. isOverLimit : (Zr * Zr) + (Zi * Zi) > limit2
  21. )
  22. bits : bits << 1
  23. cond (isOverLimit not, bits incr)
  24. bitnum incr
  25. cond (width - 1 = x,
  26. bits : bits << (8 - bitnum)
  27. bitnum : 8
  28. )
  29. cond (bitnum = 8,
  30. cout writeByte (bits)
  31. (bits, bitnum) : 0
  32. )
  33. )
  34. )
  35. )

Enkel IRC Bot

  1. name : "Terje Pedersen"
  2. nick : "senikk"
  3. open ("tcp://irc.senikk.com:6667") with (
  4. "USER senikk@irc.senikk.com 0 * :{name}" writeln
  5. "NICK {nick}" writeln
  6. "JOIN #senikk" writeln
  7. loop (
  8. cmd : readln split
  9. cond (cmd at (0) at(0) = ":", cmd at! (0) substring (1,-1))
  10. cond (
  11. cmd at (0) = "PING", "PONG" writeln,
  12. cmd at (1) = "JOIN", "Join" println
  13. )
  14. )
  15. )

XML

  1. person : {name, age,
  2. <person><name>{name}</name><age>{age}</age></person>
  3. }
  4. book : <book>
  5. {person ("Terje Pedersen", 30)}
  6. {person ("Minky", 0)}
  7. </book>
  8. book person at (1) name println # prints Minky
Tilbaketråkk url: klikk her!
Stikkord: prosjekt

Relevante innlegg/sider/lenker

0 tilbaketråkk: