Try it at: https://deepakduggirala.github.io/elm-snake-game/
Model of the snake is "continuous" which allows for variable speeds without messing with fps.
Src/Snake.elm and Src/Math.elm provides the interface for snake model. The app (Model, View and Update) is agnostic of the snake implementation.