### `Dynamic` doesn't work the way you think it does. See [this answer](https://stackoverflow.com/a/1581155/618728) for a full explanation. In short, `Dynamic` doesn't do anything until it is actually displayed on screen. Therefore, you are essentially doing this (note the String): MapThread[f, {"Dynamic[ls]", {10, 20, 30}}] As acl already showed, you can wrap the entire expression in `Dynamic` so that it does not attempt to evaluate the failing condition shown above.