3,892 reputation
21648
bio website connjur.uchc.edu
location Connecticut, USA
age 27
visits member for 2 years, 9 months
seen Jul 23 at 13:44

I work in a scientific computing group on the CONNJUR project, providing open-source software for NMR (Nuclear Magnetic Resonance) spectroscopy.

Check out some of my work on github:

  • NMRPyStar: an API for accessing archived NMR data files in the NMR-Star format used by the BMRB.

  • Miscue-js: validation of JSON files to deal with obnoxious and tricky interoperability issues such as number overflows and duplicate keys

Some technologies that I've used and like:

  • Python
  • git
  • Javascript
  • Haskell
  • Java
  • MySQL

May
19
comment What is the responsibility or benefit of a Tokenizer?
@Doval you're making a circular argument -- you're essentially saying that we need separate tokenizers and hierarchical parsers, because tokenizing and hierarchical parsing are different. But why are they different? More importantly, what is the cost of differentiating them?
May
19
comment What is the responsibility or benefit of a Tokenizer?
@MichaelShaw tokenizers (and token grammars) typically limit the complexity (approximately Chomsky type 3) of the tokens, allowing the increase in performance.
May
16
revised What is the responsibility or benefit of a Tokenizer?
added 34 characters in body
May
16
comment What is the responsibility or benefit of a Tokenizer?
This misconception seems to be at the core of this answer: The benefit is that this simplifies the grammar and parser. That complexity doesn't just disappear: it goes somewhere else (in this case, to the token grammar and tokenizer). So now you have two things, each of which does ~1/2 the job of a parser. About the same amount of work. Where's the benefit?
May
16
answered What is the responsibility or benefit of a Tokenizer?
May
10
comment How do I simplify a compiler/interpreter?
@delnan rereading your comment, it seems we're in violent agreement. I'm not claiming that it should be done, nor that it's hugely beneficial, nor that it's always great, but rather pointing out that it can be done and why one might choose to do so. Importantly, I doubt there's a one-size-fits-all choice -- I expect the cost/value of such an approach is heavily context-sensitive.
May
10
comment How do I simplify a compiler/interpreter?
@delnan I disagree on all points. I think the root of our disagreement is different implicit assumptions about the language and how the parser will be used. Needless to say, without understanding each other's assumptions, this conversation is 100% pointless.
May
9
comment How do I simplify a compiler/interpreter?
@delnan there's several benefits: 1) separation of concerns -- can change concrete and abstract syntaxes independently; 2) simpler parser; 3) can regenerate the original input; 4) parse tree corresponds directly to input (it seems we disagree on the importance of this for debugging). Of course there are costs as well.
May
9
comment How do I simplify a compiler/interpreter?
Is the question exclusively about parsing? I'm asking because none of the responses mention anything about all the other things besides parsing that compilers and interpreters do.
May
9
comment How do I simplify a compiler/interpreter?
Nice points. To make it even simpler, I'd even go so far as to suggest producing a concrete syntax tree (CST) instead of an AST -- then the parse tree will exactly match the input, even including things like unnecessary parentheses. Easier to debug. Not at all sure how well this approach fits into YACC though.
May
8
revised If null is bad, why do modern languages implement it?
deleted 11 characters in body; edited title
May
7
awarded  Popular Question
Apr
30
comment Why is studying an lisp interpreter in lisp so important?
2nd paragraph doesn't make sense: homoiconicity != simple syntax; simple syntax makes it easy to write a Lisp parser in any language (see this). 3rd paragraph is vague, needs example(s).
Apr
25
comment Pattern matching in Clojure vs Scala
@gnat c2.com/cgi/wiki?QuotingNotThinking
Apr
25
comment Pattern matching in Clojure vs Scala
@kurofune it looks like most of us, myself included, agree that it was a well-written question.
Apr
25
comment Pattern matching in Clojure vs Scala
In defense of this question: it's objective, well-written, and clear. Why does it matter that the OP read a blog before posting this question? That doesn't change the quality of the question.
Apr
15
revised Design Pattern: Algorithm varies according to the input arguments
added 5 characters in body; edited tags
Apr
15
comment Design Pattern: Algorithm varies according to the input arguments
How does this answer address the other part of the question -- "Every combination of arguments needs different algorithm"?
Apr
15
answered Design Pattern: Algorithm varies according to the input arguments
Apr
14
comment Evaluation order of expressions in Clojure?
For observing evaluation of lazy seqs, something like (def my-observable-seq (map (fn [x] (println x) x) my-lazy-seq)) is great. Disclaimer: I probably wouldn't use it in real code.