haskell - Finding a single element in a list using list comprehension -


the function valueof gets int value of corresponding string out of tuple list. can explain how third line works?

type state = [(string,int)]  valueof :: state -> string -> int valueof xs var  = head [b | (a,b) <- xs , ==var ] 

i've never seen haskell expression that, i'm more used expression this:

(\xs -> length xs > 15) 

there no lambda expression. seeing list comprehension, way of creating list of values satisfying condition.

in case comprehension [b | (a,b) <- xs , ==var ] means like: create list of bs such (a, b) element of list xs, a equal var.

in imperative pseudo-code write as

result = empty_list (a,b) in xs:     if == var:         result.add(b) return result 

so, whole valueof function works generating list of values have right string key, , uses head function first one. note if there no match, whole computation crash.


Comments

Popular posts from this blog

python - pip install -U PySide error -

arrays - C++ error: a brace-enclosed initializer is not allowed here before ‘{’ token -

cytoscape.js - How to add nodes to Dagre layout with Cytoscape -