{"action":"created","issue":{"url":"https://api.github.com/repos/google/codeworld/issues/132","repository_url":"https://api.github.com/repos/google/codeworld","labels_url":"https://api.github.com/repos/google/codeworld/issues/132/labels{/name}","comments_url":"https://api.github.com/repos/google/codeworld/issues/132/comments","events_url":"https://api.github.com/repos/google/codeworld/issues/132/events","html_url":"https://github.com/google/codeworld/issues/132","id":152460946,"number":132,"title":"CodeWorld should reject function application without parentheses","user":{"login":"cdsmith","id":544744,"avatar_url":"https://avatars.githubusercontent.com/u/544744?v=3","gravatar_id":"","url":"https://api.github.com/users/cdsmith","html_url":"https://github.com/cdsmith","followers_url":"https://api.github.com/users/cdsmith/followers","following_url":"https://api.github.com/users/cdsmith/following{/other_user}","gists_url":"https://api.github.com/users/cdsmith/gists{/gist_id}","starred_url":"https://api.github.com/users/cdsmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdsmith/subscriptions","organizations_url":"https://api.github.com/users/cdsmith/orgs","repos_url":"https://api.github.com/users/cdsmith/repos","events_url":"https://api.github.com/users/cdsmith/events{/privacy}","received_events_url":"https://api.github.com/users/cdsmith/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/google/codeworld/labels/enhancement","name":"enhancement","color":"009800"},{"url":"https://api.github.com/repos/google/codeworld/labels/priority","name":"priority","color":"bfdadc"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-05-01T22:57:28Z","updated_at":"2016-05-01T22:58:14Z","closed_at":null,"body":"Many student errors (e.g., missing commas) are misparsed as function application, because of Haskell's rule that all juxtaposition is function composition.  This turns simple typos into type errors with inscrutable messages.\r\n\r\nInstead, we should require parentheses around function application, and give a carefully crafted error message pointing to the appropriate place, and suggesting what might be wrong.  Most of the time it's a missing comma or operator, and NOT an attempt at calling a function.\r\n\r\n(That said, though, many students do leave out the parentheses for functions like polygon, whose sole parameter is a list.  Perhaps there should be a special case allowing list literals without parentheses?  Or maybe such code ought to be broken.)"},"comment":{"url":"https://api.github.com/repos/google/codeworld/issues/comments/216079824","html_url":"https://github.com/google/codeworld/issues/132#issuecomment-216079824","issue_url":"https://api.github.com/repos/google/codeworld/issues/132","id":216079824,"user":{"login":"cdsmith","id":544744,"avatar_url":"https://avatars.githubusercontent.com/u/544744?v=3","gravatar_id":"","url":"https://api.github.com/users/cdsmith","html_url":"https://github.com/cdsmith","followers_url":"https://api.github.com/users/cdsmith/followers","following_url":"https://api.github.com/users/cdsmith/following{/other_user}","gists_url":"https://api.github.com/users/cdsmith/gists{/gist_id}","starred_url":"https://api.github.com/users/cdsmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdsmith/subscriptions","organizations_url":"https://api.github.com/users/cdsmith/orgs","repos_url":"https://api.github.com/users/cdsmith/repos","events_url":"https://api.github.com/users/cdsmith/events{/privacy}","received_events_url":"https://api.github.com/users/cdsmith/received_events","type":"User","site_admin":false},"created_at":"2016-05-01T22:58:14Z","updated_at":"2016-05-01T22:58:14Z","body":"There's a tricky backward compatibility problem here.  Most like, this should start out giving warnings that are tacked on at the beginning of the message list, and be converted to errors later."}}