{"action":"created","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":6,"created_at":"2015-08-27T11:26:06Z","updated_at":"2015-08-27T17:16:31Z","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    (* ext here being short for \"extrude\" *)\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?"},"comment":{"url":"https://api.github.com/repos/jonsterling/JonPRL/issues/comments/135496430","html_url":"https://github.com/jonsterling/JonPRL/issues/218#issuecomment-135496430","issue_url":"https://api.github.com/repos/jonsterling/JonPRL/issues/218","id":135496430,"user":{"login":"freebroccolo","id":151197,"avatar_url":"https://avatars.githubusercontent.com/u/151197?v=3","gravatar_id":"","url":"https://api.github.com/users/freebroccolo","html_url":"https://github.com/freebroccolo","followers_url":"https://api.github.com/users/freebroccolo/followers","following_url":"https://api.github.com/users/freebroccolo/following{/other_user}","gists_url":"https://api.github.com/users/freebroccolo/gists{/gist_id}","starred_url":"https://api.github.com/users/freebroccolo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freebroccolo/subscriptions","organizations_url":"https://api.github.com/users/freebroccolo/orgs","repos_url":"https://api.github.com/users/freebroccolo/repos","events_url":"https://api.github.com/users/freebroccolo/events{/privacy}","received_events_url":"https://api.github.com/users/freebroccolo/received_events","type":"User","site_admin":false},"created_at":"2015-08-27T17:16:30Z","updated_at":"2015-08-27T17:16:30Z","body":"Regarding MLton, I think there are going to be some problems with unicode, though maybe that's not as big of an issue anymore. But strings in the source will have to be escaped and I think there are some other problems with manipulating the strings even if they are escaped but I don't remember the details."}}