Skip to content

Heuristic for placing fun decl body on separate line #82

@MatthewFluet

Description

@MatthewFluet

The heuristic for determining whether the body of a function declaration is placed on a newline seems rather conservative and can lead to seemingly wasted horizontal space, especially when mixed with val declarations that do not seem to use the same heuristic.

❯ smlfmt -max-width 45 --preview-only z.sml 
---- z.sml ----
infixr 1 $

val f = fn (g, x) => x
val f = fn (g, x) => g x
val f = fn (g, x) => g $ x
val f = fn (g, x) => g $ g x
val f = fn (g, x) => g $ g $ x
val f = fn (g, x) => g $ g $ g x
val f = fn (g, x) => g $ g $ g $ x
val f = fn (g, x) => g $ g $ g $ g x
val f = fn (g, x) => g $ g $ g $ g $ x
val f = fn (g, x) => g $ g $ g $ g $ g x
val f = fn (g, x) => g $ g $ g $ g $ g $ x
val f = fn (g, x) => g $ g $ g $ g $ g $ g x
val f = fn (g, x) =>
  g $ g $ g $ g $ g $ g $ x

fun f (g, x) = x
fun f (g, x) = g x
fun f (g, x) = g $ x
fun f (g, x) = g $ g x
fun f (g, x) = g $ g $ x
fun f (g, x) =
  g $ g $ g x
fun f (g, x) =
  g $ g $ g $ x
fun f (g, x) =
  g $ g $ g $ g x
fun f (g, x) =
  g $ g $ g $ g $ x
fun f (g, x) =
  g $ g $ g $ g $ g x
fun f (g, x) =
  g $ g $ g $ g $ g $ x
fun f (g, x) =
  g $ g $ g $ g $ g $ g x
fun f (g, x) =
  g $ g $ g $ g $ g $ g $ x
--------

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions