| allbery_b | except that csh and derivatives are extensions of the v6 Unix Mashey shell |
| SamB | because I'm pretty sure ken had a shell |
| Philippa | what did BCPL and B use? |
| syntaxfree | you can't have a storage-based Eq instance for functions unless you have some reflexivity, which in turn requires a dynamic language. True or false? |
| SamB | even way back in the days before the directories formed a tree! when they were a directed graph |
| allbery_b | yes, but they did a new shell for each release, more or less |
| monochrom | reflexivity? reflection? |
| SamB | before fork(2), even! |
| allbery_b | thus Bourne's v7 shell was not very similar to Mashey's v6 shell |
| monochrom | storage-based Eq = look at addresses? |
| syntaxfree | SamB: how do directories form a directed graph? |
| ski | (the only irritating thing is that we don't use '=' for "comparision" equality, as well .. but Prolog and Mercury does that) |
| syntaxfree | monochrom: yep. |
| action | allbery_b is trying to remember how BCPL worked |
| allbery_b | is trying to remember how BCPL worked |
| SamB | syntaxfree: well, you neglect to have a hierarchical structure |
| syntaxfree | oh. |
| monochrom | OK. No need for dynamic. Just need some exposure of the current addresses. |
| syntaxfree | that's ... cool. |
| SamB | and just have the directory links in each directory point wherever you like |
| syntaxfree | monochrom: can Haskell ever have that? |
| sorear | monochrom: doesn't java "fix" the problem by not allowing = as a operator, only at top level? syntaxfree: sure, lok at GHC.Prim.reallyUnsafePtrEq# |
| syntaxfree | SamB: wow. But doesn't ln -s achieve that? |
| sorear | that will work at function types |
| allbery_b | I think = was used for assignment and == for equality --- but = wasn't used in top level declarations |
| SamB | syntaxfree: that is only symlinks |
| sorear | syntaxfree: symbolic links are just references, we're talking hard links |
| SamB | I think you had to make your own .. in those days |
| monochrom | Note: during evaluation of "f==f", first load address of f, then --- GC kicks in! moves f around! --- load address of f second time, hmm the two are different, unequal! Java sidesteps this by probably another level of indirection. |
| sorear | SamB: were files GC'd, or did the admin have to periodically reap them by hand? |
| allbery_b | yeh, in early Unix there was no requirement that directories link together in a sane way. this made filesystem validation rather difficult, though, so it was restricted to a DAG |
| SamB | sorear: I have no idea I'm not that much older than you, you know ;-P |
| sorear | monochrom: no, the problem doesn't exist in Haskell or Java |
| monochrom | Really! |
| sorear | monochrom: since the gc fixes addresses when it moves stuff |
| allbery_b | in v7 unix and earlier, there was no mkdir system call. |