As Hot Licks said in a comment, and Peter Shor said in his answer, the pronunciation of a vowel may be altered by the surrounding sounds. But not all phonetically distinguishable vowel sounds are considered to be distinct "phonemes" of a language. When the difference in pronunciation is predictable from the context, a pair of vowel phones may be considered to be "conditioned allophones" of a single vowel phoneme, and an English dictionary will write them with the same symbol, even though they don't sound exactly the same.
Many English vowels have some kind of allophony that is conditioned by a following "dark l" sound [ɫ]. But the phonetically distinct vowel sounds used before "dark l" are not considered to be phonemically distinct in most accents. (In some accents, mergers may occur before dark l, which suggests that there is a phonemic change in these accents. For example, some American English speakers may pronounce "hulk" the same as a hypothetical word "hoolk" /hʊlk/ or "hawlk" /hɔlk/.)
Other examples of vowel allophony that is conditioned by a following "dark l" [ɫ]
This isn't just something that's applicable to /ʌ/. For example, my /u/ is central [ʉ] or even front [y] when it's not before [ɫ], but back [u] before [ɫ]. (There is a blog post by the linguist Geoff Lindsey that talks about the existence of this kind of allophony in British English: "GOOSE backing"). To a lesser extent, my /ʊ/ is also backer before [ɫ] than in other contexts. Likewise, the front vowel phonemes /ɛ/, /æ/ and /ɪ/ are backed for me before [ɫ].
My /o/ ("goat") seems to be somewhat backer before [ɫ] than in other contexts, but to me, the most noticeable difference is in the trajectory of the vowel—in most contexts, it sounds like a closing diphthong that I would transcribe as [oʊ̯], but before [ɫ], it sounds like an opening diphthong that I would transcribe as [oə̯]. There is a similar pattern of allophony for me for /e/ and /i/—before [ɫ], the way I pronounce these sounds somewhat like [eə̯] and [iə̯] respectively.
So I don't use exactly the same phonetic vowels in fool and soon, pull and put, bell and bet, pal and pat, bill and bit, bowl and boat, fail and fate, heal and heat. But these pairs of words are still considered to have the same vowel "phonemes".
The distribution of the "dark l" [ɫ] allophone of /l/
The distribution of "dark l" follows different rules in different dialects.
As far as I know, in all dialects that make any use at all of a "dark l" sound, it is used for /l/ before word-final consonants, but Peter Shor's answer mentions some words where the "l" is between vowels and may be dark or light depending on the dialect. A prior question asks about this topic: L in the middle of a word: dark l or light l?
"An amphichronic approach to English syllabification" (Ricardo Bermúdez-Otero, 2013) describes some relevant data and analyses.
Mr Beelik’s paradox (Bermúdez-Otero 2011: 2038-9)
§29 Kahn’s prediction:
Kahn predicts that, unless the segmental context is different, a liquid will have the same
allophonic realization in word-final prevocalic position (e.g. seal in) and in foot-medial intervocalic position (e.g. Sealey)
§30 [...] The Midwestern US dialect described by Sproat and Fujimura (1993),
henceforth ‘the SP dialect’.
- Midwestern speakers ➩ canonical (Kahnian) pattern of /t/-flapping
- /l/-darkening data:
Beelik /l/ ambisyllabic by Coda Capture ➩ [l] i.e. clear l (coronal lead)
Beel equates /l/ ambisyllabic by Onset Capture ➩ [ɫ] i.e. dark l (coronal lag)
∴ In the SP dialect, Kahn’s syllabification works for /t/ but not for /l/
(already noticed by Sproat and Fujimura 1993: 308)
The cyclic solution to Mr Beelik’s paradox (Bermúdez-Otero 2007b: §18-§20, 2011: 2039)
§34 English syllabification is onset-maximal at all levels (see §5 above).
[Therefore, word-final consonants are in the coda at the word level, but they are detached from the coda and
resyllabified into the onset at the phrase level when followed by a vowel-initial word.]
§46 The dialectal signature of rule generalization:
In the SP dialect, stop lenition applies in weak positions in the foot, [Σ …V́…__…],
whereas /l/-darkening is still confined to weak positions in the syllable, __ σ]
However, there do exist other English dialects where /l/-darkening is more advanced, having become a foot-based process:
e.g. ye[ɫ]ow, vi[ɫ]age.
For American English, see e.g. Olive et al. (1993: 366), Hayes (2000: 95-96);
for British English, see Carter and Local (2003, 2007).
Apparently, Peter Shor's dialect has the same rule as the "SP dialect" that Bermúdez-Otero mentions, while my dialect has the "foot-based" rule.
There is also a blog post by John Wells that describes a similar phenomenon in some accents of British English: "newly minimal" (2012).
The realization of vowel allophones, as well as the existence of vowel mergers, varies between accents
It's certainly not the case that all American English speakers merge /ʌ/ with /ʊ/ (the vowel sound of "book") before [ɫ], so I wouldn't agree with the idea that it's "wrong" to pronounce all of fun, hunt, luck, hulk and bulk with a vowel phone somewhere around [ʌ].