ACM Home Page
Please provide us with feedback. Feedback
Structuring depth-first search algorithms in Haskell
Full text PdfPdf (1.10 MB)
Source Annual Symposium on Principles of Programming Languages archive
Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages table of contents
San Francisco, California, United States
Pages: 344 - 354  
Year of Publication: 1995
ISBN:0-89791-692-1
Authors
David J. King  Department of Computing Science, University of Glasgow, Glasgow G12 8QQ, UK
John Launchbury  Department of Computer Science and Engineering, Oregon Graduate Institute of Science & Technology, Beaverton, Oregon
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGACT: ACM Special Interest Group on Algorithms and Computation Theory
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 14,   Downloads (12 Months): 92,   Citation Count: 7
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/199448.199530
What is a DOI?

ABSTRACT

Depth-first search is the key to a wide variety of graph algorithms. In this paper we express depth-first search in a lazy functional language, obtaining a linear-time implementation. Unlike traditional imperative presentations, we use the structuring methods of functional languages to construct algorithms from individual reusable components. This style of algorithm construction turns out to be quite amenable to formal proof, which we exemplify through a calculational-style proof of a far from obvious strongly-connected components algorithm.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
 
3
 
4
 
5
 
6
7
8
 
9
Kashiwagi, Y. and Wise, D. S. (1991), Graph algorithms in a lazy functional programming language, in 'Proceedings of the 4'th International Symposium on Lucid and intensional Programming', pp. 35-46. Also available as Technical Report Number 330, Computer Science Department, Indiana University.
 
10
Launchbury, J. (1993), Lazy imperative programming, in 'Workshop on State in Programming Languages', ACM SIGPLAN, Copenhagen, Denmark, pp. 46-56.
11
 
12
 
13
 
14
15
 
16
Reif, J. H. (1985), 'Depth-first search is inherently sequentiM', Information Processing Letters 20, 229-234.
 
17
Sands, D. (1993), A nai've time analysis and its theory of cost equivalence, TOPPS report D-173, DIKU, University of Copenhagen, Denmark.
 
18
Sharir, M. (1981), 'A strong-connectivity algorithm and its applications in data flow analysis', Computers and mathematics with applications 7(1), 67-72.
 
19
Tarjan, R. E. (1972), 'Depth-first search and linear graph algorithms', SIAM Journal of Computing 1(2), 146- 160.
20


Collaborative Colleagues:
David J. King: colleagues
John Launchbury: colleagues