I just browsed around a bit, and noticed the following things: (1) Put your code in a source folder. Having all your elm files in the same folder as elm-package.json, .gitignore, index.html, etc is distracting. To do this, add your source folder to the "source-directories" property in elm-package.json, like this: currently: source-directories": [ "." ], change it to: "source-directories": [ "src" ], (2) Auto-formatter? I don't like this one. It needlessly deeply indents things, like the 'rotations'' function here: https://github.com/thomasballinger/loveinthetimeoftetris/blob/master/Piece.elm#L172 I prefer to put 'case ... of' on one line, the same line as the '=' it follows, because it's usually short. Too much indentation makes code unreadable. I think the official coding style (unfortunately) promotes this though... (3) 'rotate' looks very inefficient: https://github.com/thomasballinger/loveinthetimeoftetris/blob/master/Piece.elm#L172 It's just a bunch of 'if's. Why not turn 'Piece' into an enum type, and then have 'rotate' pattern match the enum? ... The texture property looks like it should just be a wrapper: 'type Textured a = Textured Int a'. ... Using an 'Int' as an index for some list/array (I assume that's how it's working.) is very C-like. Unless there's a nearly unlimited amount of textures (one for each integer value), use an enumeration with a fixed amount of constructors instead. To me, a type represents not only the shape of its underlying data, *but also its **semantics** *. (I admit, Elm doesn't fully embrace this philosophy yet, (partly because nearly all the languages that have come before it don't either, so people still have trouble thinking outside the C-like imperative-OO box), but I think it's the way forward, because when it's paired with a strong type system like Haskell's or Elm's, it prevents many logic errors, like adding 1 meter to 2 feet and getting 3 feet, or 4 ticks to 5 seconds and getting 9 seconds, or 7 apples to 8 oranges and getting 15 oranges, etc.) (4) You should always give a function a type annotation: https://github.com/thomasballinger/loveinthetimeoftetris/blob/master/Progression.elm#L23 .
>* I don't think I'll be using evancz/elm-graphics in the future since I'll be doing less gamey stuff or want to work with canvas more directly. How is this usually done? By using Svg instead: http://package.elm-lang.org/packages/elm-lang/svg/1.1.1 On Wednesday, August 17, 2016 at 4:40:38 PM UTC-5, Thomas Ballinger wrote: > > Hi Elm folks! I've enjoyed reading this list for a bit. I've written my > first Elm thing over the last couple weeks and would love to hear any kind > of feedback on it. It's an unfinished game jam piece I kept running with so > the title doesn't make sense. > > code: https://github.com/thomasballinger/loveinthetimeoftetris > live: love.ballingt.com (takes about 70 seconds to play all of) > > I was going to clean things up the way I know how, but I need to take a > break to get some other things done and I thought I'd learn more by asking > how someone else might clean it up. Please don't assume I know what I'm > doing in the slightest :) > > Any feedback would be great, but if prompts are helpful: > * what does this code make it look like I'm missing about Elm? > * what do you think of the extensible record type aliases? I think the way > I've used them is mostly terrible, I designed them up front instead of > letting them evolve. > * code style? > * I'm using an elm autoformatter, how's my formatting? Is this style > common? > * I don't think I'll be using evancz/elm-graphics in the future since I'll > be doing less gamey stuff or want to work with canvas more directly. How is > this usually done? > * I abandoned elm reactor once I started embedding in html, is that a > viable workflow I should have stuck with for longer? > * I was tempted to start a utils file or look for an external lib but was > trying to focus on learning the stdlib. Are there pretty common util libs > folks use? I sure missed some list functions. > * I escaped to JavaScript anytime I thought it would be hard to do > something with the stdlib, presumably it would be nice to use Elm for some > of these things? > > Thanks so much, and feel free to contact off list if you prefer at > m...@ballingt.com <javascript:> - if you do I'll report back what I > learned to the list. > -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.