Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. The Weird and The Wonderful
  4. let, var, val - Swift, Kotlin, JavaScript

let, var, val - Swift, Kotlin, JavaScript

Scheduled Pinned Locked Moved The Weird and The Wonderful
androidc++javascriptswiftios
24 Posts 11 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    raddevus
    wrote on last edited by
    #1

    If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

    let pi = 3.14 // defines constant
    var randValue = 55; // defines variable

    Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

    let x = 1; // outer scope
    var y = 7; // (global scope)

    if (x === 1) {
    let x = 2; // DIFFERENT x (local scope)
    var y = 107; // SAME Y (global scope)

    console.log(x); // expected output: 2
    console.log(y); // expected output : 107
    }
    console.log(x) // expected output: 1
    console.log(y); // expected output: 107

    Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

    val pi = 3.14 // defines constant
    var randValue = 55; // defines variable

    var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

    L M Sander RosselS D M 7 Replies Last reply
    0
    • R raddevus

      If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

      let pi = 3.14 // defines constant
      var randValue = 55; // defines variable

      Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

      let x = 1; // outer scope
      var y = 7; // (global scope)

      if (x === 1) {
      let x = 2; // DIFFERENT x (local scope)
      var y = 107; // SAME Y (global scope)

      console.log(x); // expected output: 2
      console.log(y); // expected output : 107
      }
      console.log(x) // expected output: 1
      console.log(y); // expected output: 107

      Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

      val pi = 3.14 // defines constant
      var randValue = 55; // defines variable

      var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #2

      raddevus wrote:

      We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

      Because, according to marketing-ideas, the language needs its own "identity". In a few years, C# will have more keywords than those three languages combined :)

      Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

      R D 2 Replies Last reply
      0
      • L Lost User

        raddevus wrote:

        We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

        Because, according to marketing-ideas, the language needs its own "identity". In a few years, C# will have more keywords than those three languages combined :)

        Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

        R Offline
        R Offline
        raddevus
        wrote on last edited by
        #3

        Eddy Vluggen wrote:

        Because, according to marketing-ideas, the language needs its own "identity".

        Yeah, I guess so. Everyone says, "Our let is the best let of all." :)

        Eddy Vluggen wrote:

        In a few years, C# will have more keywords than those three languages combined

        :thumbsup: :laugh:

        L 1 Reply Last reply
        0
        • R raddevus

          Eddy Vluggen wrote:

          Because, according to marketing-ideas, the language needs its own "identity".

          Yeah, I guess so. Everyone says, "Our let is the best let of all." :)

          Eddy Vluggen wrote:

          In a few years, C# will have more keywords than those three languages combined

          :thumbsup: :laugh:

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #4

          raddevus wrote:

          :thumbsup: :laugh:

          I'd wish it wasn't so.

          Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

          1 Reply Last reply
          0
          • R raddevus

            If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

            let pi = 3.14 // defines constant
            var randValue = 55; // defines variable

            Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

            let x = 1; // outer scope
            var y = 7; // (global scope)

            if (x === 1) {
            let x = 2; // DIFFERENT x (local scope)
            var y = 107; // SAME Y (global scope)

            console.log(x); // expected output: 2
            console.log(y); // expected output : 107
            }
            console.log(x) // expected output: 1
            console.log(y); // expected output: 107

            Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

            val pi = 3.14 // defines constant
            var randValue = 55; // defines variable

            var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

            M Offline
            M Offline
            Member 9167057
            wrote on last edited by
            #5

            Recently, I stumbled over C# and C++ meaning rather different concepts with their "array". While I may seem rather snarky here, I think that language designers more often than not explicitly try to remain different from the existing stuff for the sake of, I guess, differentiation for the sake of it.

            Richard DeemingR R K 3 Replies Last reply
            0
            • R raddevus

              If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

              let pi = 3.14 // defines constant
              var randValue = 55; // defines variable

              Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

              let x = 1; // outer scope
              var y = 7; // (global scope)

              if (x === 1) {
              let x = 2; // DIFFERENT x (local scope)
              var y = 107; // SAME Y (global scope)

              console.log(x); // expected output: 2
              console.log(y); // expected output : 107
              }
              console.log(x) // expected output: 1
              console.log(y); // expected output: 107

              Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

              val pi = 3.14 // defines constant
              var randValue = 55; // defines variable

              var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

              Sander RosselS Offline
              Sander RosselS Offline
              Sander Rossel
              wrote on last edited by
              #6

              Just let it go ;)

              Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

              R 1 Reply Last reply
              0
              • R raddevus

                If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

                let pi = 3.14 // defines constant
                var randValue = 55; // defines variable

                Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

                let x = 1; // outer scope
                var y = 7; // (global scope)

                if (x === 1) {
                let x = 2; // DIFFERENT x (local scope)
                var y = 107; // SAME Y (global scope)

                console.log(x); // expected output: 2
                console.log(y); // expected output : 107
                }
                console.log(x) // expected output: 1
                console.log(y); // expected output: 107

                Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

                val pi = 3.14 // defines constant
                var randValue = 55; // defines variable

                var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

                D Offline
                D Offline
                den2k88
                wrote on last edited by
                #7

                Remember the old times of Basic and VisualBasic, where Let assigned the result of an arithmetical expression (luckily became optional) but if you needed to set a reference in VB you'd better remember it wanted the Set...To keyword or it would crash at the first execution.

                GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                Richard DeemingR R 2 Replies Last reply
                0
                • L Lost User

                  raddevus wrote:

                  We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

                  Because, according to marketing-ideas, the language needs its own "identity". In a few years, C# will have more keywords than those three languages combined :)

                  Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                  D Offline
                  D Offline
                  den2k88
                  wrote on last edited by
                  #8

                  C++/30 will consist entirely of keywords and variables will be inferred by the context.

                  GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                  R 1 Reply Last reply
                  0
                  • M Member 9167057

                    Recently, I stumbled over C# and C++ meaning rather different concepts with their "array". While I may seem rather snarky here, I think that language designers more often than not explicitly try to remain different from the existing stuff for the sake of, I guess, differentiation for the sake of it.

                    Richard DeemingR Offline
                    Richard DeemingR Offline
                    Richard Deeming
                    wrote on last edited by
                    #9

                    Wait until you see VB.NET's array declarations. They still use the upper bound instead of the length because that's what VB6 did, despite the fact that the reason it did that no longer applies to VB.NET! :-D


                    "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                    "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                    O 1 Reply Last reply
                    0
                    • D den2k88

                      Remember the old times of Basic and VisualBasic, where Let assigned the result of an arithmetical expression (luckily became optional) but if you needed to set a reference in VB you'd better remember it wanted the Set...To keyword or it would crash at the first execution.

                      GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                      Richard DeemingR Offline
                      Richard DeemingR Offline
                      Richard Deeming
                      wrote on last edited by
                      #10

                      VB6 and earlier needed Set and Let because of non-indexed default properties, which thankfully went away when .NET was first released. For example:

                      Dim rst As ADODB.Recordset
                      Set rst = ...

                      Dim foo As Variant
                      foo = rst["Bar"]

                      • The Recordset class doesn't have an indexer, but it has a default property called Fields which does.
                      • The indexer returns an ADODB.Field object, with a non-indexed default property called Value.
                      • At this point, the compiler wouldn't know whether you want the variable to contain the field object or the field's value.
                      • Therefore you have to use Set if you want the field object, and Let (or nothing) if you want the value.

                      Fun times! X|


                      "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                      "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                      D 1 Reply Last reply
                      0
                      • Richard DeemingR Richard Deeming

                        VB6 and earlier needed Set and Let because of non-indexed default properties, which thankfully went away when .NET was first released. For example:

                        Dim rst As ADODB.Recordset
                        Set rst = ...

                        Dim foo As Variant
                        foo = rst["Bar"]

                        • The Recordset class doesn't have an indexer, but it has a default property called Fields which does.
                        • The indexer returns an ADODB.Field object, with a non-indexed default property called Value.
                        • At this point, the compiler wouldn't know whether you want the variable to contain the field object or the field's value.
                        • Therefore you have to use Set if you want the field object, and Let (or nothing) if you want the value.

                        Fun times! X|


                        "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                        D Offline
                        D Offline
                        den2k88
                        wrote on last edited by
                        #11

                        It was also needed with custom VB classes and objects with no default property. A "nice" syntactic requirements in a langauge that did not have references or pointers (but then the hidden VarPtr, StrPtr and another function whose name I forgot came to help).

                        GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                        1 Reply Last reply
                        0
                        • M Member 9167057

                          Recently, I stumbled over C# and C++ meaning rather different concepts with their "array". While I may seem rather snarky here, I think that language designers more often than not explicitly try to remain different from the existing stuff for the sake of, I guess, differentiation for the sake of it.

                          R Offline
                          R Offline
                          raddevus
                          wrote on last edited by
                          #12

                          Member 9167057 wrote:

                          I think that language designers more often than not explicitly try to remain different from the existing stuff for the sake of, I guess, differentiation for the sake of it.

                          I think you may be correct. The two languages which are extremely similar are Java & C#. I wrote an app as a C# desktop app and then wrote it as a Android app (Java) and there was a lot of code that translated without any changes -- the pure language stuff / syntax.

                          1 Reply Last reply
                          0
                          • Sander RosselS Sander Rossel

                            Just let it go ;)

                            Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly

                            R Offline
                            R Offline
                            raddevus
                            wrote on last edited by
                            #13

                            Sander Rossel wrote:

                            Just let it go

                            Yeah, it is the best way. Acceptance. But, it's a lot more fun to gripe about it. :rolleyes:

                            1 Reply Last reply
                            0
                            • D den2k88

                              Remember the old times of Basic and VisualBasic, where Let assigned the result of an arithmetical expression (luckily became optional) but if you needed to set a reference in VB you'd better remember it wanted the Set...To keyword or it would crash at the first execution.

                              GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                              R Offline
                              R Offline
                              raddevus
                              wrote on last edited by
                              #14

                              den2k88 wrote:

                              Let assigned the result of an arithmetical expression

                              Yeah, that's a good one. I first saw let coming back with JavaScript and thought it was a weird throwback. Then Swift brought it back too. Let is taking over again. :)

                              1 Reply Last reply
                              0
                              • D den2k88

                                C++/30 will consist entirely of keywords and variables will be inferred by the context.

                                GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                                R Offline
                                R Offline
                                raddevus
                                wrote on last edited by
                                #15

                                den2k88 wrote:

                                C++/30 will consist entirely of keywords and variables will be inferred by the context.

                                :thumbsup: This is the new movement on the Serverless front and will be referred to as Codeless code. :laugh:

                                1 Reply Last reply
                                0
                                • Richard DeemingR Richard Deeming

                                  Wait until you see VB.NET's array declarations. They still use the upper bound instead of the length because that's what VB6 did, despite the fact that the reason it did that no longer applies to VB.NET! :-D


                                  "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                                  O Offline
                                  O Offline
                                  obermd
                                  wrote on last edited by
                                  #16

                                  Richard Deeming wrote:

                                  Wait until you see VB.NET's array declarations. They still use the upper bound instead of the length because that's what VB6 did, despite the fact that the reason it did that no longer applies to VB.NET! :-D

                                  I haven't used an upper bound in a VB.Net array declaration for several years. The upper bound is optional and only really useful if you know ahead of time how big your array will be. Almost all the dotNet framework collection classes support this feature as well. There are times when it's useful but generally you don't need this feature.

                                  1 Reply Last reply
                                  0
                                  • R raddevus

                                    If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

                                    let pi = 3.14 // defines constant
                                    var randValue = 55; // defines variable

                                    Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

                                    let x = 1; // outer scope
                                    var y = 7; // (global scope)

                                    if (x === 1) {
                                    let x = 2; // DIFFERENT x (local scope)
                                    var y = 107; // SAME Y (global scope)

                                    console.log(x); // expected output: 2
                                    console.log(y); // expected output : 107
                                    }
                                    console.log(x) // expected output: 1
                                    console.log(y); // expected output: 107

                                    Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

                                    val pi = 3.14 // defines constant
                                    var randValue = 55; // defines variable

                                    var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

                                    M Offline
                                    M Offline
                                    MSBassSinger
                                    wrote on last edited by
                                    #17

                                    Which is why using C# for native iOS and Android apps, as well as MacOS, tvOS, Linux, and web apps (with webassembly) makes so much sense. No Java, no Kotlin, no Swift, no JavaScript (or the myriad of JS libraries). Just C# for them all.

                                    1 Reply Last reply
                                    0
                                    • M Member 9167057

                                      Recently, I stumbled over C# and C++ meaning rather different concepts with their "array". While I may seem rather snarky here, I think that language designers more often than not explicitly try to remain different from the existing stuff for the sake of, I guess, differentiation for the sake of it.

                                      K Offline
                                      K Offline
                                      kalberts
                                      wrote on last edited by
                                      #18

                                      When I learned the way C# understands arrays, it gave me a deja-vu to Algol 68. In those days (the language definition was published in 1968), hardware wasn't fast enough to make such complex language very useful. Experience with optimizing such constructs were limited, too. So Algol 68 never made it into the mainstream. When I learned about it 10-12 years later (we didn't have a compiler, but studied its concepts, in the university compiler course) we saw it as a collection of great ideas that couldn't be realized in practice, in any useful way. So when I saw C# actually realizing those array concepts, it was sort of like a dream from my student days coming true.

                                      M 1 Reply Last reply
                                      0
                                      • R raddevus

                                        If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

                                        let pi = 3.14 // defines constant
                                        var randValue = 55; // defines variable

                                        Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

                                        let x = 1; // outer scope
                                        var y = 7; // (global scope)

                                        if (x === 1) {
                                        let x = 2; // DIFFERENT x (local scope)
                                        var y = 107; // SAME Y (global scope)

                                        console.log(x); // expected output: 2
                                        console.log(y); // expected output : 107
                                        }
                                        console.log(x) // expected output: 1
                                        console.log(y); // expected output: 107

                                        Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

                                        val pi = 3.14 // defines constant
                                        var randValue = 55; // defines variable

                                        var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

                                        R Offline
                                        R Offline
                                        Rick York
                                        wrote on last edited by
                                        #19

                                        The first thing that popped into my head was a line from the movie, "Bull Durham" when Nuke's father says, "let's say a prayer" and Susan Sarandon's character says, "oh, let's not."

                                        "They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"

                                        1 Reply Last reply
                                        0
                                        • R raddevus

                                          If you do native iOS (Swift) and native Android (Kotlin now) and web dev (JavaScript), you will find that Swift, Kotlin and JavaScript will have you going crazy in their choice of usage of : let, var, and val They use similar keywords all in different ways. Swift

                                          let pi = 3.14 // defines constant
                                          var randValue = 55; // defines variable

                                          Of course, let does something different in JavaScript. Of course... :sigh: JavaScript

                                          let x = 1; // outer scope
                                          var y = 7; // (global scope)

                                          if (x === 1) {
                                          let x = 2; // DIFFERENT x (local scope)
                                          var y = 107; // SAME Y (global scope)

                                          console.log(x); // expected output: 2
                                          console.log(y); // expected output : 107
                                          }
                                          console.log(x) // expected output: 1
                                          console.log(y); // expected output: 107

                                          Kotlin Note: CP doesn't have a choice for Kotlin yet, so val keyword isn't blue.

                                          val pi = 3.14 // defines constant
                                          var randValue = 55; // defines variable

                                          var is used by all three. let is used by Swift and JavaScript differently. val is only used by Kotlin. Language Design Ideas We know everyone steals design ideas from each other, so why didn't the designers of these languages steal from each other and make let and var mean the same darn things?!? X|

                                          M Offline
                                          M Offline
                                          Maximilien
                                          wrote on last edited by
                                          #20

                                          [obligatory XKCD](https://xkcd.com/927/)

                                          I'd rather be phishing!

                                          R 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups