Haskell現在能夠預設進行嚴格求值

2021-09-17 04:18:08 字數 1100 閱讀 7655

為了讓開發者在使用haskell進行編碼時更加輕鬆,目前出現了一種新的嚴格語言作為haskell的擴充套件,這意味著程式在大部分時候都會執行嚴格求值,換句話說,就是用一種非懶惰求值策略。這個特點已經被加入到ghc的git head游標之中,並且會在ghc的下個版本中發布。

\\ 在每個模組中,-xstrict和-xstrictdata的pragmas預處理指令都會更改haskell語言的執行方式,這樣程式中的函式、資料型別和繫結就會進行嚴格求值,而不是懶惰求值。-xstrictdata是-xstrict的子集,而且僅僅會影響繫結。當被指定為-xstrict的時候,下面的**:

\\

\data t = c a\f x = ...\let x = ...\
\\

實際上被解釋成:

\\

\data t = c !a\f !x = ...\let !x\
\\

通過在變數名前追加~指令,就可以在每個模組中恢復懶惰求值策略。這些pragmas預處理指令會在一定程度上改變haskell的預設執行方式,我們也可以通過在變數名前使用!指令把懶惰求值變為嚴格求值。

\\ 正如嚴格求值指令的實現者adam sandberg所說,這個特點並不會把haskell變成乙個嚴格語言,而更像是在需要執行嚴格求值時,為haskell提供了乙個簡單的方法來寫出更漂亮的**。adam還補充說,這個補丁是由500行**構成,而且大部分是由haskell擴充套件語言執行,因此這就讓嚴格繫結功能具有了遞迴和多型性,並且可以更容易地在需要的地方插入嚴格注釋。

\\ google公司的開發工程師johan tibell,在他的監管下,sandberg ericsson使用了嚴格求值功能,進一步展現了這個功能的優勢。例如,在嚴格haskell**中使用bang,可以減少句法雜訊和出錯的機率,也可以幫助我們了解在改變haskell預設設定時,是如何影響執行功能。tibell也談到了,在使用strictdata時,會有很大的可能對使用了嚴格構造域的**庫造成適度的改變。另一方面,在使用strict時,也意味著會對現有的**庫造成大量的更改。

\\檢視英文原文:haskell can now do strict evaluation by default

\\ 感謝張龍對本文的審校。

\

現在進行時

形式 i am 動詞ing he she it is 動詞ing we you they are 動詞ing 否定i m not 動詞ing he she it s not 動詞ing we you they re not 動詞ing 疑問am i 動詞ing is he she it 動詞ing ...

2006 現在進行時

我看到我的部落格裡出現2006的字樣了!時間過的真快呀!當時間的腳步依舊在人們毫無準備的情況下匆匆向前邁進的時候,在駐足之中我再一次被這時光的無情給深深的震了一下。2006的陽光依然想過去的一年那樣,隨著心情的變化而變換著。我已經無法很清楚的追憶出以往的點滴,只是偶爾零星的記憶時時浮現在腦海裡。那是...

fedora 系統 能夠以 root 使用者進行登入

1.切換到root工作環境,因為一下操作必須擁有root許可權 1 2 haore147 localhost su root 密碼 1 2 3 4 root localhost vi etc pam.d gdm 注釋掉下面這行 auth required pam succeed if.so user...