Using Haskell to Find Unused Spring MVC Code
tech.small-improvements.com
Using Haskell to Find Unused Spring MVC Code
1–10 of 24 posts
Re: Using Haskell to Find Unused Spring MVC Code
#2Re: Using Haskell to Find Unused Spring MVC Code
#3You can give functions in the where clause type signatures. It isn't as common, but it might be preferable to breaking out code into separate functions, depending on how well the function makes sense outside the context of its "parent" function.
Re: Using Haskell to Find Unused Spring MVC Code
#4Note that it’s possible to give type signatures for definitions in “where” clauses:
twice :: Int -> Int
twice x = two * x
where
two :: Int
two = 2
However, you may need the ScopedTypeVariables extension[1] in order to be able to express the correct type signature. (This extension will probably be standardised at some point.)The biggest real problem I’ve found with large “where” clauses is that they tend to have a lot of implicit dependencies on variables from the enclosing scope. Sometimes you want that for convenience, readability, or performance, but lifting local definitions out into top-level definitions can also help make them more explicit and reusable.
[1]: https://ocharles.org.uk/blog/guest-posts/2014-12-20-scoped-t...
Re: Using Haskell to Find Unused Spring MVC Code
#5This kind of thing is exactly what I'm afraid of and makes me not wanting to commit to a purely functional style. IMO FP is simply the wrong tool for handling expensive resources - e.g. I/O or large memory regions. This is why I think an imperative shell handling these resources, around a functional core (potentially around another tiny imperative innermost core for handling caches), is overall a cleaner approach for performant code.
Re: Using Haskell to Find Unused Spring MVC Code
#6> For example in my case I ran into problem when reading all files lazily. This caused my program to have too many open file handles. It was easily solved though, by hacking a bit to force the complete file to be read directly This kind of thing is exactly what I'm afraid of and makes me not wanting to commit to a purely functional style. IMO FP is simply the wrong tool for handling expensive resources - e.g. I/O or…
Re: Using Haskell to Find Unused Spring MVC Code
#7> For example in my case I ran into problem when reading all files lazily. This caused my program to have too many open file handles. It was easily solved though, by hacking a bit to force the complete file to be read directly This kind of thing is exactly what I'm afraid of and makes me not wanting to commit to a purely functional style. IMO FP is simply the wrong tool for handling expensive resources - e.g. I/O or…
Re: Using Haskell to Find Unused Spring MVC Code
#8> For example in my case I ran into problem when reading all files lazily. This caused my program to have too many open file handles. It was easily solved though, by hacking a bit to force the complete file to be read directly This kind of thing is exactly what I'm afraid of and makes me not wanting to commit to a purely functional style. IMO FP is simply the wrong tool for handling expensive resources - e.g. I/O or…
Laziness (lazy IO, in this case) has nothing to do with a language being functional or not. It has everything to do with a language being strict or lazy. There are strict functional languages. Most are, in fact.
Programming for HPC should be like programming in the future, as Alan Kay likes to say, but it seems to me there is a stark (and IMO unnecessary) disconnect between the worlds of HPC and desktop/web programming today.
Re: Using Haskell to Find Unused Spring MVC Code
#9> For example in my case I ran into problem when reading all files lazily. This caused my program to have too many open file handles. It was easily solved though, by hacking a bit to force the complete file to be read directly This kind of thing is exactly what I'm afraid of and makes me not wanting to commit to a purely functional style. IMO FP is simply the wrong tool for handling expensive resources - e.g. I/O or…
So... a Haskell approach?
Re: Using Haskell to Find Unused Spring MVC Code
#10Since you were collecting comments/suggestions: I urge you to take a look at the zipper data structure if you haven't already, they are applicable to what you are working on and are a good intellectual exercise on their own :) In addition, I haven't had the time to go over all of your code but I don't see you mentioned circular dependencies for your tool, is that a feature that is yet to be implemented? In fact this project can probably benefit from drawing ideas from garbage collection techniques since conceptually I think they are very similar.