跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 客語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 讀取-求值-輸出循環 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
讀取-求值-輸出循環
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''「讀取 - 求值 - 輸出」循環'''(英語:'''Read-Eval-Print Loop''',簡稱'''REPL'''), 乜分人喊做'''交互式頂層構件'''(英語:'''interactive toplevel'''), 係一個簡單个,交互式个編程環境。這隻詞輒常用於指代一隻 Lisp 个交互式開發環境,也做得指代命令行个模式。 ==概述==_「讀入 - 求值 - 輸出」循環 _ 个名仔來自於以下幾个 Lisp 用來實現這種機制个內置函數: * 讀入函數接收一個來自用戶个表達式,摎佢兜解析个成資料結構還過貯入記憶體。比將講, 用戶可能會輸入一個 s - 表達式 ` ( + 一二三 ) `,這句話會分人解析做一隻包含四隻元素个鍊表。 * 求值函數負責處理內部个資料結構並對佢个求值。在 Lisp 中,求一個用函幾下儕開頭个 s-表達式意思係講著續下來个參數調用該隻函數。故所函數 " ` + ` " 分人在參數 ` 一二三 ` 上調用,產生結果 ` 六 `。 * 輸出函數接受求值結果,摎佢呈現个給用戶。做你來做前个結果啊「` 六 `」並無具有複雜个格式,毋過係講係一個較複雜个表達式,恁呢佢會分精心處理,好來利便分人理解。 REPL 使得探索性个編程還有調試更加利便,因為「讀取 - 求值- 輸出」循環一般會比經典个「編輯 - 編譯 - 運行 - 調試」模式愛還較遽。 ==優點== REPL 對學習一門新个程式語言有當大个幫助,因為佢做得跈等對初學者做出回應。許當多工具集摎程式語言使用 REPL 研究算法、進行調試,比論講 MATLAB,ROOT,SciPy 摎 IPython。Python 个 doctest 模塊做得通過捉著自家个身體 REPL命令行个輸出分測試代碼過較容易進行。 因為 ` print ` 函數輸出个數據格式(字符串)同用戶个輸入个數據格式(字符串)共樣,大多數輸出去个結果也做得分人帶歸去吔 ` read ` 函數作為輸入。毋過,有成時輸出來个結果淨做得代表求值結果毋係求值結果本身,比將講一個 socket 句柄抑係一兜類个實例。比將講在 Python 當中使用 ` < _ _ 模擬名 _ _ . 種草種有一千五百五十二儕 > `這種形式來代表一個實例本身,在 Common Lisp 當中就使用 ` # < whatever > ` 个形式嗬。啊在 CLIM,SLIME 還有 Symbolics Lisp Machine 个 REPL 嗄有辦法讀取當難分完全字符串化个這兜對象。佢兜記錄分人輸出過个對象,後當代碼分人讀書个時節,這兜對象做得分人解析還過重新被使用。 ==實現== 為著愛實現一個 LispREPL,淨需要實現這三個函數摎一個不停輪詢个函數就做得(當然啊,求值函數个實現係最複雜个,因為佢在內部愛實現像 ` car ` 摎 ` + ` 个原始函數還過像 ` if ` 共樣个特殊操作符)。這兜事頭做核吔過後,一個基本个 REPL 就做得用像下个簡單形式表達:` ( loop ( print ( eval ( read ) ) ) ) `。 一種實現 ` eval ` 个方式就係實現一嗬每一個遞歸處理抽象語法樹(這種話法樹分 ` read ` 函數創建)个函數。另外一種方法係摎這抽象語法樹編譯做機器碼還過執行。 ==主要 REPL 程式語言環境== APL、BASIC、Clojure、F #、Haskell、J、Julia、Perl、PHP、Prolog、Python、R、Ruby、Scala、Smalltalk、Standard ML、Swift、Tcl、Javascript、Java ( 版本 jdk 有九件 ) ==外部連結== [[分類: 待校正]]
返回到「
讀取-求值-輸出循環
」。