একটি অবস্থা মানাড প্রোগ্রামারকে যে কোন প্রকারের কম্পপুগণনার সাথে অবস্থা সম্পর্কিত তথ্য জুড়ে দেয়ার ভূমিকা পালন করে। যদি কোন মানের টাইপ প্রদান করা হয়, তবে অবস্থা মানাডে অনুরূপ টাইপ হল একটি ফাংশন যা একটি অবস্থাকে গ্রহণ করে এবং একটি রিটার্ন মান (যার টাইপ t) সহকারে একটি নতুন অবস্থা (যার টাইপ s) প্রদান করে। এটি পারিপার্শ্বিক মানাডের অনুরূপ, পার্থক্য হল, এটি একটি নতুন অবস্থা ফেরত দেয় এবং "পরিবর্তনযোগ্য" পরিবেশ মডেল করার অনুমোদন দেয়।
type State s t = s -> (t, s)
উল্লেখ্য যে, এই মানাড একটি টাইপ প্যারামিটার গ্রহণ করে, যা হল অবস্থা সম্পর্কিত তথ্যের টাইপ। মানাডিয় কার্যাদি এভাবে সংজ্ঞায়িত করা যায়:
-- "return" produces the given value without changing the state.
return x = \s -> (x, s)
-- "bind" modifies m so that it applies f to its result.
m »= f = \r -> let (x, s) = m r in (f x) s
অবস্থা সম্পর্কিত গুরুত্বপূর্ণ অপারেশন বা ক্রিয়াপ্রণালীর মাঝে রয়েছে:

get = \s -> (s, s) -- Examine the state at this point in the computation.
put s = \_ -> ((), s) -- Replace the state.
modify f = \s -> ((), f s) -- Update the state
প্রদেয় প্রাথমিক অবস্থার ওপর অবস্থা মানাডের প্রয়োগের জন্য যে অপারেশন রয়েছে:

runState :: State s a -> s -> (a, s)
runState t s = t s
অবস্থা মানাডে do-blocks হল ক্রিয়াপ্রণালীর অনুক্রম যা অবস্থা সম্পর্কিত তথ্য হালনাগাদ এবং পরীক্ষণ করতে সক্ষম।

অনানুষ্ঠানিকভাবে, টাইপ বিশিষ্ট একটি অবস্থা মানাড formula_1টাইপ বিশিষ্ট একটি ফাংশনের ওপর রিটার্ন মান টাইপের ম্যাপ করে, যেখানে মানাডের অধীন অবস্থা। এবং ফাংশন:

ক্যাটাগরি থিওরির দৃষ্টিকোণ থেকে দেখলে, একটি অবস্থা মানাড উৎপাদ ফাঙ্কটর এবং এক্সপোনেনশিয়াল ফাঙ্কটরের সন্ধি হতে আহরণ করা হয়, যেটি সংজ্ঞা অনুসারে যে কোন তে অবস্থিত .

অবস্থা (স্টেট) মানাড
কোমানাড
মুক্ত মানাড
আরো দেখুন