0

Pharo の継続機能を次のコード (プレイグラウンドで) でテストしようとしています:

| cont f |
f:=[
    |i|
    i:=0.
    Continuation currentDo: [ :cc | cont:=cc ].
    i:=i+1.
].
f value. "1"
cont. "a Continuation"

ただし、に保存されている継続を呼び出すとすぐに(でcont置き換えます)、画像がすぐにフリーズし、コントロールを取り戻すために を押す必要があります。cont.cont value.atl+.

VM バージョン:VM: NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <estebanlm@gmail.com> Jenkins build #14826

ファロのバージョン:[version] 4.0 #40614

ありがとう。

編集:私は愚かで、これをよく考えていませんでした...

4

2 に答える 2

2

同じコードを何度も再評価することで、効果的に無限ループを作成しました。コードをデバッグしてステップ実行すると、それがわかります。元のコンテキストは常に復元され、#currentDo: send に続く最初の式から評価されます。これはまさに継続が行うべきことです: 実行中の現在の位置を保存し、後でそこから再開します。

于 2015-06-21T14:05:14.480 に答える
1

テストする Fedora はありませんが、このバージョンの Pharo を使用して、Ubuntu でコードを試しました。

wget -O- get.pharo.org/40+vm | bash
./pharo-ui Pharo.image

あなたのコードは正しく動作しているようです:(

このエラーが続く場合は、使用している vm のバージョンをより具体的に教えていただけますか?:

./pharo Pharo.image --version

使用している Pharo のバージョンは?:

./pharo Pharo.image printVersion

また、crash.dmpファイルを送っていただけると大変助かります。

于 2015-06-18T06:30:14.833 に答える