I agree that izstva say that they are different. But has a value type Set = Int => Boolean. In the next steps in the console after scala "type Set = Int => Boolean" error disappears.
scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) ) = scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) [Int]) = scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) Boolean scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) ) = scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) ) = s scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) ) scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) ( scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2) ) scala> def func(s:Set) = 1 <console>:10: error: type Set takes type parameters def func(s:Set) = 1 ^ scala> def func(s:Set[Int]) = 1 func: (s: Set[Int])Int <---- specify the type in the set scala> type Set = Int => Boolean defined type alias Set scala> def func(s:Set) = 1 <---- no error func: (s: Set)Int scala> def getSet(s:Set) = s getSet: (s: Set)Set scala> getSet(Set(1,2)) res0: Set = Set(1, 2) scala> Set(1,2) res1: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val t=Set(1,2) t: scala.collection.immutable.Set[Int] = Set(1, 2)