Theme laajentaa Schemeä staattisella tyypityksellä. Tällä hetkellä Theme on toteutettu Theme->Scheme translaattorina. Alustana on guile 2.0.
Joitakin Themen ominaisuuksia:
- staattinen tyypitys
- yksinkertainen oliosysteemi
- ajonaikaisesti (ja osaksi käännösaikaisesti) reititetyt multimetodit
- parametrisoidut (tyyppiparametrit) luokat, tyypit ja proseduurit
- moduulijärjestelmä
- vakiot ja muunneltavat muuttujat, vakion arvoa ei voi muuttaa sen luomisen jälkeen
Themen kotisivu on osoitteessa
http://www.students.tut.fi/~hoynalan/theme.html
- Tommi Höynälänmaa
Löytyykö sinulta yhtään selostettua tai hyvin kommentoitua esimerkkikoodia, jossa esittelet Themen ominaisuuksia?
Katso hakemisto theme/theme-code/examples versiossa 0.8.7. Se on saatavilla Themen kotisivulla.
Se sisältää seuraavaa:
- Hello, world!
- and-map, testaa toteuttavatko kaikki listan alkiot annetun predikaatin
- or-map, testaa toteuttaako jokin listan alkio annetun predikaatin
- Abstraktin tietotyypin (jono) toteuttaminen Themen olioilla. Tiedostot: sequence.th?, list-as-sequence.th?, vector-as-sequence.th? ja testiohjelma sequence-test.thp
Lisäksi testit theme/theme-code/tests/test22.thp ja theme/theme-code/tests/test30.thp toteuttavat map-funktionaalin (kuten Schemessä) ja välittävät sille proseduuriargumenttina parametrisoidun ja geneerisen proseduurin.
Tässä on vielä Hello Worldin koodi:
(define-program (examples hello-world) (import (standard-utilities core) (standard-utilities console-io)) (define main (lambda (() <none> nonpure) (console-print-string "Hello world!") (console-newline))))
Minun on vaikea sanoa mitään Themestä. En ole koskaan ohjelmoinut LISP-sukuisella kielellä, enkä juuri mitään themekoodista ymmärrä. Vaikka en minä varmaan ohjelmointikielesi kohderyhmää olekaan.
Themessä on monia hienonkuuloisia ominaisuuksia kuten olioita ja tyyppiparametrisaatiota. Minua kiinnostaisi tietää niiden toteutuksesta lisää. Olenhan minä senlaisia juttuja omiinkin ohjelmointikieliini lisännyt.
Minä kaipaan selkeää opasta, joka avaa asioita muillekin, kuin LISP-sukuisten kielien ohjelmoijille. Kirjoitettuna suomella tai hyvällä englannilla (minä pitäisin enemmän suomesta, mutta jos tavoittelet kansainvälisyyttä niin englantia). Voisit esitellä kielen tärkeitä ominaisuuksia, jotka erottavat sen Schemestä ja antaa selkeitä selostettuja esimerkkejä. Selostetulla tarkoitan, että jokaisesta lyhyestä esimerkistä on muutaman kokonaisen lauseen pituinen seloste, jossa kerrotaan ohjelman toimintaperiaate ja mahdollisesti tietoa käytetyistä ominaisuuksista.
Themen kotisivu on nykyisessä asussaan karu ja autio. Tietoa on vähän ja sitä on vaikea löytää. Et edes mainitse esimerkkejä missään. Jos joku sivulle eksyy, hän luultavasti kääntyy takaisin (ellei sitten tiedä mitä etsiä).
Theme on uudelleennimetty Theme-D:ksi, jotta vältetään sekaannus J. Weelin Theme-kielen kanssa. Theme-D:n kotisivu on osoitteessa
Aihe on jo aika vanha, joten et voi enää vastata siihen.