44"use strict" ;
55
66var EMPTY = { } ;
7- var NO_EFFECT = function ( ) { } ;
87
98function MutableQueue ( ) {
109 this . head = null ;
@@ -115,24 +114,22 @@ function deleteCell (cell) {
115114 cell . prev = null ;
116115}
117116
118- function AVar ( ) {
117+ function AVar ( value ) {
119118 this . draining = false ;
120119 this . error = null ;
121- this . value = EMPTY ;
120+ this . value = value ;
122121 this . takes = new MutableQueue ( ) ;
123122 this . reads = new MutableQueue ( ) ;
124123 this . puts = new MutableQueue ( ) ;
125124}
126125
127126exports . makeEmptyVar = function ( ) {
128- return new AVar ( ) ;
127+ return new AVar ( EMPTY ) ;
129128} ;
130129
131130exports . makeVar = function ( value ) {
132131 return function ( ) {
133- var avar = new AVar ( ) ;
134- avar . value = value ;
135- return avar ;
132+ return new AVar ( value ) ;
136133 } ;
137134} ;
138135
@@ -148,10 +145,6 @@ exports._killVar = function (left, right, avar, error) {
148145
149146exports . _putVar = function ( left , right , avar , value , cb ) {
150147 return function ( ) {
151- if ( avar . error !== null ) {
152- runEff ( cb ( left ( avar . error ) ) ) ;
153- return NO_EFFECT ;
154- }
155148 var cell = putLast ( avar . puts , { cb : cb , value : value } ) ;
156149 drainVar ( left , right , avar ) ;
157150 return function ( ) {
@@ -162,10 +155,6 @@ exports._putVar = function (left, right, avar, value, cb) {
162155
163156exports . _takeVar = function ( left , right , avar , cb ) {
164157 return function ( ) {
165- if ( avar . error !== null ) {
166- runEff ( cb ( left ( avar . error ) ) ) ;
167- return NO_EFFECT ;
168- }
169158 var cell = putLast ( avar . takes , cb ) ;
170159 drainVar ( left , right , avar ) ;
171160 return function ( ) {
@@ -176,10 +165,6 @@ exports._takeVar = function (left, right, avar, cb) {
176165
177166exports . _readVar = function ( left , right , avar , cb ) {
178167 return function ( ) {
179- if ( avar . error !== null ) {
180- runEff ( cb ( left ( avar . error ) ) ) ;
181- return NO_EFFECT ;
182- }
183168 var cell = putLast ( avar . reads , cb ) ;
184169 drainVar ( left , right , avar ) ;
185170 return function ( ) {
0 commit comments