# Kind evaluation in HLS

**URL:** <https://discourse.haskell.org/t/kind-evaluation-in-hls/14582>\
**Category:** Learn\
**Created:** [August 18, 2026, 8:29pm UTC](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582 "2026-08-18T20:29:11Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![reuben](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/reuben/32/4733_2.png) [@reuben](https://discourse.haskell.org/u/reuben)\
**Post date:** [August 18, 2026, 8:29pm UTC](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582/1 "2026-08-18T20:29:11Z")

</div>

I am curious if there’s a way to see the evaluation of a type family in the Haskell Language Server. For example, I have some type (details not important, just included for the sake of a concrete example)

```haskell
type ThreeHalfLeft =
  Tensor SU2 (Tensor SU2 SpinHalf SpinHalf) SpinHalf

```

which I can evaluate in ghci by doing:

```bash
ghci> :k! ThreeHalfLeft
ThreeHalfLeft :: [(Natural, Natural)]
= ['(1, 2), '(3, 1)]

```

This is great, but it would be really helpful if I could mouse-over the type in VSCode and directly see `['(1, 2), '(3, 1)]`. Is that possible?

Btw, this is what I actually see when I mouse over.

 ![Screenshot 2026-08-18 at 4.33.22 pm](https://us1.discourse-cdn.com/flex002/uploads/haskell/original/2X/3/3018b2e88ab446490ef10676407c45fb40cbe57c.png)

---

<div class="post-metadata">

**Author:** ![jaror](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/jaror/32/3271_2.png) [@jaror](https://discourse.haskell.org/u/jaror)\
**Post date:** [August 18, 2026, 9:24pm UTC](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582/2 "2026-08-18T21:24:09Z")

</div>

I was thinking the eval plugin might be able to do it, but this does not work:

```haskell
type Not :: Bool -> Bool
type family Not x where
  Not True = False
  Not False = True

-- >>> :k! Not True
-- unknown command 'k!'

```

I think extending the eval plugin to support this would be the easiest way to implement this feature.

Edit: as Andre notes below, it does work if you spell it out:

```haskell
-- >>> :kind! Not True
-- Not True :: Bool
-- = 'False

```

---

<div class="post-metadata">

**Author:** ![andremarianiello](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/andremarianiello/32/4870_2.png) [@andremarianiello](https://discourse.haskell.org/u/andremarianiello)\
**Post date:** [August 18, 2026, 10:12pm UTC](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582/3 "2026-08-18T22:12:39Z")

</div>

The long form `:kind!` should work

---

<div class="post-metadata">

**Author:** ![reuben](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/reuben/32/4733_2.png) [@reuben](https://discourse.haskell.org/u/reuben)\
**Post date:** [August 18, 2026, 10:20pm UTC](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582/4 "2026-08-18T22:20:04Z")

</div>

Thanks both! This does indeed work, which is really cool!

That said, I think the mouse-over would be a really nice feature - instead of having to type out a comment and click evaluate, I could just hover over my type and just see what it reduces to. In general I find that mouse-over makes for a much more impressive demo of Haskell’s type inference than having to enter ghci.

At any rate, case closed.
