How to work with the symbol EndOfFile? I want to use the EndOfFile symbol to determine when my control structure reaches the end of a file.

Case 1: suppose we reach the end of file while continuously reading numbers from it. Which correctly returns "end".

  num==EndOfFile, res="end",
  num==1,         res="1",
  num==2,         res="2",
  True,           res="non"

(* ==> "end" *)

Case 2: suppose we read a 3 (that is, num=3): in this case Which returns unevaluated.

  • 1
    $\begingroup$ When you compare nonnumerical values, you should always use SameQ (===) to test for structural identity instead of numerical equation (Equal = ==). EndOfFile does not have a numerical value thus if num is 1, 1 == EndOfFile returns unevaluated. $\endgroup$ Commented Feb 27, 2013 at 3:21

1 Answer 1

Which[num === EndOfFile, res = "end", 
      num == 1,          res = "1", 
      num == 2,          res = "2", 
      True,              res = "non"]


Perhaps you may want to experiment a little with SameQ[]. For example:

ClearAll[h, j]
h == j
h === j
 h == j

Not the answer you're looking for? Browse other questions tagged or ask your own question.