2016年7月22日 星期五

scheme/racket timer 並自己實作一個 scheme timer

想知道在 scheme 上有沒有 timer 相關函式可以用, 找到了 racket。

用法像 t.rkt 那樣, 有點奇怪, 但 lisp 系就是這麼奇怪。

t.rkt
 1 #lang racket/gui
 2 
 3 (display "Loaded\n")
 4 
 5 (define atimer
 6    (new timer%
 7       [notify-callback (lambda() (display "Hello, World!\n"))]
 8       [interval 1000]
 9       [just-once? #f]))
10 (send atimer start 1000)

執行結果:
descent@u64:$ racket -t t.rkt 
Loaded
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

這是用 gui 來測試 timer 的版本。
https://gist.github.com/Haroperi/3012175

為什麼想知道 timer 怎麼用, 因為我要在 simple scheme 加上這個, 這是未來計劃的一小步, 慢慢的來完成他。目前只有 linux 的版本支援 timer 單純試水溫, stm32f4 的版本才是我最終目的, 一步一腳印來實現這個目標。

語法和 racket 有點不同, 但 racket 的語法還是提供了靈感, 也真的可行。

(get-timer a-timer 1000 (lambda () (+ 3 2)))
(start-timer a-timer)
(stop-timer a-timer)

我用了 linux signal/setitimer 來完成這個 timer。



ref:
Scheme 初步

写本Racket入门书
http://chuansong.me/n/966489
https://github.com/tyrchen/racket-book/
http://racket.tchen.me/begin.html

string type

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。