元组声明进入无限循环

San*_*aus 2 haskell tuples infinite-loop

在Prelude中尝试这个

Prelude> (i, j) = (3, 4)
Prelude> (i, j) = (j, i)
Prelude> i
Run Code Online (Sandbox Code Playgroud)

我期待4,但我得到一个无限循环

为什么?

如何以简短的方式做到这一点?

Ale*_*lec 8

如果你定义

ghci> factorial n = if n == 0 then 1 else n * (factorial (n - 1))
Run Code Online (Sandbox Code Playgroud)

你希望factorialRHS factorial上的使用与LHS上的相同,对吧?

以同样的方式,以下定义ij以其自身的方式:

ghci> (i,j) = (j,i)
Run Code Online (Sandbox Code Playgroud)