{"action":"opened","issue":{"url":"https://api.github.com/repos/jonsterling/JonPRL/issues/218","labels_url":"https://api.github.com/repos/jonsterling/JonPRL/issues/218/labels{/name}","comments_url":"https://api.github.com/repos/jonsterling/JonPRL/issues/218/comments","events_url":"https://api.github.com/repos/jonsterling/JonPRL/issues/218/events","html_url":"https://github.com/jonsterling/JonPRL/issues/218","id":103487904,"number":218,"title":"Make JonPRL SML '97 Compatible","user":{"login":"jozefg","id":814961,"avatar_url":"https://avatars.githubusercontent.com/u/814961?v=3","gravatar_id":"","url":"https://api.github.com/users/jozefg","html_url":"https://github.com/jozefg","followers_url":"https://api.github.com/users/jozefg/followers","following_url":"https://api.github.com/users/jozefg/following{/other_user}","gists_url":"https://api.github.com/users/jozefg/gists{/gist_id}","starred_url":"https://api.github.com/users/jozefg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jozefg/subscriptions","organizations_url":"https://api.github.com/users/jozefg/orgs","repos_url":"https://api.github.com/users/jozefg/repos","events_url":"https://api.github.com/users/jozefg/events{/privacy}","received_events_url":"https://api.github.com/users/jozefg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-08-27T11:26:06Z","updated_at":"2015-08-27T11:26:06Z","closed_at":null,"body":"Making JonPRL fully compliant with '97 has a few nice benefits. We never have to worry about NJ not adapting to a new platform, we can get faster binaries with mlton, we can properly support 64bit (doesn't NJ still have weird issues with it) etc, etc.\r\n\r\nAs far as making this happen, I can think of three big things off the top of my head\r\n\r\n - [ ] Make all the satellite projects SML '97 compatible. A few are and most can be with minimal effort\r\n - [ ] Stop using `#[]` vector patterns. They unfortunately aren't standard\r\n - [ ] Add `.mlb` files in addition to `.cm` files (I really want MLton to work)\r\n\r\nThere is a potential downside, we can fix the second one by adding a series of utility functions along the lines of\r\n\r\n    ext0 : 'a vector -> unit\r\n    ext1 : 'a vector -> 'a\r\n    ext2 : 'a vector -> 'a * 'a\r\n    ...\r\n\r\nand then use `ext*` plus a pattern match on a tuple. This is going to be a lot less readable though, particularly in places like `src/refiner/extract.fun` where all of those pattern matches would grow an extra let-expression to pattern match on the vector. Is there a nicer way that I'm missing? Is it worth the extra ugliness?"}}