Giter Club home page Giter Club logo

Comments (5)

andymcn avatar andymcn commented on May 14, 2024

Another option would be to indent the cases:

match _first
  | None => _first = ex'
  | as ex: Exchange =>
    _first = None
end

This makes things clearer to me, but then has the problem that it looks like there's an end mssing after the last case.

from ponyc.

sylvanc avatar sylvanc commented on May 14, 2024

I prefer the pipe symbol, possibly because it's familiar from OCaml, etc. The only concrete reason I have for preferring it is for cases like this:

match x % 100
| 11 | 12 | 13 => "th"
else
  match x % 10
  | 1 => "st"
  | 2 => "nd"
  | 3 => "rd"
  else
    "th"
  end
end

Note the combination of the initial 11, 12 and 13 cases.

from ponyc.

andymcn avatar andymcn commented on May 14, 2024

Let's try the same example with a keyword, I'm using case because I'm lazy.

One case per line option:

match x % 100
case 11
case 12
case 13 => "th"
else
  match x % 10
  case 1 => "st"
  case 2 => "nd"
  case 3 => "rd"
  else
    "th"
  end
end

And the same with case indentation:

match x % 100
  case 11
  case 12
  case 13 => "th"
else
  match x % 10
    case 1 => "st"
    case 2 => "nd"
    case 3 => "rd"
  else
    "th"
  end
end

Cases grouped on a line option:

match x % 100
case 11 case 12 case 13 => "th"
else
  match x % 10
  case 1 => "st"
  case 2 => "nd"
  case 3 => "rd"
  else
    "th"
  end
end

And the same with case indentation:

match x % 100
  case 11 case 12 case 13 => "th"
else
  match x % 10
    case 1 => "st"
    case 2 => "nd"
    case 3 => "rd"
  else
    "th"
  end
end

I think that works well either on separate lines or grouped on a line, but it's definitely better with cases indented

from ponyc.

sophiaIC avatar sophiaIC commented on May 14, 2024

I agree with Andy that indentation is good. After all, you also use indentation for the two branches of an if-statement.

from ponyc.

sylvanc avatar sylvanc commented on May 14, 2024

We've decided to keep the pipe and not replace it with a keyword.

from ponyc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.