I came to a snippet of code for computing combinations in Haskell, and I thought I would play in ghci to understand it how it works. In Ghci, when I just run a bit of code that I am interested in, fails as shown below.
  Prelude data. List & gt; Filter ((== 2) length). Later [1,2,3] & lt; Interactive>: 19: 1: Any instances ('[a0] - & gt; [[a0]]) is used by the use of' print ', an interactive GHCI command: print it, print data. List & gt; Filter ((== 2) length). Later [1,2,3] & lt; Interactive & gt; 20: 28: Expected type 'a - & gt; [[A1]] 'with the actual type' [[A]] 'in the relevant binding include: a - & gt; Possible reason: ['A1]' (binding on 20: 1) is followed by 'many arguments' in the second argument of' (.) ', Namely' [1, 2] , 3] 'in expression: filter ((== 2) length). Later [1, 2, 3]   I knew that the structure should be caused by the operator (dot) in Ghci in order to use that "$" sign to run that code Had to be changed as shown below
  preedal data.list & gt; Filter ((== 2). Length) $ [1,2,3] [[1,2], [1,3], [2,3]]   Someone has a little to explain about what is going on internally when you write code in this programming style? And when I use that expression directly, why not fail?
This is your operator's prioritization of code
  (filter ((== 2) length)) is being read as. (Later [1,2,3])    and then the GHCI complains that  is not later [1,2,3]  function, therefore, You need brackets: 
  (filter ((== 2) length). Later [1,2,3]   or < Code> $ :
 Filters ((== 2.) Length). Afterwards $ [1,2,3]   
No comments:
Post a Comment