Hacker News new | past | comments | ask | show | jobs | submit login

Most programming languages today don't have dynamic scoping. Here's something you could do in a language that had it.

  print_x() {
      print(x);
  }

  foo(msg) {
      let x = msg;
      print_x();
  }

  main() {
      let x = "Hello!";
      print_x();
      foo("Goodbye!");
      print_x();
  }
In a language with dynamic scoping, this would print:

  Hello!
  Goodbye!
  Hello!
With lexical scoping, most dynamically scoped code would either be a compilation error, or it wouldn't work. In this case, the language would complain that x wasn't defined in the scope of "print_x()". With lexical scope, you'd have to make x a global variable, and then the function foo() would just be equivalent to calling print_x().



Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: